00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_AV_FLOWS_T_H
00015 #define TAO_AV_FLOWS_T_H
00016 #include "ace/pre.h"
00017
00018 #include "orbsvcs/AV/AVStreams_i.h"
00019
00020 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00021
00022
00023
00024
00025
00026
00027
00028 template <class T_Producer, class T_Consumer>
00029 class TAO_FDev :
00030 public virtual POA_AVStreams::FDev,
00031 public virtual TAO_PropertySet
00032 {
00033 public:
00034
00035 TAO_FDev (void);
00036
00037
00038 TAO_FDev (const char *flowname);
00039
00040
00041 ~TAO_FDev (void);
00042
00043
00044
00045 const char *flowname (void);
00046 void flowname (const char *flowname);
00047 AVStreams::FlowProducer_ptr create_producer (AVStreams::FlowConnection_ptr the_requester,
00048 AVStreams::QoS & the_qos,
00049 CORBA::Boolean_out met_qos,
00050 char *& named_fdev);
00051
00052
00053
00054 virtual AVStreams::FlowProducer_ptr make_producer (AVStreams::FlowConnection_ptr the_requester,
00055 AVStreams::QoS & the_qos,
00056 CORBA::Boolean_out met_qos,
00057 char *& named_fdev);
00058
00059
00060 virtual AVStreams::FlowConsumer_ptr create_consumer (AVStreams::FlowConnection_ptr the_requester,
00061 AVStreams::QoS & the_qos,
00062 CORBA::Boolean_out met_qos,
00063 char *& named_fdev);
00064
00065
00066
00067 virtual AVStreams::FlowConsumer_ptr make_consumer (AVStreams::FlowConnection_ptr the_requester,
00068 AVStreams::QoS & the_qos,
00069 CORBA::Boolean_out met_qos,
00070 char *& named_fdev);
00071
00072
00073 virtual AVStreams::FlowConnection_ptr bind (AVStreams::FDev_ptr peer_device,
00074 AVStreams::QoS & the_qos,
00075 CORBA::Boolean_out is_met);
00076
00077
00078 virtual AVStreams::FlowConnection_ptr bind_mcast (AVStreams::FDev_ptr first_peer,
00079 AVStreams::QoS & the_qos,
00080 CORBA::Boolean_out is_met);
00081
00082
00083 virtual void destroy (AVStreams::FlowEndPoint_ptr the_ep,
00084 const char * fdev_name);
00085
00086 protected:
00087 ACE_DLList <TAO_FlowProducer> producer_list_;
00088 typedef ACE_DLList_Iterator <TAO_FlowProducer> PRODUCER_LIST_ITERATOR;
00089 ACE_DLList <TAO_FlowConsumer> consumer_list_;
00090 typedef ACE_DLList_Iterator <TAO_FlowConsumer> CONSUMER_LIST_ITERATOR;
00091 CORBA::String_var flowname_;
00092 };
00093
00094 TAO_END_VERSIONED_NAMESPACE_DECL
00095
00096 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00097 #include "orbsvcs/AV/Flows_T.cpp"
00098 #endif
00099
00100 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00101 #pragma implementation ("Flows_T.cpp")
00102 #endif
00103
00104 #include "ace/post.h"
00105 #endif