00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_DATAREADERREMOTEIMPL_H 00009 #define OPENDDS_DCPS_DATAREADERREMOTEIMPL_H 00010 00011 #include "InfoRepoDiscovery_Export.h" 00012 #include "DataReaderRemoteS.h" 00013 #include "dds/DCPS/RcHandle_T.h" 00014 #include "dds/DCPS/Definitions.h" 00015 #include "dds/DCPS/RcObject.h" 00016 #include "dds/DCPS/DataReaderCallbacks.h" 00017 00018 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00019 #pragma once 00020 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00021 00022 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 00023 00024 namespace OpenDDS { 00025 namespace DCPS { 00026 00027 /** 00028 * @class DataReaderRemoteImpl 00029 * 00030 * @brief Implements the OpenDDS::DCPS::ReaderRemote interface that 00031 * is used to add and remove associations. 00032 * 00033 */ 00034 class DataReaderRemoteImpl 00035 : public virtual POA_OpenDDS::DCPS::DataReaderRemote { 00036 public: 00037 00038 explicit DataReaderRemoteImpl(DataReaderCallbacks& parent); 00039 00040 virtual ~DataReaderRemoteImpl(); 00041 00042 virtual void add_association(const RepoId& yourId, 00043 const WriterAssociation& writer, 00044 bool active); 00045 00046 virtual void association_complete(const RepoId& remote_id); 00047 00048 virtual void remove_associations(const WriterIdSeq& writers, 00049 CORBA::Boolean callback); 00050 00051 virtual void update_incompatible_qos(const IncompatibleQosStatus& status); 00052 00053 void detach_parent(); 00054 00055 private: 00056 WeakRcHandle<DataReaderCallbacks> parent_; 00057 }; 00058 00059 OPENDDS_END_VERSIONED_NAMESPACE_DECL 00060 00061 } // namespace DCPS 00062 } // namespace OpenDDS 00063 00064 #endif /* OPENDDS_DCPS_DATAREADERREMOTEIMPL_H */