#include <AVStreams_i.h>
Collaboration diagram for TAO_FlowConnection:
Public Member Functions | |
TAO_FlowConnection (void) | |
default constructor. | |
virtual void | stop (void) |
stop this flow. | |
virtual void | start (void) |
start this flow. | |
virtual void | destroy (void) |
destroy this flow. | |
virtual CORBA::Boolean | modify_QoS (AVStreams::QoS &new_qos) |
modify the QoS for this flow. | |
virtual CORBA::Boolean | use_flow_protocol (const char *fp_name, const CORBA::Any &fp_settings) |
use the specified flow protocol for this flow. | |
virtual void | push_event (const AVStreams::streamEvent &the_event) |
pushes an event , to be handled by the application. | |
virtual CORBA::Boolean | connect_devs (AVStreams::FDev_ptr a_party, AVStreams::FDev_ptr b_party, AVStreams::QoS &the_qos) |
connect 2 Flow Devices. | |
virtual CORBA::Boolean | connect (AVStreams::FlowProducer_ptr flow_producer, AVStreams::FlowConsumer_ptr flow_consumer, AVStreams::QoS &the_qos) |
Connect a flow producer and consumer under this flow connection. | |
virtual CORBA::Boolean | disconnect (void) |
disconnect this flow connection. | |
virtual CORBA::Boolean | add_producer (AVStreams::FlowProducer_ptr flow_producer, AVStreams::QoS &the_qos) |
adds the producer to this flow connection. | |
virtual CORBA::Boolean | add_consumer (AVStreams::FlowConsumer_ptr flow_consumer, AVStreams::QoS &the_qos) |
adds a consumer to this flow connection. | |
virtual CORBA::Boolean | drop (AVStreams::FlowEndPoint_ptr target) |
drops a flow endpoint from the flow. | |
int | set_mcast_addr (ACE_CString addr, u_short port) |
void | set_protocol (const char *protocol) |
Protected Types | |
typedef ACE_Unbounded_Set< AVStreams::FlowProducer_ptr > | FlowProducer_Set |
typedef ACE_Unbounded_Set_Iterator< AVStreams::FlowProducer_ptr > | FlowProducer_SetItor |
typedef ACE_Unbounded_Set< AVStreams::FlowConsumer_ptr > | FlowConsumer_Set |
typedef ACE_Unbounded_Set_Iterator< AVStreams::FlowConsumer_ptr > | FlowConsumer_SetItor |
Protected Attributes | |
FlowProducer_Set | flow_producer_set_ |
The multicast address returned by the producer. | |
FlowConsumer_Set | flow_consumer_set_ |
CORBA::String_var | fp_name_ |
CORBA::Any | fp_settings_ |
CORBA::String_var | producer_address_ |
int | ip_multicast_ |
IP Multicasting is used. | |
TAO_MCastConfigIf * | mcastconfigif_i_ |
AVStreams::MCastConfigIf_var | mcastconfigif_ |
u_short | mcast_port_ |
ACE_CString | mcast_addr_ |
CORBA::String_var | protocol_ |
Definition at line 801 of file AVStreams_i.h.
typedef ACE_Unbounded_Set<AVStreams::FlowConsumer_ptr> TAO_FlowConnection::FlowConsumer_Set [protected] |
Definition at line 859 of file AVStreams_i.h.
typedef ACE_Unbounded_Set_Iterator<AVStreams::FlowConsumer_ptr> TAO_FlowConnection::FlowConsumer_SetItor [protected] |
Definition at line 860 of file AVStreams_i.h.
typedef ACE_Unbounded_Set<AVStreams::FlowProducer_ptr> TAO_FlowConnection::FlowProducer_Set [protected] |
Definition at line 857 of file AVStreams_i.h.
typedef ACE_Unbounded_Set_Iterator<AVStreams::FlowProducer_ptr> TAO_FlowConnection::FlowProducer_SetItor [protected] |
Definition at line 858 of file AVStreams_i.h.
TAO_FlowConnection::TAO_FlowConnection | ( | void | ) |
default constructor.
Definition at line 3351 of file AVStreams_i.cpp.
03352 :fp_name_ (CORBA::string_dup ("")), 03353 ip_multicast_ (0) 03354 { 03355 }
CORBA::Boolean TAO_FlowConnection::add_consumer | ( | AVStreams::FlowConsumer_ptr | flow_consumer, | |
AVStreams::QoS & | the_qos | |||
) | [virtual] |
adds a consumer to this flow connection.
Definition at line 3722 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_ERROR_RETURN, ACE_Unbounded_Set_Ex< T, C >::begin(), ACE_Unbounded_Set_Ex< T, C >::end(), flow_consumer_set_, flow_producer_set_, fp_name_, ACE_Unbounded_Set_Ex< T, C >::insert(), CORBA::is_nil(), LM_ERROR, LM_WARNING, mcastconfigif_, and CORBA::string_dup().
03724 { 03725 try 03726 { 03727 AVStreams::FlowConsumer_ptr flow_consumer = 03728 AVStreams::FlowConsumer::_duplicate (consumer); 03729 FlowConsumer_SetItor begin = this->flow_consumer_set_.begin (); 03730 FlowConsumer_SetItor end = this->flow_consumer_set_.end (); 03731 for (; begin != end; ++begin) 03732 { 03733 if ((*begin)->_is_equivalent (consumer)) 03734 // Consumer exists in the set, a duplicate. 03735 ACE_ERROR_RETURN ((LM_WARNING, "TAO_FlowConnection::add_Consumer: Consumer already exists\n"), 1); 03736 } 03737 int result = this->flow_consumer_set_.insert (flow_consumer); 03738 if (result == 1) 03739 { 03740 // consumer exists in the set, a duplicate. 03741 ACE_ERROR_RETURN ((LM_WARNING, "TAO_FlowConnection::add_consumer: consumer already exists\n"), 1); 03742 } 03743 03744 FlowProducer_SetItor producer_begin = this->flow_producer_set_.begin (); 03745 // @@Lets take that the first entry as the only producer. We're 03746 // not sure if we can have multiple flow producers in a 03747 // flowconnection. We can have multiple producer in the MtM binding, 03748 // in which case the first producer that gets added is the leader. 03749 AVStreams::FlowProducer_ptr flow_producer = (*producer_begin); 03750 03751 AVStreams::protocolSpec protocols (1); 03752 protocols.length (1); 03753 protocols [0] = CORBA::string_dup (this->producer_address_.in ()); 03754 03755 if (!this->ip_multicast_) 03756 { 03757 flow_consumer->set_protocol_restriction (protocols); 03758 char * address = 03759 flow_consumer->go_to_listen (the_qos, 03760 1, 03761 flow_producer, 03762 this->fp_name_.inout ()); 03763 CORBA::Boolean is_met; 03764 flow_producer->connect_mcast (the_qos, 03765 is_met, 03766 address, 03767 this->fp_name_.inout ()); 03768 } 03769 else 03770 { 03771 // The spec says go_to_listen is called with the multicast 03772 // address returned from the connect_mcast call called 03773 // during add_producer. But go_to_listen doesn't have a 03774 // address parameter. I guess it should be connect_to_peer. 03775 // IP Multicasting. 03776 flow_consumer->connect_to_peer (the_qos, 03777 this->producer_address_.in (), 03778 this->fp_name_.inout ()); 03779 03780 // char * address = 03781 // flow_consumer->go_to_listen (the_qos, 03782 // 1, 03783 // flow_producer, 03784 // this->fp_name_.inout () 03785 //); 03786 03787 } 03788 if (CORBA::is_nil (this->mcastconfigif_.in ())) 03789 ACE_ERROR_RETURN ((LM_ERROR, "TAO_FlowConnection::add_consumer: first add a producer and then a consumer\n"), 0); 03790 // @@ Is this the right place to do set_peer? 03791 AVStreams::flowSpec flow_spec; 03792 AVStreams::streamQoS stream_qos (1); 03793 stream_qos.length (1); 03794 stream_qos [0] = the_qos; 03795 this->mcastconfigif_->set_peer (flow_consumer, 03796 stream_qos, 03797 flow_spec); 03798 } 03799 catch (const CORBA::Exception& ex) 03800 { 03801 ex._tao_print_exception ( 03802 "TAO_FlowConnection::add_consumer"); 03803 return 0; 03804 } 03805 return 1; 03806 }
CORBA::Boolean TAO_FlowConnection::add_producer | ( | AVStreams::FlowProducer_ptr | flow_producer, | |
AVStreams::QoS & | the_qos | |||
) | [virtual] |
adds the producer to this flow connection.
Definition at line 3633 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_ERROR_RETURN, ACE_NEW_RETURN, ACE_INET_Addr::addr_to_string(), TAO_FlowSpec_Entry::address(), ACE_Unbounded_Set_Ex< T, C >::begin(), ACE_Unbounded_Set_Ex< T, C >::end(), flow_producer_set_, ACE_Unbounded_Set_Ex< T, C >::insert(), ip_multicast_, CORBA::is_nil(), LM_WARNING, mcastconfigif_, mcastconfigif_i_, ACE_OS::sprintf(), and ACE_OS::strcpy().
03635 { 03636 try 03637 { 03638 AVStreams::FlowProducer_ptr flow_producer = 03639 AVStreams::FlowProducer::_duplicate (producer); 03640 // @@Naga:Sometimes the same producer could be added with a different object reference. 03641 // There's no portable way of comparing obj refs. but we have to do this till we find 03642 // a permanent solution.For eg. 2 different flowproducers for the same flow in a 03643 // Multipoint to Multipoint binding will have the same flowname and hence cannot be 03644 // used for resolving ties. 03645 FlowProducer_SetItor begin = this->flow_producer_set_.begin (); 03646 FlowProducer_SetItor end = this->flow_producer_set_.end (); 03647 for (; begin != end; ++begin) 03648 { 03649 if ((*begin)->_is_equivalent (producer)) 03650 // producer exists in the set, a duplicate. 03651 ACE_ERROR_RETURN ((LM_WARNING, "TAO_FlowConnection::add_producer: producer already exists\n"), 1); 03652 } 03653 // We need to check the return value of the insert into the flow producer 03654 // set, since multiconnect could be called many times which will lead to 03655 // a call to add_producer every time a sink is added. If the producer is already 03656 // present in our list we just return immediately. 03657 int result = this->flow_producer_set_.insert (flow_producer); 03658 if (result == 1) 03659 { 03660 // producer exists in the set, a duplicate. 03661 ACE_ERROR_RETURN ((LM_WARNING, "TAO_FlowConnection::add_producer: producer already exists\n"), 1); 03662 } 03663 CORBA::Boolean met_qos; 03664 char mcast_address[BUFSIZ]; 03665 if (this->producer_address_.in () == 0) 03666 { 03667 ACE_INET_Addr mcast_addr; 03668 mcast_addr.set (this->mcast_port_, 03669 this->mcast_addr_.c_str () 03670 ); 03671 03672 char buf [BUFSIZ]; 03673 mcast_addr.addr_to_string (buf, BUFSIZ); 03674 ACE_OS::sprintf (mcast_address, "%s=%s", this->protocol_.in (), buf); 03675 } 03676 else 03677 { 03678 ACE_OS::strcpy (mcast_address, this->producer_address_.in ()); 03679 } 03680 char *address = flow_producer->connect_mcast (the_qos, 03681 met_qos, 03682 mcast_address, 03683 this->fp_name_.in ()); 03684 03685 if (this->producer_address_.in () == 0) 03686 { 03687 TAO_Forward_FlowSpec_Entry entry ("", "", "", "", address); 03688 if (entry.address () != 0) 03689 { 03690 // Internet multicasting is in use. 03691 this->producer_address_ = address; 03692 } 03693 else 03694 { 03695 // ATM Multicasting is in use. 03696 this->ip_multicast_ = 0; 03697 } 03698 } 03699 // set the multicast peer. 03700 if (CORBA::is_nil (this->mcastconfigif_.in ())) 03701 { 03702 ACE_NEW_RETURN (this->mcastconfigif_i_, 03703 TAO_MCastConfigIf, 03704 0); 03705 this->mcastconfigif_ = this->mcastconfigif_i_->_this (); 03706 } 03707 AVStreams::FlowConnection_var flowconnection = this->_this (); 03708 flow_producer->set_Mcast_peer (flowconnection.in (), 03709 this->mcastconfigif_.in (), 03710 the_qos); 03711 } 03712 catch (const CORBA::Exception& ex) 03713 { 03714 ex._tao_print_exception ( 03715 "TAO_FlowConnection::add_producer"); 03716 return 0; 03717 } 03718 return 1; 03719 }
CORBA::Boolean TAO_FlowConnection::connect | ( | AVStreams::FlowProducer_ptr | flow_producer, | |
AVStreams::FlowConsumer_ptr | flow_consumer, | |||
AVStreams::QoS & | the_qos | |||
) | [virtual] |
Connect a flow producer and consumer under this flow connection.
Definition at line 3566 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_DEBUG, flow_consumer_set_, flow_producer_set_, ACE_Unbounded_Set_Ex< T, C >::insert(), LM_DEBUG, ACE_OS::strcmp(), and TAO_debug_level.
Referenced by connect_devs().
03569 { 03570 try 03571 { 03572 03573 AVStreams::FlowProducer_ptr flow_producer = 03574 AVStreams::FlowProducer::_duplicate (producer); 03575 AVStreams::FlowConsumer_ptr flow_consumer = 03576 AVStreams::FlowConsumer::_duplicate (consumer); 03577 03578 this->flow_producer_set_.insert (flow_producer); 03579 this->flow_consumer_set_.insert (flow_consumer); 03580 AVStreams::FlowConnection_var flowconnection = 03581 this->_this (); 03582 03583 flow_producer->set_peer (flowconnection.in (), 03584 flow_consumer, 03585 the_qos); 03586 03587 flow_consumer->set_peer (flowconnection.in (), 03588 flow_producer, 03589 the_qos); 03590 03591 char *consumer_address = 03592 flow_consumer->go_to_listen (the_qos, 03593 0, // false for is_mcast 03594 flow_producer, 03595 this->fp_name_.inout ()); 03596 03597 if (ACE_OS::strcmp (consumer_address, "") == 0) 03598 { 03599 // Consumer is not willing to listen, so try the producer. 03600 consumer_address = flow_producer->go_to_listen (the_qos, 03601 0, // false for is_mcast 03602 flow_consumer, 03603 this->fp_name_.inout ()); 03604 flow_consumer->connect_to_peer (the_qos, 03605 consumer_address, 03606 this->fp_name_.inout ()); 03607 // @@ Naga: We have to find means to set the reverse channel for the producer. 03608 // Its broken in the point-to_point case for UDP. 03609 } 03610 else 03611 { 03612 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "TAO_FlowConnection::connect_to_peer addres: %s", consumer_address)); 03613 flow_producer->connect_to_peer (the_qos, 03614 consumer_address, 03615 this->fp_name_.inout ()); 03616 } 03617 } 03618 catch (const CORBA::Exception& ex) 03619 { 03620 ex._tao_print_exception ("TAO_FlowConnection::connect"); 03621 } 03622 return 1; 03623 }
CORBA::Boolean TAO_FlowConnection::connect_devs | ( | AVStreams::FDev_ptr | a_party, | |
AVStreams::FDev_ptr | b_party, | |||
AVStreams::QoS & | the_qos | |||
) | [virtual] |
connect 2 Flow Devices.
Definition at line 3531 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), and connect().
03534 { 03535 CORBA::Boolean result = 0; 03536 try 03537 { 03538 AVStreams::FlowConnection_var flowconnection = this->_this (); 03539 CORBA::Boolean met_qos; 03540 CORBA::String_var named_fdev ((const char *)""); 03541 AVStreams::FlowProducer_var producer = 03542 a_party->create_producer (flowconnection.in (), 03543 flow_qos, 03544 met_qos, 03545 named_fdev.inout ()); 03546 AVStreams::FlowConsumer_var consumer = 03547 b_party->create_consumer (flowconnection.in (), 03548 flow_qos, 03549 met_qos, 03550 named_fdev.inout ()); 03551 result = this->connect (producer.in (), 03552 consumer.in (), 03553 flow_qos); 03554 } 03555 catch (const CORBA::Exception& ex) 03556 { 03557 ex._tao_print_exception ( 03558 "TAO_FlowConnection::connect_devs"); 03559 return 0; 03560 } 03561 return result; 03562 }
void TAO_FlowConnection::destroy | ( | void | ) | [virtual] |
destroy this flow.
Definition at line 3457 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_DEBUG, ACE_Unbounded_Set_Ex< T, C >::begin(), TAO_AV_Core::deactivate_servant(), flow_consumer_set_, flow_producer_set_, LM_DEBUG, and TAO_debug_level.
03458 { 03459 try 03460 { 03461 FlowProducer_SetItor producer_begin = this->flow_producer_set_.begin 03462 (); 03463 for (FlowProducer_SetItor producer_end = 03464 this->flow_producer_set_.end (); 03465 producer_begin != producer_end; ++producer_begin) 03466 { 03467 (*producer_begin)->destroy (); 03468 } 03469 FlowConsumer_SetItor consumer_begin = this->flow_consumer_set_.begin 03470 (); 03471 for (FlowConsumer_SetItor consumer_end = 03472 this->flow_consumer_set_.end (); 03473 consumer_begin != consumer_end; ++consumer_begin) 03474 { 03475 (*consumer_begin)->destroy (); 03476 } 03477 } 03478 catch (const CORBA::Exception& ex) 03479 { 03480 ex._tao_print_exception ("TAO_FlowConnection::destroy"); 03481 return; 03482 } 03483 int result = TAO_AV_Core::deactivate_servant (this); 03484 if (result < 0) 03485 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "TAO_FlowConnection::destroy failed\n")); 03486 }
CORBA::Boolean TAO_FlowConnection::disconnect | ( | void | ) | [virtual] |
CORBA::Boolean TAO_FlowConnection::drop | ( | AVStreams::FlowEndPoint_ptr | target | ) | [virtual] |
CORBA::Boolean TAO_FlowConnection::modify_QoS | ( | AVStreams::QoS & | new_qos | ) | [virtual] |
void TAO_FlowConnection::push_event | ( | const AVStreams::streamEvent & | the_event | ) | [virtual] |
pushes an event , to be handled by the application.
Definition at line 3525 of file AVStreams_i.cpp.
int TAO_FlowConnection::set_mcast_addr | ( | ACE_CString | addr, | |
u_short | port | |||
) |
Definition at line 3366 of file AVStreams_i.cpp.
References mcast_addr_, and mcast_port_.
Referenced by TAO_StreamEndPoint_A::multiconnect().
03367 { 03368 this->mcast_addr_ = mcast_addr; 03369 this->mcast_port_ = mcast_port; 03370 return 0; 03371 }
void TAO_FlowConnection::set_protocol | ( | const char * | protocol | ) |
Definition at line 3374 of file AVStreams_i.cpp.
References protocol_.
Referenced by TAO_StreamEndPoint_A::multiconnect().
03375 { 03376 this->protocol_ = protocol; 03377 }
void TAO_FlowConnection::start | ( | void | ) | [virtual] |
start this flow.
Definition at line 3419 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_Unbounded_Set_Ex< T, C >::begin(), flow_consumer_set_, flow_producer_set_, and printf().
03420 { 03421 try 03422 { 03423 FlowConsumer_SetItor consumer_begin = this->flow_consumer_set_.begin 03424 (); 03425 for (FlowConsumer_SetItor consumer_end = 03426 this->flow_consumer_set_.end (); 03427 consumer_begin != consumer_end; ++consumer_begin) 03428 { 03429 (*consumer_begin)->start (); 03430 } 03431 FlowProducer_SetItor producer_begin = this->flow_producer_set_.begin 03432 (); 03433 for (FlowProducer_SetItor producer_end = 03434 this->flow_producer_set_.end (); 03435 producer_begin != producer_end; ++producer_begin) 03436 { 03437 (*producer_begin)->start (); 03438 } 03439 } 03440 catch(AVStreams::noSuchFlow& ex) 03441 { 03442 throw; //ACS mod 2007-08 03443 } 03444 catch (const CORBA::Exception& ex) 03445 { 03446 ex._tao_print_exception ("TAO_FlowConnection::start"); 03447 throw; //ACS mod 2007-08 03448 } 03449 catch(...) 03450 { 03451 printf ("TAO_FlowConnection::start - unknown exception\n"); 03452 } 03453 }
void TAO_FlowConnection::stop | ( | void | ) | [virtual] |
stop this flow.
Definition at line 3381 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_Unbounded_Set_Ex< T, C >::begin(), flow_consumer_set_, flow_producer_set_, and printf().
03382 { 03383 try 03384 { 03385 FlowProducer_SetItor producer_begin = this->flow_producer_set_.begin 03386 (); 03387 for (FlowProducer_SetItor producer_end = 03388 this->flow_producer_set_.end (); 03389 producer_begin != producer_end; ++producer_begin) 03390 { 03391 (*producer_begin)->stop (); 03392 } 03393 FlowConsumer_SetItor consumer_begin = this->flow_consumer_set_.begin 03394 (); 03395 for (FlowConsumer_SetItor consumer_end = 03396 this->flow_consumer_set_.end (); 03397 consumer_begin != consumer_end; ++consumer_begin) 03398 { 03399 (*consumer_begin)->stop (); 03400 } 03401 } 03402 catch(AVStreams::noSuchFlow& ex) 03403 { 03404 throw; //ACS mod 2007-08 03405 } 03406 catch (const CORBA::Exception& ex) 03407 { 03408 ex._tao_print_exception ("TAO_FlowConnection::stop"); 03409 throw; //ACS mod 2007-08 03410 } 03411 catch(...) 03412 { 03413 printf ("TAO_FlowConnection::stop - unknown exception\n"); 03414 } 03415 }
CORBA::Boolean TAO_FlowConnection::use_flow_protocol | ( | const char * | fp_name, | |
const CORBA::Any & | fp_settings | |||
) | [virtual] |
use the specified flow protocol for this flow.
Definition at line 3498 of file AVStreams_i.cpp.
References ACE_Unbounded_Set_Ex< T, C >::begin(), flow_consumer_set_, flow_producer_set_, fp_name_, and fp_settings_.
03500 { 03501 this->fp_name_ = fp_name; 03502 this->fp_settings_ = fp_settings; 03503 FlowProducer_SetItor producer_begin = this->flow_producer_set_.begin 03504 (); 03505 for (FlowProducer_SetItor producer_end = 03506 this->flow_producer_set_.end (); 03507 producer_begin != producer_end; ++producer_begin) 03508 { 03509 (*producer_begin)->use_flow_protocol 03510 (fp_name, fp_settings); 03511 } 03512 FlowConsumer_SetItor consumer_begin = this->flow_consumer_set_.begin 03513 (); 03514 for (FlowConsumer_SetItor consumer_end = 03515 this->flow_consumer_set_.end (); 03516 consumer_begin != consumer_end; ++consumer_begin) 03517 { 03518 (*consumer_begin)->use_flow_protocol 03519 (fp_name, fp_settings); 03520 } 03521 return 1; 03522 }
Definition at line 864 of file AVStreams_i.h.
Referenced by add_consumer(), connect(), destroy(), start(), stop(), and use_flow_protocol().
The multicast address returned by the producer.
Definition at line 863 of file AVStreams_i.h.
Referenced by add_consumer(), add_producer(), connect(), destroy(), start(), stop(), and use_flow_protocol().
CORBA::String_var TAO_FlowConnection::fp_name_ [protected] |
Definition at line 865 of file AVStreams_i.h.
Referenced by add_consumer(), and use_flow_protocol().
CORBA::Any TAO_FlowConnection::fp_settings_ [protected] |
int TAO_FlowConnection::ip_multicast_ [protected] |
IP Multicasting is used.
Definition at line 870 of file AVStreams_i.h.
Referenced by add_producer().
ACE_CString TAO_FlowConnection::mcast_addr_ [protected] |
u_short TAO_FlowConnection::mcast_port_ [protected] |
AVStreams::MCastConfigIf_var TAO_FlowConnection::mcastconfigif_ [protected] |
TAO_MCastConfigIf* TAO_FlowConnection::mcastconfigif_i_ [protected] |
Definition at line 867 of file AVStreams_i.h.
CORBA::String_var TAO_FlowConnection::protocol_ [protected] |