TransportSendListener.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 OPENDDS_DCPS_TRANSPORTSENDLISTENER_H
00009 #define OPENDDS_DCPS_TRANSPORTSENDLISTENER_H
00010 
00011 #include "dds/DCPS/dcps_export.h"
00012 #include "dds/DCPS/RcHandle_T.h"
00013 #include "dds/DdsDcpsInfoUtilsC.h"
00014 #include "dds/DCPS/Message_Block_Ptr.h"
00015 #include "TransportDefs.h"
00016 #include "dds/DCPS/RcObject.h"
00017 #include "dds/DCPS/PoolAllocator.h"
00018 
00019 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00020 class ACE_Message_Block;
00021 ACE_END_VERSIONED_NAMESPACE_DECL
00022 
00023 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00024 
00025 namespace OpenDDS {
00026 namespace DCPS {
00027 
00028 class DataSampleElement;
00029 struct DataSampleHeader;
00030 typedef ACE_Message_Block DataSample;
00031 
00032 class DataLinkSet;
00033 typedef RcHandle<DataLinkSet> DataLinkSet_rch;
00034 
00035 class ReaderIdSeq;
00036 
00037 class OpenDDS_Dcps_Export TransportSendListener
00038   : public virtual RcObject {
00039 public:
00040 
00041   virtual ~TransportSendListener();
00042 
00043   virtual void data_delivered(const DataSampleElement* sample);
00044   virtual void data_dropped(const DataSampleElement* sample,
00045                             bool dropped_by_transport);
00046 
00047   virtual void control_delivered(const Message_Block_Ptr& sample);
00048   virtual void control_dropped(const Message_Block_Ptr& sample,
00049                                bool dropped_by_transport);
00050 
00051   virtual void notify_publication_disconnected(const ReaderIdSeq& subids) = 0;
00052   virtual void notify_publication_reconnected(const ReaderIdSeq& subids) = 0;
00053   virtual void notify_publication_lost(const ReaderIdSeq& subids) = 0;
00054 
00055   virtual void remove_associations(const ReaderIdSeq& subids, bool notify) = 0;
00056 
00057   /// Hook for the listener to override a normal control message with
00058   /// customized messages to different DataLinks.
00059   virtual SendControlStatus send_control_customized(
00060     const DataLinkSet_rch& links,
00061     const DataSampleHeader& header,
00062     ACE_Message_Block* msg,
00063     void* extra);
00064 
00065   struct InlineQosData {
00066     DDS::PublisherQos  pub_qos;
00067     DDS::DataWriterQos dw_qos;
00068     OPENDDS_STRING     topic_name;
00069   };
00070 
00071   virtual void retrieve_inline_qos_data(InlineQosData& qos_data) const;
00072 
00073 protected:
00074 
00075   TransportSendListener();
00076 };
00077 
00078 typedef RcHandle<TransportSendListener> TransportSendListener_rch;
00079 
00080 } // namespace DCPS
00081 } // namespace OpenDDS
00082 
00083 OPENDDS_END_VERSIONED_NAMESPACE_DECL
00084 
00085 #endif /* OPENDDS_DCPS_TRANSPORTSENDLISTENER_H */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1