|
UniSet
2.2.1
|
00001 /* This file is part of the UniSet project 00002 * Copyright (c) 2002 Free Software Foundation, Inc. 00003 * Copyright (c) 2002 Pavel Vainerman 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 */ 00019 // -------------------------------------------------------------------------- 00024 // -------------------------------------------------------------------------- 00025 #ifndef ObjectRepository_H_ 00026 #define ObjectRepository_H_ 00027 // -------------------------------------------------------------------------- 00028 #include <memory> 00029 #include <omniORB4/CORBA.h> 00030 #include <omniORB4/Naming.hh> 00031 #include <string> 00032 #include "UniSetTypes.h" 00033 #include "Exceptions.h" 00034 #include "Configuration.h" 00035 // ----------------------------------------------------------------------------------------- 00036 //namespase ORepository 00037 //{ 00038 00046 class ObjectRepository 00047 { 00048 public: 00049 00050 ObjectRepository( const std::shared_ptr<UniSetTypes::Configuration>& conf ); 00051 ~ObjectRepository(); 00052 00056 00057 void registration(const std::string& name, const UniSetTypes::ObjectPtr oRef, const std::string& section, bool force = false) const 00058 throw(UniSetTypes::ORepFailed, UniSetTypes::ObjectNameAlready, UniSetTypes::InvalidObjectName, UniSetTypes::NameNotFound); 00059 00061 void registration(const std::string& fullName, const UniSetTypes::ObjectPtr oRef, bool force = false) const 00062 throw(UniSetTypes::ORepFailed, UniSetTypes::ObjectNameAlready, UniSetTypes::InvalidObjectName, UniSetTypes::NameNotFound); 00063 00065 void unregistration(const std::string& name, const std::string& section) const throw(UniSetTypes::ORepFailed, UniSetTypes::NameNotFound); 00067 void unregistration(const std::string& fullName) const throw(UniSetTypes::ORepFailed, UniSetTypes::NameNotFound); 00068 // @} 00069 // end of ORepGroup 00070 00072 UniSetTypes::ObjectPtr resolve(const std::string& name, const std::string& NSName = "NameService")const throw(UniSetTypes::ORepFailed, UniSetTypes::NameNotFound); 00073 00075 bool isExist( const UniSetTypes::ObjectPtr& oref ) const; 00077 bool isExist( const std::string& fullName ) const; 00078 00085 enum ObjectType 00086 { 00087 ObjectRef, 00088 Section 00089 }; 00090 00092 bool list(const std::string& section, UniSetTypes::ListObjectName* ls, unsigned int how_many = 300)throw(UniSetTypes::ORepFailed); 00093 00095 bool listSections(const std::string& in_section, UniSetTypes::ListObjectName* ls, unsigned int how_many = 300)throw(UniSetTypes::ORepFailed); 00096 00097 // @} 00098 // end of ORepServiceGroup 00099 00100 protected: 00101 00102 ObjectRepository(); 00103 mutable std::string nsName; 00104 std::shared_ptr<UniSetTypes::Configuration> uconf; 00105 00106 bool list(const std::string& section, UniSetTypes::ListObjectName* ls, unsigned int how_many, ObjectType type); 00107 00108 private: 00109 bool init() const; 00110 mutable CosNaming::NamingContext_var localctx; 00111 }; 00112 00113 //}; 00114 // ----------------------------------------------------------------------------------------- 00115 #endif 00116 // -----------------------------------------------------------------------------------------
1.7.6.1