UniSet  2.2.1
ObjectRepository.h
См. документацию.
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 // -----------------------------------------------------------------------------------------