#include <sfp.h>
Inheritance diagram for TAO_SFP_Producer_Object:


Public Member Functions | |
| TAO_SFP_Producer_Object (TAO_AV_Callback *callback, TAO_AV_Transport *transport, const char *flow_options) | |
| virtual int | handle_input (void) |
Protected Attributes | |
| CORBA::ULong | credit_sequence_num_ |
|
||||||||||||||||
|
Definition at line 1162 of file sfp.cpp. References ACE_OS::atoi().
01165 :TAO_SFP_Object (callback,transport), 01166 credit_sequence_num_ (0) 01167 01168 { 01169 TAO_Tokenizer flow_string (sfp_options,':'); 01170 if (flow_string [2] != 0) 01171 { 01172 TAO_Tokenizer options (flow_string[2],'='); 01173 if (options [1] != 0) 01174 this->max_credit_ = ACE_OS::atoi (options[1]); 01175 } 01176 } |
|
|
Implements TAO_SFP_Object. Definition at line 1179 of file sfp.cpp. References flowProtocol::credit::cred_num, credit_sequence_num_, TAO_SFP_Base::peek_message_type(), ACE_Message_Block::rd_ptr(), TAO_SFP_Base::read_credit_message(), TAO_AV_Transport::recv(), and ACE_Message_Block::size().
01180 {
01181 // A producer can only receive credit messages.
01182 int result;
01183 flowProtocol::MsgType msg_type = flowProtocol::Start_Msg;
01184 result = TAO_SFP_Base::peek_message_type (this->transport_,
01185 msg_type);
01186 if (result < 0)
01187 return result;
01188 switch (msg_type)
01189 {
01190 case flowProtocol::Credit_Msg:
01191 {
01192 flowProtocol::credit credit;
01193 result = TAO_SFP_Base::read_credit_message (this->transport_,
01194 credit,
01195 this->state_.cdr);
01196 if (result < 0)
01197 return result;
01198 if (!this->credit_sequence_num_)
01199 this->credit_sequence_num_ = credit.cred_num;
01200 else
01201 {
01202 // check that the sequence number is above the last sequence number
01203 // else its a duplicate credit message so we can ignore it.
01204 if (credit.cred_num <= this->credit_sequence_num_)
01205 return 0;
01206 else // Update our credit now.
01207 this->current_credit_ = this->max_credit_;
01208 }
01209 }
01210 break;
01211 default:
01212 {
01213 ACE_Message_Block mb (2*this->transport_->mtu ());
01214
01215 // Ignore the rest of the message by just reading.
01216 this->transport_->recv (mb.rd_ptr (),
01217 mb.size ());
01218 break;
01219 }
01220 }
01221 return 0;
01222 }
|
|
|
Definition at line 266 of file sfp.h. Referenced by handle_input(). |
1.3.6