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/Definitions.h" 00014 00015 #include "ace/Thread_Mutex.h" 00016 00017 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00018 #pragma once 00019 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00020 00021 namespace OpenDDS { 00022 namespace DCPS { 00023 00024 class DataReaderCallbacks; 00025 00026 /** 00027 * @class DataReaderRemoteImpl 00028 * 00029 * @brief Implements the OpenDDS::DCPS::ReaderRemote interface that 00030 * is used to add and remove associations. 00031 * 00032 */ 00033 class DataReaderRemoteImpl 00034 : public virtual POA_OpenDDS::DCPS::DataReaderRemote { 00035 public: 00036 00037 explicit DataReaderRemoteImpl(DataReaderCallbacks* parent); 00038 00039 virtual ~DataReaderRemoteImpl(); 00040 00041 virtual void add_association(const RepoId& yourId, 00042 const WriterAssociation& writer, 00043 bool active); 00044 00045 virtual void association_complete(const RepoId& remote_id); 00046 00047 virtual void remove_associations(const WriterIdSeq& writers, 00048 CORBA::Boolean callback); 00049 00050 virtual void update_incompatible_qos(const IncompatibleQosStatus& status); 00051 00052 void detach_parent(); 00053 00054 private: 00055 DataReaderCallbacks* parent_; 00056 ACE_Thread_Mutex mutex_; 00057 }; 00058 00059 } // namespace DCPS 00060 } // namespace OpenDDS 00061 00062 #endif /* OPENDDS_DCPS_DATAREADERREMOTEIMPL_H */