00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef DCPS_MULTICASTSESSIONFACTORY_H 00009 #define DCPS_MULTICASTSESSIONFACTORY_H 00010 00011 #include "Multicast_Export.h" 00012 00013 #include "MulticastTypes.h" 00014 00015 #include "ace/Synch_Traits.h" 00016 00017 #include "dds/DCPS/RcObject.h" 00018 #include "dds/DCPS/RcHandle_T.h" 00019 00020 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00021 class ACE_Reactor; 00022 ACE_END_VERSIONED_NAMESPACE_DECL 00023 00024 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00025 00026 namespace OpenDDS { 00027 namespace DCPS { 00028 00029 class MulticastDataLink; 00030 class MulticastSession; 00031 typedef RcHandle<MulticastSession> MulticastSession_rch; 00032 00033 class OpenDDS_Multicast_Export MulticastSessionFactory 00034 : public RcObject { 00035 public: 00036 virtual ~MulticastSessionFactory(); 00037 00038 virtual int requires_send_buffer() const = 0; 00039 00040 virtual MulticastSession_rch create(ACE_Reactor* reactor, 00041 ACE_thread_t owner, 00042 MulticastDataLink* link, 00043 MulticastPeer remote_peer) = 0; 00044 }; 00045 00046 } // namespace DCPS 00047 } // namespace OpenDDS 00048 00049 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00050 00051 #endif /* DCPS_MULTICASTSESSIONFACTORY_H */