00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_TRANSPORT_TYPE_H 00009 #define OPENDDS_DCPS_TRANSPORT_TYPE_H 00010 00011 #include "dds/DCPS/dcps_export.h" 00012 #include "dds/DCPS/RcObject_T.h" 00013 #include "dds/DCPS/transport/framework/TransportInst.h" 00014 #include "dds/DCPS/PoolAllocator.h" 00015 00016 #include "ace/Synch.h" 00017 00018 namespace OpenDDS { 00019 namespace DCPS { 00020 00021 /** 00022 * @class TransportType 00023 * 00024 * @brief Base class for concrete transports to provide new objects. 00025 * 00026 * Each transport implementation will need to define a concrete 00027 * subclass of the TransportType class. The base 00028 * class (TransportType) contains the pure virtual functions to 00029 * provide new objects. The concrete transport implements these methods 00030 * to provide the new concrete transport object. 00031 * 00032 */ 00033 class OpenDDS_Dcps_Export TransportType : public RcObject<ACE_SYNCH_MUTEX> { 00034 public: 00035 00036 virtual const char* name() = 0; 00037 00038 virtual TransportInst* new_inst(const OPENDDS_STRING& name) = 0; 00039 00040 protected: 00041 00042 TransportType(); 00043 virtual ~TransportType(); 00044 }; 00045 00046 } // namespace DCPS 00047 } // namespace OpenDDS 00048 00049 #endif