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.h" 00013 #include "dds/DCPS/transport/framework/TransportInst.h" 00014 #include "dds/DCPS/PoolAllocator.h" 00015 00016 #include "ace/Synch_Traits.h" 00017 00018 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00019 00020 namespace OpenDDS { 00021 namespace DCPS { 00022 00023 typedef RcHandle<TransportInst> TransportInst_rch; 00024 00025 /** 00026 * @class TransportType 00027 * 00028 * @brief Base class for concrete transports to provide new objects. 00029 * 00030 * Each transport implementation will need to define a concrete 00031 * subclass of the TransportType class. The base 00032 * class (TransportType) contains the pure virtual functions to 00033 * provide new objects. The concrete transport implements these methods 00034 * to provide the new concrete transport object. 00035 * 00036 */ 00037 class OpenDDS_Dcps_Export TransportType : public RcObject { 00038 public: 00039 00040 virtual const char* name() = 0; 00041 00042 virtual TransportInst_rch new_inst(const OPENDDS_STRING& name) = 0; 00043 00044 protected: 00045 00046 TransportType(); 00047 virtual ~TransportType(); 00048 }; 00049 00050 } // namespace DCPS 00051 } // namespace OpenDDS 00052 00053 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00054 00055 #endif