00001
00002
00003 #ifndef _REMOTEVOBJECT_HH_
00004 #define _REMOTEVOBJECT_HH_
00005
00006 #include <vos/vos/vobjectextension.hh>
00007
00008 namespace VOS {
00009
00010
00011
00012
00013
00014
00015
00016 class VOS_API RemoteVobject : public VobjectExtension
00017 {
00018 private:
00019 VobjectBase* base;
00020 VUtil::read_write_mutex childUpdate_mutex;
00021
00022 void addChildUpdateHandler(Message* m);
00023 void addParentUpdateHandler(Message* m);
00024 void removeChildUpdateHandler(Message* m);
00025 void removeParentUpdateHandler(Message* m);
00026 void typeUpdateHandler(Message* m);
00027 void addListenerReplyHandler(Message* m);
00028
00029 public:
00030 virtual void extensionAttachedTo(VobjectBase* vb);
00031
00032 virtual TypeSetIterator* pre_getTypes(VobjectState& state,
00033 boost::recursive_mutex::scoped_lock& state_lock,
00034 Vobject* requester);
00035
00036 virtual ParentSetIterator* pre_getParents(VobjectState& state,
00037 boost::recursive_mutex::scoped_lock& state_lock,
00038 Vobject* requester);
00039
00040 virtual ChildListIterator* pre_getChildren(VobjectState& state,
00041 boost::recursive_mutex::scoped_lock& state_lock,
00042 Vobject* requester, int start, int end);
00043
00044 virtual int pre_numChildren(VobjectState& state,
00045 boost::recursive_mutex::scoped_lock& state_lock,
00046 Vobject* requester);
00047
00048 virtual VUtil::vRef<ParentChildRelation> pre_findObject(VobjectState& state,
00049 boost::recursive_mutex::scoped_lock& state_lock,
00050 Vobject* requester, const std::string& path);
00051 virtual VUtil::vRef<ParentChildRelation> pre_findChild(VobjectState& state,
00052 boost::recursive_mutex::scoped_lock& state_lock,
00053 Vobject* requester, const std::string& path);
00054 virtual VUtil::vRef<ParentChildRelation> pre_findChild(VobjectState& state,
00055 boost::recursive_mutex::scoped_lock& state_lock,
00056 Vobject* requester, int pos);
00057 virtual VUtil::vRef<ParentChildRelation> pre_findParent(VobjectState& state,
00058 boost::recursive_mutex::scoped_lock& state_lock,
00059 Vobject* requester, Vobject& parent);
00060
00061 virtual bool pre_addType(VobjectState& state, boost::recursive_mutex::scoped_lock& state_lock,
00062 Vobject* requester, const std::string& s);
00063
00064 virtual bool pre_removeType(VobjectState& state,
00065 boost::recursive_mutex::scoped_lock& state_lock,
00066 Vobject* requester, const std::string& s);
00067
00068 virtual void post_removeType(VobjectState& state,
00069 boost::recursive_mutex::scoped_lock& state_lock,
00070 Vobject* requester, const std::string& s);
00071
00072 virtual bool pre_insertChild(VobjectState& state,
00073 boost::recursive_mutex::scoped_lock& state_lock,
00074 Vobject* requester,
00075 int position, const std::string& contextual_name,
00076 Vobject* child);
00077
00078 virtual bool pre_setChild(VobjectState& state,
00079 boost::recursive_mutex::scoped_lock& state_lock,
00080 Vobject* requester,
00081 int position, const std::string& contextual_name,
00082 Vobject* child);
00083
00084 virtual bool pre_removeChild(VobjectState& state,
00085 boost::recursive_mutex::scoped_lock& state_lock,
00086 Vobject* requester, ParentChildRelation* pcr, bool strict);
00087
00088 virtual bool pre_addTypeListener(VobjectState& state,
00089 boost::recursive_mutex::scoped_lock& state_lock,
00090 Vobject* requester, TypeChangeListener* t, bool refresh);
00091
00092 virtual void post_removeTypeListener(VobjectState& state,
00093 boost::recursive_mutex::scoped_lock& state_lock,
00094 Vobject* requester, TypeChangeListener* t);
00095 virtual bool pre_addChildListener(VobjectState& state,
00096 boost::recursive_mutex::scoped_lock& state_lock,
00097 Vobject* requester, ChildChangeListener* t,
00098 bool refresh);
00099
00100 virtual void post_removeChildListener(VobjectState& state,
00101 boost::recursive_mutex::scoped_lock& state_lock,
00102 Vobject* requester, ChildChangeListener* t);
00103
00104 virtual bool pre_addParentListener(VobjectState& state,
00105 boost::recursive_mutex::scoped_lock& state_lock,
00106 Vobject* requester, ParentChangeListener* t,
00107 bool refresh);
00108
00109 virtual void post_removeParentListener(VobjectState& state,
00110 boost::recursive_mutex::scoped_lock& state_lock,
00111 Vobject* requester, ParentChangeListener* t);
00112
00113 virtual StringIterator* pre_getPolicy(AccessControlState* acs, Vobject* requester,
00114 const std::string& domain, Identity* id);
00115
00116 virtual StringIterator* pre_getAvailablePolicies(AccessControlState* acs,
00117 Vobject* requester,
00118 const std::string& domain);
00119
00120 virtual bool pre_addToACL(AccessControlState* acs, Vobject* requester,
00121 const std::string& ACLname, Vobject* id);
00122
00123 virtual bool pre_removeFromACL(AccessControlState* acs, Vobject* requester,
00124 const std::string& ACLname, Vobject* id);
00125
00126 virtual bool pre_deleteACL(AccessControlState* acs, Vobject* requester,
00127 const std::string& policies);
00128
00129 virtual std::string pre_getDefaultPolicy(AccessControlState* acs, Vobject* requester,
00130 const std::string& domain);
00131
00132 virtual bool pre_setDefaultPolicy(AccessControlState* acs, Vobject* requester,
00133 const std::string& policy);
00134
00135 virtual ACLIterator* pre_getAllACLs(AccessControlState* acs, Vobject* requester);
00136
00137 virtual VUtil::vRef<VobjectBase> getBase() { return VUtil::vRef<VobjectBase>(base, true); }
00138 };
00139
00140 }
00141
00142 #endif