#include <AVStreams_i.h>
Inheritance diagram for TAO_Basic_StreamCtrl:
Public Member Functions | |
TAO_Basic_StreamCtrl (void) | |
Default Constructor. | |
virtual void | stop (const AVStreams::flowSpec &the_spec) |
virtual void | start (const AVStreams::flowSpec &the_spec) |
virtual void | destroy (const AVStreams::flowSpec &the_spec) |
virtual CORBA::Boolean | modify_QoS (AVStreams::streamQoS &new_qos, const AVStreams::flowSpec &the_spec) |
virtual void | push_event (const struct CosPropertyService::Property &the_event) |
virtual void | set_FPStatus (const AVStreams::flowSpec &the_spec, const char *fp_name, const CORBA::Any &fp_settings) |
Used to control the flow protocol parameters. | |
virtual CORBA::Object_ptr | get_flow_connection (const char *flow_name) |
virtual void | set_flow_connection (const char *flow_name, CORBA::Object_ptr flow_connection) |
Protected Types | |
typedef ACE_Hash_Map_Manager< ACE_CString, AVStreams::FlowConnection_var, ACE_Null_Mutex > | FlowConnection_Map |
Hash table for the flow names and its corresponding flowconnection object reference. | |
typedef ACE_Hash_Map_Iterator< ACE_CString, AVStreams::FlowConnection_var, ACE_Null_Mutex > | FlowConnection_Map_Iterator |
typedef ACE_Hash_Map_Entry< ACE_CString, AVStreams::FlowConnection_var > | FlowConnection_Map_Entry |
Protected Member Functions | |
virtual | ~TAO_Basic_StreamCtrl (void) |
Destructor. | |
Protected Attributes | |
AVStreams::VDev_var | vdev_a_ |
The Virtual Devices for this stream. | |
AVStreams::VDev_var | vdev_b_ |
AVStreams::StreamEndPoint_A_var | sep_a_ |
The Endpoints for this stream. | |
AVStreams::StreamEndPoint_B_var | sep_b_ |
FlowConnection_Map | flow_connection_map_ |
AVStreams::FlowConnection_seq | flowConnections_ |
u_int | flow_count_ |
sequence of flow names. | |
AVStreams::flowSpec | flows_ |
Definition at line 75 of file AVStreams_i.h.
typedef ACE_Hash_Map_Manager<ACE_CString,AVStreams::FlowConnection_var,ACE_Null_Mutex> TAO_Basic_StreamCtrl::FlowConnection_Map [protected] |
Hash table for the flow names and its corresponding flowconnection object reference.
Definition at line 137 of file AVStreams_i.h.
typedef ACE_Hash_Map_Entry<ACE_CString,AVStreams::FlowConnection_var> TAO_Basic_StreamCtrl::FlowConnection_Map_Entry [protected] |
Definition at line 139 of file AVStreams_i.h.
typedef ACE_Hash_Map_Iterator<ACE_CString,AVStreams::FlowConnection_var,ACE_Null_Mutex> TAO_Basic_StreamCtrl::FlowConnection_Map_Iterator [protected] |
Definition at line 138 of file AVStreams_i.h.
TAO_Basic_StreamCtrl::TAO_Basic_StreamCtrl | ( | void | ) |
Default Constructor.
Definition at line 70 of file AVStreams_i.cpp.
00071 :flow_count_ (0) 00072 { 00073 }
TAO_Basic_StreamCtrl::~TAO_Basic_StreamCtrl | ( | void | ) | [protected, virtual] |
void TAO_Basic_StreamCtrl::destroy | ( | const AVStreams::flowSpec & | the_spec | ) | [virtual] |
Tears down the stream. This will close the connection, and delete the streamendpoint and vdev associated with this stream Empty the_spec means apply operation to all flows
Reimplemented in TAO_StreamCtrl.
Definition at line 182 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_Hash_Map_Iterator_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::advance(), TAO_AV_Core::get_flowname(), ACE_Hash_Map_Entry< EXT_ID, INT_ID >::int_id_, and ACE_Hash_Map_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next().
Referenced by TAO_StreamCtrl::destroy().
00183 { 00184 try 00185 { 00186 // call stop on the flow connections. 00187 if (this->flow_connection_map_.current_size () > 0) 00188 { 00189 if (flow_spec.length () > 0) 00190 { 00191 for (u_int i=0;i<flow_spec.length ();i++) 00192 { 00193 char *flowname = TAO_AV_Core::get_flowname (flow_spec[i]); 00194 ACE_CString flow_name_key (flowname); 00195 FlowConnection_Map::ENTRY *flow_connection_entry = 0; 00196 if (this->flow_connection_map_.find (flow_name_key, flow_connection_entry) == 0) 00197 { 00198 flow_connection_entry->int_id_->destroy (); 00199 } 00200 } 00201 } 00202 else 00203 { 00204 // call destroy on all the flows. 00205 FlowConnection_Map_Iterator iterator (this->flow_connection_map_); 00206 FlowConnection_Map_Entry *entry = 0; 00207 for (;iterator.next (entry) != 0;iterator.advance ()) 00208 { 00209 entry->int_id_->destroy (); 00210 } 00211 } 00212 } 00213 } 00214 catch (const CORBA::Exception& ex) 00215 { 00216 ex._tao_print_exception ("TAO_Basic_StreamCtrl::destroy"); 00217 return; 00218 } 00219 }
CORBA::Object_ptr TAO_Basic_StreamCtrl::get_flow_connection | ( | const char * | flow_name | ) | [virtual] |
Not implemented in the light profile, will raise the notsupported exception
Definition at line 255 of file AVStreams_i.cpp.
References ACE_DEBUG, LM_DEBUG, and TAO_debug_level.
Referenced by TAO_StreamCtrl::bind().
00256 { 00257 ACE_CString flow_name_key (flow_name); 00258 AVStreams::FlowConnection_var flow_connection_entry; 00259 00260 if (this->flow_connection_map_.find (flow_name_key, flow_connection_entry) == 0){ 00261 return flow_connection_entry._retn(); 00262 } 00263 else{ 00264 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "(%N,%l) Cannot find flow: %s\n", flow_name )); 00265 throw AVStreams::noSuchFlow (); 00266 } 00267 }
CORBA::Boolean TAO_Basic_StreamCtrl::modify_QoS | ( | AVStreams::streamQoS & | new_qos, | |
const AVStreams::flowSpec & | the_spec | |||
) | [virtual] |
Changes the QoS associated with the stream Empty the_spec means apply operation to all flows
Reimplemented in TAO_StreamCtrl.
Definition at line 225 of file AVStreams_i.cpp.
void TAO_Basic_StreamCtrl::push_event | ( | const struct CosPropertyService::Property & | the_event | ) | [virtual] |
Used by StreamEndPoint and VDev to inform StreamCtrl of events. E.g., loss of flow, reestablishment of flow, etc..
Definition at line 234 of file AVStreams_i.cpp.
References ACE_DEBUG, LM_DEBUG, and TAO_debug_level.
00235 { 00236 if (TAO_debug_level > 0) 00237 ACE_DEBUG ((LM_DEBUG, "\n(%P|%t) Recieved event \"")); 00238 }
void TAO_Basic_StreamCtrl::set_flow_connection | ( | const char * | flow_name, | |
CORBA::Object_ptr | flow_connection | |||
) | [virtual] |
Not implemented in the light profile, will raise the notsupported exception
Definition at line 271 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_DEBUG, flow_count_, flows_, LM_DEBUG, CORBA::string_dup(), and TAO_debug_level.
Referenced by TAO_StreamCtrl::bind().
00273 { 00274 AVStreams::FlowConnection_var flow_connection; 00275 try 00276 { 00277 flow_connection = AVStreams::FlowConnection::_narrow (flow_connection_obj); 00278 } 00279 catch (const CORBA::Exception& ex) 00280 { 00281 ex._tao_print_exception ( 00282 "TAO_Basic_StreamCtrl::set_flow_connection"); 00283 return; 00284 } 00285 // add the flowname and the flowconnection to the hashtable. 00286 this->flows_.length (this->flow_count_ + 1); 00287 this->flows_ [this->flow_count_++] = CORBA::string_dup (flow_name); 00288 ACE_CString flow_name_key (flow_name); 00289 if (this->flow_connection_map_.bind (flow_name_key, flow_connection) != 0) 00290 { 00291 if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "(%N,%l) Cannot find flow: %s\n", flow_name )); 00292 throw AVStreams::noSuchFlow ();// is this right? 00293 } 00294 }
void TAO_Basic_StreamCtrl::set_FPStatus | ( | const AVStreams::flowSpec & | the_spec, | |
const char * | fp_name, | |||
const CORBA::Any & | fp_settings | |||
) | [virtual] |
Used to control the flow protocol parameters.
Definition at line 242 of file AVStreams_i.cpp.
References CORBA::is_nil(), and sep_a_.
00246 { 00247 if (!CORBA::is_nil (this->sep_a_.in ())) 00248 { 00249 this->sep_a_->set_FPStatus (flow_spec, fp_name, fp_settings); 00250 } 00251 }
void TAO_Basic_StreamCtrl::start | ( | const AVStreams::flowSpec & | the_spec | ) | [virtual] |
Start the transfer of data in the stream. Empty the_spec means apply operation to all flows
Reimplemented in TAO_StreamCtrl.
Definition at line 129 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_Hash_Map_Iterator_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::advance(), TAO_AV_Core::get_flowname(), ACE_Hash_Map_Entry< EXT_ID, INT_ID >::int_id_, ACE_Hash_Map_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next(), and printf().
Referenced by TAO_StreamCtrl::start().
00130 { 00131 try 00132 { 00133 // @@Call start on the Related MediaCtrl. 00134 00135 // call start on the flow connections. 00136 if (this->flow_connection_map_.current_size () > 0) 00137 { 00138 if (flow_spec.length () > 0) 00139 for (u_int i = 0; i < flow_spec.length (); i++) 00140 { 00141 char *flowname = TAO_AV_Core::get_flowname (flow_spec[i]); 00142 ACE_CString flow_name_key (flowname); 00143 FlowConnection_Map::ENTRY *flow_connection_entry = 0; 00144 if (this->flow_connection_map_.find (flow_name_key, 00145 flow_connection_entry) == 0) 00146 { 00147 flow_connection_entry->int_id_->start (); 00148 } 00149 } 00150 else 00151 { 00152 // call start on all the flows. 00153 FlowConnection_Map_Iterator iterator (this->flow_connection_map_); 00154 FlowConnection_Map_Entry *entry = 0; 00155 for (;iterator.next (entry) != 0;iterator.advance ()) 00156 { 00157 entry->int_id_->start (); 00158 } 00159 } 00160 } 00161 } 00162 catch(AVStreams::noSuchFlow& ex) 00163 { 00164 throw; //ACS mod 2007-08 00165 } 00166 catch (const CORBA::Exception& ex) 00167 { 00168 ex._tao_print_exception ("TAO_Basic_StreamCtrl::start"); 00169 throw; //ACS mod 2007-08 00170 } 00171 catch(...) 00172 { 00173 printf ("TAO_Basic_StreamCtrl::start - unknown exception\n"); 00174 } 00175 }
void TAO_Basic_StreamCtrl::stop | ( | const AVStreams::flowSpec & | the_spec | ) | [virtual] |
Stop the transfer of data of the stream Empty the_spec means apply operation to all flows
Reimplemented in TAO_StreamCtrl.
Definition at line 79 of file AVStreams_i.cpp.
References CORBA::Exception::_tao_print_exception(), ACE_Hash_Map_Iterator_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::advance(), TAO_AV_Core::get_flowname(), ACE_Hash_Map_Entry< EXT_ID, INT_ID >::int_id_, ACE_Hash_Map_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next(), and printf().
Referenced by TAO_StreamCtrl::stop().
00080 { 00081 try 00082 { 00083 // @@Call stop on the Related MediaCtrl. call stop on the flow 00084 // connections. 00085 if (this->flow_connection_map_.current_size () > 0) 00086 { 00087 if (flow_spec.length () > 0) 00088 for (u_int i=0;i<flow_spec.length ();i++) 00089 { 00090 char *flowname = TAO_AV_Core::get_flowname (flow_spec[i]); 00091 ACE_CString flow_name_key (flowname); 00092 AVStreams::FlowConnection_var flow_connection_entry; 00093 if (this->flow_connection_map_.find (flow_name_key, 00094 flow_connection_entry) == 0) 00095 { 00096 flow_connection_entry->stop (); 00097 } 00098 } 00099 else 00100 { 00101 // call stop on all the flows. 00102 FlowConnection_Map_Iterator iterator (this->flow_connection_map_); 00103 FlowConnection_Map_Entry *entry; 00104 for (;iterator.next (entry) != 0;iterator.advance ()) 00105 { 00106 entry->int_id_->stop (); 00107 } 00108 } 00109 } 00110 } 00111 catch(AVStreams::noSuchFlow& ex) 00112 { 00113 throw; //ACS mod 2007-08 00114 } 00115 catch (const CORBA::Exception& ex) 00116 { 00117 ex._tao_print_exception ("TAO_Basic_StreamCtrl::stop"); 00118 throw; //ACS mod 2007-08 00119 } 00120 catch(...) 00121 { 00122 printf ("TAO_Basic_StreamCtrl::stop - unknown exception\n"); 00123 } 00124 }
Definition at line 140 of file AVStreams_i.h.
u_int TAO_Basic_StreamCtrl::flow_count_ [protected] |
sequence of flow names.
Definition at line 144 of file AVStreams_i.h.
Referenced by set_flow_connection().
Definition at line 141 of file AVStreams_i.h.
AVStreams::flowSpec TAO_Basic_StreamCtrl::flows_ [protected] |
AVStreams::StreamEndPoint_A_var TAO_Basic_StreamCtrl::sep_a_ [protected] |
The Endpoints for this stream.
Definition at line 133 of file AVStreams_i.h.
Referenced by TAO_StreamCtrl::bind(), TAO_StreamCtrl::bind_devs(), and set_FPStatus().
AVStreams::StreamEndPoint_B_var TAO_Basic_StreamCtrl::sep_b_ [protected] |
Definition at line 134 of file AVStreams_i.h.
Referenced by TAO_StreamCtrl::bind(), and TAO_StreamCtrl::bind_devs().
AVStreams::VDev_var TAO_Basic_StreamCtrl::vdev_a_ [protected] |
The Virtual Devices for this stream.
Definition at line 129 of file AVStreams_i.h.
Referenced by TAO_StreamCtrl::bind_devs().
AVStreams::VDev_var TAO_Basic_StreamCtrl::vdev_b_ [protected] |