16#ifndef __Ice_Plugin_h__
17#define __Ice_Plugin_h__
33#ifndef ICE_IGNORE_VERSION
34# if ICE_INT_VERSION / 100 != 307
35# error Ice version mismatch!
37# if ICE_INT_VERSION % 100 >= 50
38# error Beta header file detected
40# if ICE_INT_VERSION % 100 < 11
41# error Ice patch level mismatch!
46# if defined(ICE_STATIC_LIBS)
48# elif defined(ICE_API_EXPORTS)
49# define ICE_API ICE_DECLSPEC_EXPORT
51# define ICE_API ICE_DECLSPEC_IMPORT
55#ifdef ICE_CPP11_MAPPING
138 virtual
void addPlugin(const ::std::
string& name, const ::std::shared_ptr<
Plugin>& pi) = 0;
159using PluginPtr = ::std::shared_ptr<Plugin>;
161using PluginManagerPtr = ::std::shared_ptr<PluginManager>;
173ICE_API LocalObject* upCast(Plugin*);
175typedef ::IceInternal::Handle< Plugin> PluginPtr;
179ICE_API LocalObject* upCast(PluginManager*);
181typedef ::IceInternal::Handle< PluginManager> PluginManagerPtr;
197class ICE_API Plugin :
public virtual LocalObject
205#ifdef ICE_CPP11_COMPILER
207 Plugin(
const Plugin&) =
default;
208 Plugin& operator=(
const Plugin&) =
default;
219 virtual void destroy() = 0;
223inline bool operator==(
const Plugin& lhs,
const Plugin& rhs)
225 return static_cast<const LocalObject&
>(lhs) ==
static_cast<const LocalObject&
>(rhs);
228inline bool operator<(
const Plugin& lhs,
const Plugin& rhs)
230 return static_cast<const LocalObject&
>(lhs) <
static_cast<const LocalObject&
>(rhs);
239class ICE_API PluginManager :
public virtual LocalObject
243 typedef PluginManagerPtr PointerType;
245 virtual ~PluginManager();
247#ifdef ICE_CPP11_COMPILER
248 PluginManager() =
default;
249 PluginManager(
const PluginManager&) =
default;
250 PluginManager& operator=(
const PluginManager&) =
default;
263 virtual void initializePlugins() = 0;
278 virtual PluginPtr getPlugin(const ::std::
string& name) = 0;
286 virtual
void addPlugin(const ::std::
string& name, const PluginPtr& pi) = 0;
295inline
bool operator==(const PluginManager& lhs, const PluginManager& rhs)
297 return static_cast<const LocalObject&
>(lhs) ==
static_cast<const LocalObject&
>(rhs);
300inline bool operator<(
const PluginManager& lhs,
const PluginManager& rhs)
302 return static_cast<const LocalObject&
>(lhs) <
static_cast<const LocalObject&
>(rhs);
#define ICE_API
Definition Config.h:197
#define ICE_NOEXCEPT
Definition Config.h:128
#define ICE_MEMBER(API)
Definition Config.h:177
Each communicator has a plug-in manager to administer the set of plug-ins.
Definition Plugin.h:100
virtual void initializePlugins()=0
Initialize the configured plug-ins.
virtual void destroy() noexcept=0
Called when the communicator is being destroyed.
virtual ::std::shared_ptr<::Ice::Plugin > getPlugin(const ::std::string &name)=0
Obtain a plug-in by name.
virtual::Ice::StringSeq getPlugins() noexcept=0
Get a list of plugins installed.
virtual void addPlugin(const ::std::string &name, const ::std::shared_ptr< Plugin > &pi)=0
Install a new plug-in.
A communicator plug-in.
Definition Plugin.h:78
virtual void destroy()=0
Called when the communicator is being destroyed.
virtual void initialize()=0
Perform any necessary initialization steps.
::std::shared_ptr< Plugin > PluginPtr
Definition OpenSSL.h:141
Definition BuiltinSequences.h:56
CommunicatorPtr initialize(int &argc, const char *argv[], const InitializationData &initData=InitializationData(), int version=30711)
Initializes a new communicator.
bool operator<(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition Comparable.h:136
::std::vector<::std::string > StringSeq
A sequence of strings.
Definition BuiltinSequences.h:96
bool operator==(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition Comparable.h:184