OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::NetworkConfigMonitor Class Referenceabstract

#include <NetworkConfigMonitor.h>

Inheritance diagram for OpenDDS::DCPS::NetworkConfigMonitor:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::NetworkConfigMonitor:
Collaboration graph
[legend]

Public Member Functions

typedef OPENDDS_LIST (NetworkInterfaceAddress) List
 
 NetworkConfigMonitor ()
 
virtual ~NetworkConfigMonitor ()
 
void connect (RcHandle< InternalTopic< NetworkInterfaceAddress > > topic)
 
virtual bool open ()=0
 
virtual bool close ()=0
 
void disconnect (RcHandle< InternalTopic< NetworkInterfaceAddress > > topic)
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Protected Member Functions

void set (const List &list)
 
void clear ()
 
void set (const NetworkInterfaceAddress &nia)
 
void remove_interface (const OPENDDS_STRING &name)
 
void remove_address (const OPENDDS_STRING &name, const NetworkAddress &address)
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Private Attributes

RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_
 
List list_
 
ACE_Thread_Mutex mutex_
 

Detailed Description

Definition at line 78 of file NetworkConfigMonitor.h.

Constructor & Destructor Documentation

◆ NetworkConfigMonitor()

OpenDDS::DCPS::NetworkConfigMonitor::NetworkConfigMonitor ( )

Definition at line 39 of file NetworkConfigMonitor.cpp.

40  : writer_(make_rch<InternalDataWriter<NetworkInterfaceAddress> >(true))
41 {}
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_
RcHandle< T > make_rch()
Definition: RcHandle_T.h:256

◆ ~NetworkConfigMonitor()

OpenDDS::DCPS::NetworkConfigMonitor::~NetworkConfigMonitor ( )
virtual

Definition at line 43 of file NetworkConfigMonitor.cpp.

44 {}

Member Function Documentation

◆ clear()

void OpenDDS::DCPS::NetworkConfigMonitor::clear ( void  )
protected

Definition at line 84 of file NetworkConfigMonitor.cpp.

References ACE_GUARD, list_, mutex_, and writer_.

85 {
87 
88  for (List::const_iterator pos = list_.begin(), limit = list_.end(); pos != limit; ++pos) {
89  writer_->dispose(*pos);
90  }
91 
92  list_.clear();
93 }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_

◆ close()

virtual bool OpenDDS::DCPS::NetworkConfigMonitor::close ( )
pure virtual

◆ connect()

void OpenDDS::DCPS::NetworkConfigMonitor::connect ( RcHandle< InternalTopic< NetworkInterfaceAddress > >  topic)

Definition at line 46 of file NetworkConfigMonitor.cpp.

References writer_.

Referenced by OpenDDS::DCPS::Service_Participant::get_domain_participant_factory().

47 {
48  topic->connect(writer_);
49 }
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_

◆ disconnect()

void OpenDDS::DCPS::NetworkConfigMonitor::disconnect ( RcHandle< InternalTopic< NetworkInterfaceAddress > >  topic)

Definition at line 51 of file NetworkConfigMonitor.cpp.

References writer_.

Referenced by OpenDDS::DCPS::Service_Participant::get_domain_participant_factory(), and OpenDDS::DCPS::Service_Participant::shutdown().

52 {
53  topic->disconnect(writer_);
54 }
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_

◆ open()

virtual bool OpenDDS::DCPS::NetworkConfigMonitor::open ( )
pure virtual

◆ OPENDDS_LIST()

typedef OpenDDS::DCPS::NetworkConfigMonitor::OPENDDS_LIST ( NetworkInterfaceAddress  )

◆ remove_address()

void OpenDDS::DCPS::NetworkConfigMonitor::remove_address ( const OPENDDS_STRING name,
const NetworkAddress address 
)
protected

Definition at line 125 of file NetworkConfigMonitor.cpp.

References ACE_GUARD, list_, mutex_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, and writer_.

126 {
128 
129  for (List::iterator pos = list_.begin(), limit = list_.end(); pos != limit;) {
130  if (pos->name == name && pos->address == address) {
131  writer_->dispose(*pos);
132  list_.erase(pos++);
133  } else {
134  ++pos;
135  }
136  }
137 }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_
const char *const name
Definition: debug.cpp:60

◆ remove_interface()

void OpenDDS::DCPS::NetworkConfigMonitor::remove_interface ( const OPENDDS_STRING name)
protected

Definition at line 111 of file NetworkConfigMonitor.cpp.

References ACE_GUARD, list_, mutex_, and writer_.

112 {
114 
115  for (List::iterator pos = list_.begin(), limit = list_.end(); pos != limit;) {
116  if (pos->name == name) {
117  writer_->dispose(*pos);
118  list_.erase(pos++);
119  } else {
120  ++pos;
121  }
122  }
123 }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_
const char *const name
Definition: debug.cpp:60

◆ set() [1/2]

void OpenDDS::DCPS::NetworkConfigMonitor::set ( const List &  list)
protected

Definition at line 56 of file NetworkConfigMonitor.cpp.

References ACE_GUARD, list_, mutex_, and writer_.

57 {
59 
60  for (List::const_iterator pos = list.begin(), limit = list.end(); pos != limit; ++pos) {
61  List::const_iterator iter = std::find_if(list_.begin(), list_.end(), NetworkInterfaceAddressKeyEqual(*pos));
62  if (iter != list_.end()) {
63  if (*iter != *pos) {
64  // Change.
65  writer_->write(*pos);
66  }
67  } else {
68  // New.
69  writer_->write(*pos);
70  }
71  }
72 
73  for (List::const_iterator pos = list_.begin(), limit = list_.end(); pos != limit; ++pos) {
74  List::const_iterator iter = std::find_if(list.begin(), list.end(), NetworkInterfaceAddressKeyEqual(*pos));
75  if (iter == list.end()) {
76  // Deleted.
77  writer_->dispose(*pos);
78  }
79  }
80 
81  list_ = list;
82 }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_

◆ set() [2/2]

void OpenDDS::DCPS::NetworkConfigMonitor::set ( const NetworkInterfaceAddress nia)
protected

Definition at line 95 of file NetworkConfigMonitor.cpp.

References ACE_GUARD, list_, mutex_, and writer_.

96 {
98 
99  List::iterator pos = std::find_if(list_.begin(), list_.end(), NetworkInterfaceAddressKeyEqual(nia));
100  if (pos != list_.end()) {
101  if (*pos != nia) {
102  writer_->write(nia);
103  *pos = nia;
104  }
105  } else {
106  writer_->write(nia);
107  list_.push_back(nia);
108  }
109 }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataWriter< NetworkInterfaceAddress > > writer_

Member Data Documentation

◆ list_

List OpenDDS::DCPS::NetworkConfigMonitor::list_
private

Definition at line 101 of file NetworkConfigMonitor.h.

Referenced by clear(), remove_address(), remove_interface(), and set().

◆ mutex_

ACE_Thread_Mutex OpenDDS::DCPS::NetworkConfigMonitor::mutex_
mutableprivate

Definition at line 103 of file NetworkConfigMonitor.h.

Referenced by clear(), remove_address(), remove_interface(), and set().

◆ writer_

RcHandle<InternalDataWriter<NetworkInterfaceAddress> > OpenDDS::DCPS::NetworkConfigMonitor::writer_
private

Definition at line 99 of file NetworkConfigMonitor.h.

Referenced by clear(), connect(), disconnect(), remove_address(), remove_interface(), and set().


The documentation for this class was generated from the following files: