00001
00020 #ifndef RTC_SDOORGANIZATION_H
00021 #define RTC_SDOORGANIZATION_H
00022
00023 #include <rtm/RTC.h>
00024 #include <rtm/idl/SDOPackageSkel.h>
00025 #include <rtm/SystemLogger.h>
00026 #include <string>
00027 #include <coil/Mutex.h>
00028 #include <coil/Guard.h>
00029
00045 #ifdef WIN32
00046 #pragma warning( disable : 4290 )
00047 #endif
00048
00049 namespace SDOPackage
00050 {
00074 class Organization_impl
00075 : public virtual POA_SDOPackage::Organization,
00076 public virtual PortableServer::RefCountServantBase
00077 {
00078 typedef coil::Mutex Mutex;
00079 typedef coil::Guard<Mutex> Guard;
00080 public:
00096 Organization_impl(SDOSystemElement_ptr sdo);
00097
00113 virtual ~Organization_impl(void);
00114
00115
00116
00117
00118
00119
00149 virtual char* get_organization_id()
00150 throw (CORBA::SystemException,
00151 InvalidParameter, NotAvailable, InternalError);
00152
00195 virtual CORBA::Boolean
00196 add_organization_property(const OrganizationProperty& org_property)
00197 throw (CORBA::SystemException,
00198 InvalidParameter, NotAvailable, InternalError);
00199
00232 virtual OrganizationProperty* get_organization_property()
00233 throw (CORBA::SystemException,
00234 NotAvailable, InternalError);
00235
00275 virtual CORBA::Any* get_organization_property_value(const char* name)
00276 throw (CORBA::SystemException,
00277 InvalidParameter, NotAvailable, InternalError);
00278
00323 virtual CORBA::Boolean
00324 set_organization_property_value(const char* name, const CORBA::Any& value)
00325 throw (CORBA::SystemException,
00326 InvalidParameter, NotAvailable, InternalError);
00327
00368 virtual CORBA::Boolean remove_organization_property(const char* name)
00369 throw (CORBA::SystemException,
00370 InvalidParameter, NotAvailable, InternalError);
00371
00409 virtual CORBA::Boolean add_members(const SDOList& sdo_list)
00410 throw (CORBA::SystemException,
00411 InvalidParameter, NotAvailable, InternalError);
00412
00445 virtual SDOList* get_members()
00446 throw (CORBA::SystemException,
00447 NotAvailable, InternalError);
00448
00492 virtual CORBA::Boolean set_members(const SDOList& sdos)
00493 throw (CORBA::SystemException,
00494 InvalidParameter, NotAvailable, InternalError);
00495
00532 virtual CORBA::Boolean remove_member(const char* id)
00533 throw (CORBA::SystemException,
00534 InvalidParameter, NotAvailable, InternalError);
00535
00566 virtual SDOSystemElement_ptr get_owner()
00567 throw (CORBA::SystemException,
00568 NotAvailable, InternalError);
00569
00611 virtual CORBA::Boolean set_owner(SDOSystemElement_ptr sdo)
00612 throw (CORBA::SystemException,
00613 InvalidParameter, NotAvailable, InternalError);
00614
00650 virtual DependencyType get_dependency()
00651 throw (CORBA::SystemException,
00652 NotAvailable, InternalError);
00653
00696 virtual CORBA::Boolean set_dependency(DependencyType dependency)
00697 throw (CORBA::SystemException,
00698 NotAvailable, InternalError);
00699
00700
00701
00702 Organization_ptr getObjRef() {return m_objref;};
00703
00704 protected:
00705 ::RTC::Logger rtclog;
00706 Organization_var m_objref;
00714 std::string m_pId;
00715
00723 SDOPackage::SDOList m_memberList;
00724
00732 SDOPackage::SDOSystemElement_var m_varOwner;
00733
00808 SDOPackage::DependencyType m_dependency;
00809
00828 SDOPackage::OrganizationProperty m_orgProperty;
00829 Mutex m_org_mutex;
00830
00838 struct nv_name
00839 {
00840 nv_name(const char* name) : m_name(name) {};
00841 bool operator()(const NameValue& nv)
00842 {
00843 return m_name == std::string(nv.name);
00844 }
00845 std::string m_name;
00846 };
00847
00855 struct sdo_id
00856 {
00857 sdo_id(const char* id) : m_id(id) {};
00858 bool operator()(const SDO_ptr sdo)
00859 {
00860 CORBA::String_var id(sdo->get_sdo_id());
00861 return m_id == (const char*)id;
00862 }
00863 std::string m_id;
00864 };
00865 };
00866 };
00867
00868 #ifdef WIN32
00869 #pragma warning( default : 4290 )
00870 #endif
00871
00872 #endif // RTC_NAMESPACE SDOPACKAGE