diff options
Diffstat (limited to 'cpp/src/Ice/ProtocolPluginFacade.h')
-rw-r--r-- | cpp/src/Ice/ProtocolPluginFacade.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/cpp/src/Ice/ProtocolPluginFacade.h b/cpp/src/Ice/ProtocolPluginFacade.h new file mode 100644 index 00000000000..460c39a428b --- /dev/null +++ b/cpp/src/Ice/ProtocolPluginFacade.h @@ -0,0 +1,67 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICE_PROTOCOL_PLUGIN_FACADE_H +#define ICE_PROTOCOL_PLUGIN_FACADE_H + +#include <IceUtil/Config.h> +#include <IceUtil/Shared.h> +#include <Ice/ProtocolPluginFacadeF.h> +#include <Ice/CommunicatorF.h> +#include <Ice/EndpointFactoryF.h> +#include <Ice/InstanceF.h> +#include <Ice/EndpointIF.h> +#include <Ice/NetworkF.h> + +namespace IceInternal +{ + +// +// Global function to obtain a ProtocolPluginFacade given a Communicator +// instance. +// +ICE_API ProtocolPluginFacadePtr getProtocolPluginFacade(const Ice::CommunicatorPtr&); + +// +// ProtocolPluginFacade wraps the internal operations that protocol +// plug-ins may need. +// +class ICE_API ProtocolPluginFacade : public ::IceUtil::Shared +{ +public: + + // + // Get the Communicator instance with which this facade is + // associated. + // + Ice::CommunicatorPtr getCommunicator() const; + + // + // Register an EndpointFactory. + // + void addEndpointFactory(const EndpointFactoryPtr&) const; + + // + // Get an EndpointFactory. + // + EndpointFactoryPtr getEndpointFactory(Ice::Short) const; + +private: + + ProtocolPluginFacade(const Ice::CommunicatorPtr&); + + friend ICE_API ProtocolPluginFacadePtr getProtocolPluginFacade(const Ice::CommunicatorPtr&); + + InstancePtr _instance; + Ice::CommunicatorPtr _communicator; +}; + +} + +#endif |