interreality.org [VOS]
[Home] [About]
[Screenshots]
[Download]
[News]
[Community]
[Documentation] [Manual]
[Bugs & Requests] [Wiki]

/home/tetron/hack/vos/libs/vos/vos/remotevobject.hh

Go to the documentation of this file.
00001 // XXX needs LGPL
00002 
00003 #ifndef _REMOTEVOBJECT_HH_
00004 #define _REMOTEVOBJECT_HH_
00005 
00006 #include <vos/vos/vobjectextension.hh>
00007 
00008 namespace VOS {
00009     /** @class RemoteVobject remotevobject.hh vos/vos/remotevobject.hh
00010         @ingroup libvos
00011 
00012         This class is hooks in via the VobjectBase extension mechanism
00013         and implements sending requests over the network to the actual
00014         site.
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