RtpsUdpInst.h

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #ifndef DCPS_RTPSUDPINST_H
00009 #define DCPS_RTPSUDPINST_H
00010 
00011 #include "Rtps_Udp_Export.h"
00012 
00013 #include "dds/DCPS/transport/framework/TransportInst.h"
00014 #include "dds/DCPS/SafetyProfileStreams.h"
00015 
00016 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00017 
00018 namespace OpenDDS {
00019 namespace RTPS {
00020   class Sedp;
00021 }
00022 
00023 namespace DCPS {
00024 class RtpsUdpTransport;
00025 class TransportReceiveListener;
00026 typedef RcHandle<TransportReceiveListener> TransportReceiveListener_rch;
00027 
00028 class OpenDDS_Rtps_Udp_Export RtpsUdpInst : public TransportInst {
00029 public:
00030   ACE_INT32 send_buffer_size_;
00031   ACE_INT32 rcv_buffer_size_;
00032 
00033   bool use_multicast_;
00034   unsigned char ttl_;
00035   ACE_INET_Addr multicast_group_address_;
00036   OPENDDS_STRING multicast_interface_;
00037 
00038   size_t nak_depth_;
00039   ACE_Time_Value nak_response_delay_, heartbeat_period_,
00040     heartbeat_response_delay_, handshake_timeout_, durable_data_timeout_;
00041 
00042   virtual int load(ACE_Configuration_Heap& cf,
00043                    ACE_Configuration_Section_Key& sect);
00044 
00045   /// Diagnostic aid.
00046   virtual OPENDDS_STRING dump_to_str() const;
00047 
00048   bool is_reliable() const { return true; }
00049   bool requires_cdr() const { return true; }
00050 
00051   virtual size_t populate_locator(OpenDDS::DCPS::TransportLocator& trans_info) const;
00052   const TransportBLOB* get_blob(const OpenDDS::DCPS::TransportLocatorSeq& trans_info) const;
00053 
00054   OPENDDS_STRING local_address_string() const { return local_address_config_str_; }
00055   ACE_INET_Addr local_address() const { return local_address_; }
00056   void local_address(const char* str)
00057   {
00058     local_address_config_str_ = str;
00059     local_address_.set(str);
00060   }
00061   void local_address(u_short port_number, const char* host_name)
00062   {
00063     local_address_config_str_ = host_name;
00064     local_address_config_str_ += ":" + to_dds_string(port_number);
00065     local_address_.set(port_number, host_name);
00066   }
00067   void local_address_set_port(u_short port_number) {
00068     local_address_.set_port_number(port_number);
00069     set_port_in_addr_string(local_address_config_str_, port_number);
00070   }
00071 
00072 private:
00073   friend class RtpsUdpType;
00074   template <typename T, typename U>
00075   friend RcHandle<T> OpenDDS::DCPS::make_rch(U const&);
00076   explicit RtpsUdpInst(const OPENDDS_STRING& name);
00077 
00078   TransportImpl_rch new_impl();
00079 
00080   friend class RTPS::Sedp;
00081   friend class RtpsUdpTransport;
00082   TransportReceiveListener_rch opendds_discovery_default_listener_;
00083   RepoId opendds_discovery_guid_;
00084 
00085   ACE_INET_Addr local_address_;
00086   OPENDDS_STRING local_address_config_str_;
00087 };
00088 
00089 } // namespace DCPS
00090 } // namespace OpenDDS
00091 
00092 OPENDDS_END_VERSIONED_NAMESPACE_DECL
00093 
00094 #endif  /* DCPS_RTPSUDPINST_H */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1