diff options
Diffstat (limited to 'cpp/src/Ice/ReferenceFactory.h')
-rw-r--r-- | cpp/src/Ice/ReferenceFactory.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/cpp/src/Ice/ReferenceFactory.h b/cpp/src/Ice/ReferenceFactory.h new file mode 100644 index 00000000000..e6203f884cf --- /dev/null +++ b/cpp/src/Ice/ReferenceFactory.h @@ -0,0 +1,51 @@ +// ********************************************************************** +// +// Copyright (c) 2002 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef ICE_REFERENCE_FACTORY_H +#define ICE_REFERENCE_FACTORY_H + +#include <IceUtil/Shared.h> +#include <IceUtil/Mutex.h> +#include <Ice/ReferenceFactoryF.h> +#include <Ice/Reference.h> // For Reference::Mode +#include <set> + +namespace IceInternal +{ + +class ReferenceFactory : public ::IceUtil::Shared, public ::IceUtil::Mutex +{ +public: + + ReferencePtr create(const Ice::Identity&, const std::string&, Reference::Mode, bool, + const std::vector<EndpointPtr>&, const std::vector<EndpointPtr>&, + const RouterInfoPtr&, const Ice::ObjectAdapterPtr&); + ReferencePtr create(const std::string&); + ReferencePtr create(const Ice::Identity&, BasicStream*); + + void setDefaultRouter(const ::Ice::RouterPrx&); + Ice::RouterPrx getDefaultRouter() const; + +private: + + ReferenceFactory(const InstancePtr&); + void destroy(); + friend class Instance; + + InstancePtr _instance; + Ice::RouterPrx _defaultRouter; + std::set<ReferencePtr> _references; + std::set<ReferencePtr>::iterator _referencesHint; + int _evict; +}; + +} + +#endif |