ConnectorListener.cpp
Go to the documentation of this file.
00001 // -*- C++ -*-
00020 #include <rtm/ConnectorListener.h>
00021 
00022 namespace RTC
00023 {
00031   ConnectorDataListener::~ConnectorDataListener(){}
00032 
00040   ConnectorListener::~ConnectorListener(){}
00041 
00049   ConnectorDataListenerHolder::ConnectorDataListenerHolder()
00050   {
00051   }
00052   
00053 
00054   ConnectorDataListenerHolder::~ConnectorDataListenerHolder()
00055   {
00056     Guard guard(m_mutex);
00057     for (int i(0), len(m_listeners.size()); i < len; ++i)
00058       {
00059         if (m_listeners[i].second)
00060           {
00061             delete m_listeners[i].first;
00062           }
00063       }
00064   }
00065 
00066   
00067   void ConnectorDataListenerHolder::
00068   addListener(ConnectorDataListener* listener, bool autoclean)
00069   {
00070     Guard guard(m_mutex);
00071     m_listeners.push_back(Entry(listener, autoclean));
00072   }
00073 
00074   
00075   void ConnectorDataListenerHolder::
00076   removeListener(ConnectorDataListener* listener)
00077   {
00078     Guard guard(m_mutex);
00079     std::vector<Entry>::iterator it(m_listeners.begin());
00080     for (; it != m_listeners.end(); ++it)
00081       {
00082         if ((*it).first == listener)
00083           {
00084             if ((*it).second)
00085               {
00086                 delete (*it).first;
00087               }
00088             m_listeners.erase(it);
00089             return;
00090           }
00091       }
00092     
00093   }
00094 
00095     
00096   void ConnectorDataListenerHolder::notify(const ConnectorInfo& info,
00097                                            const cdrMemoryStream& cdrdata)
00098   {
00099     Guard guard(m_mutex);
00100     for (int i(0), len(m_listeners.size()); i < len; ++i)
00101       {
00102         m_listeners[i].first->operator()(info, cdrdata);
00103       }
00104   }
00105 
00106 
00114   ConnectorListenerHolder::ConnectorListenerHolder()
00115   {
00116   }
00117     
00118   
00119   ConnectorListenerHolder::~ConnectorListenerHolder()
00120   {
00121     Guard guard(m_mutex);
00122     for (int i(0), len(m_listeners.size()); i < len; ++i)
00123       {
00124         if (m_listeners[i].second)
00125           {
00126             delete m_listeners[i].first;
00127           }
00128       }
00129   }
00130 
00131   
00132   void ConnectorListenerHolder::addListener(ConnectorListener* listener,
00133                                             bool autoclean)
00134   {
00135     Guard guard(m_mutex);
00136     m_listeners.push_back(Entry(listener, autoclean));
00137   }
00138   
00139 
00140   void ConnectorListenerHolder::removeListener(ConnectorListener* listener)
00141   {
00142     Guard guard(m_mutex);
00143     std::vector<Entry>::iterator it(m_listeners.begin());
00144     
00145     for (; it != m_listeners.end(); ++it)
00146       {
00147         if ((*it).first == listener)
00148           {
00149             if ((*it).second)
00150               {
00151                 delete (*it).first;
00152               }
00153             m_listeners.erase(it);
00154             return;
00155           }
00156       }
00157     
00158   }
00159   
00160   
00161   void ConnectorListenerHolder::notify(const ConnectorInfo& info)
00162   {
00163     Guard guard(m_mutex);
00164     for (int i(0), len(m_listeners.size()); i < len; ++i)
00165       {
00166         m_listeners[i].first->operator()(info);
00167       }
00168   }
00169 };
00170 
00171 


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Sat Jun 8 2019 18:49:03