00001
00020 #ifndef SdoOrganization_h
00021 #define SdoOrganization_h
00022
00023 #include <rtm/RTC.h>
00024 #include <rtm/idl/SDOPackageSkel.h>
00025 #include <string>
00026 #include <ace/Guard_T.h>
00027 #include <ace/Thread_Mutex.h>
00028
00043 namespace SDOPackage
00044 {
00068 class Organization_impl
00069 {
00070 public:
00086 Organization_impl();
00087
00103 virtual ~Organization_impl();
00104
00105
00106
00107
00108
00109
00139 virtual char* get_organization_id()
00140 throw (CORBA::SystemException,
00141 InvalidParameter, NotAvailable, InternalError);
00142
00185 virtual CORBA::Boolean
00186 set_organization_property(const OrganizationProperty& org_property)
00187 throw (CORBA::SystemException,
00188 InvalidParameter, NotAvailable, InternalError);
00189
00222 virtual OrganizationProperty* get_organization_property()
00223 throw (CORBA::SystemException,
00224 NotAvailable, InternalError);
00225
00265 virtual CORBA::Any* get_organization_property_value(const char* name)
00266 throw (CORBA::SystemException,
00267 InvalidParameter, NotAvailable, InternalError);
00268
00313 virtual CORBA::Boolean
00314 set_organization_property_value(const char* name, const CORBA::Any& value)
00315 throw (CORBA::SystemException,
00316 InvalidParameter, NotAvailable, InternalError);
00317
00358 virtual CORBA::Boolean remove_organization_property(const char* name)
00359 throw (CORBA::SystemException,
00360 InvalidParameter, NotAvailable, InternalError);
00361
00399 virtual CORBA::Boolean add_members(const SDOList& sdo_list)
00400 throw (CORBA::SystemException,
00401 InvalidParameter, NotAvailable, InternalError);
00402
00435 virtual SDOList* get_members()
00436 throw (CORBA::SystemException,
00437 NotAvailable, InternalError);
00438
00482 virtual CORBA::Boolean set_members(const SDOList& sdos)
00483 throw (CORBA::SystemException,
00484 InvalidParameter, NotAvailable, InternalError);
00485
00522 virtual CORBA::Boolean remove_member(const char* id)
00523 throw (CORBA::SystemException,
00524 InvalidParameter, NotAvailable, InternalError);
00525
00556 virtual SDOSystemElement_ptr get_owner()
00557 throw (CORBA::SystemException,
00558 NotAvailable, InternalError);
00559
00601 virtual CORBA::Boolean set_owner(SDOSystemElement_ptr sdo)
00602 throw (CORBA::SystemException,
00603 InvalidParameter, NotAvailable, InternalError);
00604
00640 virtual DependencyType get_dependency()
00641 throw (CORBA::SystemException,
00642 NotAvailable, InternalError);
00643
00686 virtual CORBA::Boolean set_dependency(DependencyType dependency)
00687 throw (CORBA::SystemException,
00688 NotAvailable, InternalError);
00689
00690
00691
00692
00693 protected:
00701 char* m_pId;
00702
00710 SDOPackage::SDOList m_memberList;
00711
00719 SDOPackage::SDOSystemElement_var m_varOwner;
00720
00795 SDOPackage::DependencyType m_dependency;
00796
00815 SDOPackage::OrganizationProperty m_orgProperty;
00816 ACE_Thread_Mutex m_org_mutex;
00817
00818 typedef ACE_Guard<ACE_Thread_Mutex> Guard;
00819
00827 struct nv_name
00828 {
00829 nv_name(const char* name) : m_name(name) {};
00830 bool operator()(const NameValue& nv)
00831 {
00832 return m_name == std::string(nv.name);
00833 }
00834 std::string m_name;
00835 };
00836
00844 struct sdo_id
00845 {
00846 sdo_id(const char* id) : m_id(id) {};
00847 bool operator()(const SDO_ptr sdo)
00848 {
00849 std::string id(sdo->get_sdo_id());
00850 return m_id == id;
00851 }
00852 std::string m_id;
00853 };
00854 };
00855 };
00856
00857 #endif // namespace SDOPackage