メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

RtcInPortBase.h

説明を見る。
00001 // -*- C++ -*-
00019 /*
00020  * $Log: RtcInPortBase.h,v $
00021  * Revision 1.3  2005/05/27 07:32:32  n-ando
00022  * - InPort/OutPort interface was changed.
00023  *   subscribe/unsubscribe were completely changed.
00024  *
00025  * Revision 1.2  2005/05/16 06:12:57  n-ando
00026  * - RtcInPortBase class was DLL exported for Windows port.
00027  *
00028  * Revision 1.1.1.1  2005/05/12 09:06:18  n-ando
00029  * Public release.
00030  *
00031  *
00032  */
00033 
00034 #ifndef RtcInPortBase_h
00035 #define RtcInPortBase_h
00036 
00037 #include <ace/Thread_Manager.h>
00038 #include "rtm/RTC.h"
00039 #include "rtm/idl/RTCDataTypeSkel.h"
00040 #include "rtm/idl/RTCInPortSkel.h"
00041 #include "rtm/RtcRingBuffer.h"
00042 #include "rtm/RtcSubscriber.h"
00043 
00044 namespace RTM
00045 {
00046   
00068   class EXPORTS InPortBase :
00069         public POA_RTM::InPort,
00070                                         public PortableServer::RefCountServantBase
00071   {
00072   public:
00087         InPortBase()
00088         {
00089           ACE_TRACE("InPortBase::InPortBase(int)");
00090           m_Profile.name = _CORBA_String_helper::empty_string;
00091         };
00092         
00107         virtual ~InPortBase(){};
00108         
00109         //------------------------------------------------------------
00110         // << CORBA interfaces >>
00111         //------------------------------------------------------------
00126         virtual void put(const CORBA::Any& value)
00127           throw (CORBA::SystemException, RTM::PortBase::Disconnected) = 0;
00128         //      throw (RTM::InPort::Disconnected, CORBA::SystemException);
00129         
00141         virtual PortProfile* profile() throw (CORBA::SystemException);
00142         
00143     virtual RtmRes subscribe(SubscriptionProfile& subs)
00144           throw (CORBA::SystemException, RTM::PortBase::InvalidSubscription);
00145     virtual RtmRes notify_subscribe(SubscriptionProfile& subs)
00146           throw (CORBA::SystemException, RTM::PortBase::InvalidSubscription);
00147     virtual RtmRes unsubscribe(const char* id)
00148           throw (CORBA::SystemException, RTM::PortBase::NoSubscription);
00149     virtual RtmRes notify_unsubscribe(const char* id)
00150           throw (CORBA::SystemException, RTM::PortBase::NoSubscription);
00151     virtual SubscriptionList* subscriptions();
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160         //------------------------------------------------------------
00161         // << Local interfaces >>
00162         //------------------------------------------------------------
00174         const char* name(){return m_Profile.name;}
00175         
00176 
00193         virtual void read_pm() = 0;
00194 
00195         virtual InPort_ptr getObjRef();
00196         virtual void setObjRef(InPort_ptr objref);
00197 
00198   protected:
00206         PortProfile m_Profile;
00207 
00216         typedef std::list<SubsProfileBase*>::iterator Subs_it;  
00217         struct Subscribers
00218         {
00219           ACE_Thread_Mutex m_Mutex;
00220           std::list<SubsProfileBase*> m_List;
00221           
00222           class eq_id
00223           {
00224           public:
00225                 const std::string m_id;
00226                 eq_id(const char* id) : m_id(id){};
00227                 bool operator()(SubsProfileBase* subs);
00228           };
00229           Subs_it findById(const char* id);
00230           Subs_it eraseById(const char* id);
00231         };
00232         Subscribers m_Subscribers;
00233 
00241         InPort_var m_thisObjRef;
00242         
00243   };
00244   
00245 }; // End of namespace RTM
00246 
00247 #endif // RtcInPortBase_h

OpenRTMに対してSun Nov 5 06:15:05 2006に生成されました。  doxygen 1.4.1