// ********************************************************************** // // Copyright (c) 2002 // ZeroC, Inc. // Billerica, MA, USA // // All Rights Reserved. // // Ice is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License version 2 as published by // the Free Software Foundation. // // ********************************************************************** #ifndef ICE_REFERENCE_FACTORY_H #define ICE_REFERENCE_FACTORY_H #include #include #include #include // For Reference::Mode #include namespace IceInternal { class ReferenceFactory : public ::IceUtil::Shared, public ::IceUtil::Mutex { public: ReferencePtr create(const Ice::Identity&, const std::vector&, Reference::Mode, bool, bool, const std::string&, const std::vector&, const RouterInfoPtr&, const LocatorInfoPtr&, const Ice::ObjectAdapterPtr&); ReferencePtr create(const std::string&); ReferencePtr create(const Ice::Identity&, BasicStream*); void setDefaultRouter(const ::Ice::RouterPrx&); Ice::RouterPrx getDefaultRouter() const; void setDefaultLocator(const ::Ice::LocatorPrx&); Ice::LocatorPrx getDefaultLocator() const; private: ReferenceFactory(const InstancePtr&); void destroy(); friend class Instance; InstancePtr _instance; Ice::RouterPrx _defaultRouter; Ice::LocatorPrx _defaultLocator; std::set _references; std::set::iterator _referencesHint; int _evict; }; } #endif