00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _fbfs_OBJECTMANAGER
00021 #define _fbfs_OBJECTMANAGER
00022
00023 #include "../idl/ObjectManager.hh"
00024 #include "../idl/Security.hh"
00025
00026 #include "../utils/Prefs.h"
00027 #include "../utils/String.h"
00028 #include "../utils/ShareLock.h"
00029 #include <omniORB3/CORBA.h>
00030 #include "DataStructures.h"
00031
00038 namespace fbfs {
00039 class ObjectManager_i;
00040 };
00041
00045 class fbfs::ObjectManager_i : public POA_fbfs::ObjectManager, public PortableServer::RefCountServantBase {
00046 public:
00051 ObjectManager_i(const utils::Prefs &prefs, const CORBA::ORB_ptr &orb);
00052
00056 virtual ~ObjectManager_i() {};
00057
00060 char * lookup(const Security &cert, const Obj_id &id)
00061 throw(NotFound, SecurityException, InternalError);
00062
00065 void remove(const Security &cert, const Obj_id &id)
00066 throw(PartialExecution, NotFound, SecurityException, InternalError);
00067
00070 void put(const Security &cert, const Obj_id &id, const Obj &o, const Obj_prop &p)
00071 throw(PartialExecution, AlreadyPresent, SecurityException, InternalError);
00072
00075 void reparse(const Security &cert)
00076 throw(SecurityException);
00077 private:
00078 void validate();
00079 Servers validate(const string &objname, list<InstanceInfo> &infos);
00080 Repository rep;
00081 Servers servers;
00082 const utils::Prefs &prefs;
00083 CORBA::ORB_ptr orb;
00084 utils::ShareLock lock;
00085 Security cert;
00086 };
00087
00101 #endif