Ice 3.8
C++ API Reference
Loading...
Searching...
No Matches
Communicator.h
1// Copyright (c) ZeroC, Inc.
2
3#ifndef ICE_COMMUNICATOR_H
4#define ICE_COMMUNICATOR_H
5
6#include "CommunicatorF.h"
7#include "Config.h"
8#include "Connection.h"
9#include "FacetMap.h"
10#include "ImplicitContext.h"
11#include "Initialize.h"
12#include "InstanceF.h"
13#include "Plugin.h"
14#include "Properties.h"
15#include "Proxy.h"
16#include "SSL/ServerAuthenticationOptions.h"
17
18namespace Ice
19{
20 class LocatorPrx;
21 class RouterPrx;
22
23 /// Communicator is the central object in Ice. Its responsibilities include:
24 /// - creating and managing outgoing connections
25 /// - executing callbacks in its client thread pool
26 /// - creating and destroying object adapters
27 /// - loading plug-ins
28 /// - managing properties (configuration), retries, logging, instrumentation, and more.
29 /// You create a communicator with `Ice::initialize`, and it's usually the first object you create when programming
30 /// with Ice. You can create multiple communicators in a single program, but this is not common.
31 /// @see ::initialize(int&, const char*[], InitializationData)
32 /// @see ::initialize(InitializationData)
33 /// @headerfile Ice/Ice.h
34 class ICE_API Communicator final : public std::enable_shared_from_this<Communicator>
35 {
36 public:
37 ~Communicator();
38
39 /// Destroys this communicator. This function calls #shutdown implicitly. Calling #destroy destroys all
40 /// object adapters, and closes all outgoing connections. `destroy` waits for all outstanding dispatches to
41 /// complete before returning. This includes "bidirectional dispatches" that execute on outgoing connections.
42 /// @see CommunicatorHolder
43 void destroy() noexcept;
44
45 /// Destroys this communicator asynchronously.
46 /// @param completed The callback to call when the destruction is complete. This function must not throw any
47 /// exception.
48 /// @remark This function starts a thread to call #destroy and @p completed unless you call this function on a
49 /// communicator that has already been destroyed, in which case @p completed is called by the current thread.
50 /// @see #destroy
51 void destroyAsync(std::function<void()> completed) noexcept;
52
53 /// Shuts down this communicator. This function calls ObjectAdapter::deactivate on all object adapters created
54 /// by this communicator. Shutting down a communicator has no effect on outgoing connections.
55 /// @see #waitForShutdown
56 /// @see ObjectAdapter::deactivate
57 void shutdown() noexcept;
58
59 /// Waits for shutdown to complete. This function calls ObjectAdapter::waitForDeactivate on all object adapters
60 /// created by this communicator. In a client application that does not accept incoming connections, this
61 /// function returns as soon as another thread calls #shutdown or #destroy on this communicator.
62 /// @see #shutdown
63 void waitForShutdown() noexcept;
64
65 /// Waits until this communicator is shut down.
66 /// @param completed The callback to call when the shutdown is complete. This function must not throw any
67 /// exception.
68 /// @remark If you call this function on a communicator that has already been shut down, the callback is called
69 /// immediately by the current thread.
70 /// @see #shutdown
71 void waitForShutdownAsync(std::function<void()> completed) noexcept;
72
73 /// Checks whether or not #shutdown was called on this communicator.
74 /// @return `true` if #shutdown was called on this communicator, `false` otherwise.
75 /// @see #shutdown
76 [[nodiscard]] bool isShutdown() const noexcept;
77
78 /// Converts a stringified proxy into a proxy.
79 /// @tparam Prx The type of the proxy to return.
80 /// @param str The stringified proxy to convert into a proxy.
81 /// @return The proxy, or nullopt if @p str is an empty string.
82 /// @throws ParseException Thrown when @p str is not a valid proxy string.
83 /// @see #proxyToString
84 template<typename Prx = ObjectPrx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
85 std::optional<Prx> stringToProxy(std::string_view str) const
86 {
87 auto reference = _stringToProxy(str);
88 if (reference)
89 {
90 return Prx::_fromReference(reference);
91 }
92 else
93 {
94 return std::nullopt;
95 }
96 }
97
98 /// Converts a proxy into a string.
99 /// @param obj The proxy to convert into a stringified proxy.
100 /// @return The stringified proxy, or an empty string if `obj` is nullopt.
101 /// @see #stringToProxy
102 std::string proxyToString(const std::optional<ObjectPrx>& obj) const;
103
104 /// Converts a set of proxy properties into a proxy. The "base" name supplied in the @p property argument refers
105 /// to a property containing a stringified proxy, such as `MyProxy=id:tcp -h localhost -p 10000`. Additional
106 /// properties configure local settings for the proxy.
107 /// @tparam Prx The type of the proxy to return.
108 /// @param property The base property name.
109 /// @return The proxy, or nullopt if the property is not set.
110 template<typename Prx = ObjectPrx, std::enable_if_t<std::is_base_of_v<ObjectPrx, Prx>, bool> = true>
111 std::optional<Prx> propertyToProxy(std::string_view property) const
112 {
113 auto reference = _propertyToProxy(property);
114 if (reference)
115 {
116 return Prx::_fromReference(reference);
117 }
118 else
119 {
120 return std::nullopt;
121 }
122 }
123
124 /// Converts a proxy into a set of proxy properties.
125 /// @param proxy The proxy.
126 /// @param property The base property name.
127 /// @return The property set.
128 PropertyDict proxyToProperty(const std::optional<ObjectPrx>& proxy, std::string property) const;
129
130 /// Converts an identity into a string.
131 /// @param ident The identity to convert into a string.
132 /// @return The "stringified" identity.
133 [[nodiscard]] std::string identityToString(const Identity& ident) const;
134
135 /// Creates a new object adapter. The endpoints for the object adapter are taken from the property
136 /// `name.Endpoints`.
137 /// It is legal to create an object adapter with the empty string as its name. Such an object adapter is
138 /// accessible via bidirectional connections or by collocated invocations.
139 /// @param name The object adapter name.
140 /// @param serverAuthenticationOptions The SSL options for server connections.
141 /// @return The new object adapter.
142 /// @see #createObjectAdapterWithEndpoints
143 /// @see ObjectAdapter
144 /// @see Properties
145 /// @see SSL::OpenSSLServerAuthenticationOptions
146 /// @see SSL::SecureTransportServerAuthenticationOptions
147 /// @see SSL::SchannelServerAuthenticationOptions
149 std::string name,
150 std::optional<SSL::ServerAuthenticationOptions> serverAuthenticationOptions = std::nullopt);
151
152 /// Creates a new object adapter with endpoints. This function sets the property `name.Endpoints`, and then
153 /// calls #createObjectAdapter. It is provided as a convenience function. Calling this function with an empty
154 /// name will result in a UUID being generated for the name.
155 /// @param name The object adapter name.
156 /// @param endpoints The endpoints of the object adapter.
157 /// @param serverAuthenticationOptions The SSL options for server connections.
158 /// @return The new object adapter.
159 /// @see #createObjectAdapter
160 /// @see ObjectAdapter
161 /// @see Properties
162 /// @see SSL::OpenSSLServerAuthenticationOptions
163 /// @see SSL::SecureTransportServerAuthenticationOptions
164 /// @see SSL::SchannelServerAuthenticationOptions
166 std::string name,
167 std::string_view endpoints,
168 std::optional<SSL::ServerAuthenticationOptions> serverAuthenticationOptions = std::nullopt);
169
170 /// Creates a new object adapter with a router. This function creates a routed object adapter. Calling this
171 /// function with an empty name will result in a UUID being generated for the name.
172 /// @param name The object adapter name.
173 /// @param rtr The router.
174 /// @return The new object adapter.
175 /// @see #createObjectAdapter
176 /// @see ObjectAdapter
177 /// @see Properties
179
180 /// Gets the object adapter that is associated by default with new outgoing connections created by this
181 /// communicator. This function returns `nullptr` unless you set a non-null default object adapter using
182 /// #setDefaultObjectAdapter.
183 /// @return The object adapter associated by default with new outgoing connections.
184 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
185 /// @see Connection::getAdapter
187
188 /// Sets the object adapter that will be associated with new outgoing connections created by this
189 /// communicator. This function has no effect on existing outgoing connections, or on incoming connections.
190 /// @param adapter The object adapter to associate with new outgoing connections.
191 /// @see Connection::setAdapter
193
194 /// Gets the implicit context associated with this communicator.
195 /// @return The implicit context associated with this communicator; returns `nullptr` when the property
196 /// `Ice.ImplicitContext` is not set or is set to `None`.
197 [[nodiscard]] ImplicitContextPtr getImplicitContext() const noexcept;
198
199 /// Gets the properties of this communicator.
200 /// @return This communicator's properties.
201 [[nodiscard]] PropertiesPtr getProperties() const noexcept;
202
203 /// Gets the logger of this communicator.
204 /// @return This communicator's logger.
205 [[nodiscard]] LoggerPtr getLogger() const noexcept;
206
207 /// Adds a Slice loader to this communicator, after the Slice loader set in InitializationData (if any) and
208 /// after other Slice loaders added by this function.
209 /// @param loader The Slice loader to add.
210 /// @remarks This function is not thread-safe and should only be called right after the communicator is created.
211 /// It's provided for applications that cannot set the Slice loader in the InitializationData of the
212 /// communicator, such as IceBox services.
213 void addSliceLoader(SliceLoaderPtr loader) noexcept;
214
215 /// Gets the observer object of this communicator.
216 /// @return This communicator's observer object.
217 [[nodiscard]] Instrumentation::CommunicatorObserverPtr getObserver() const noexcept;
218
219 /// Gets the default router of this communicator.
220 /// @return The default router of this communicator.
221 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
222 /// @see #setDefaultRouter
223 [[nodiscard]] std::optional<RouterPrx> getDefaultRouter() const;
224
225 /// Sets the default router of this communicator. All newly created proxies will use this default router. This
226 /// function has no effect on existing proxies.
227 /// @param rtr The new default router. Use `nullopt` to remove the default router.
228 /// @see #getDefaultRouter
229 /// @see #createObjectAdapterWithRouter
230 /// @see Router
231 void setDefaultRouter(const std::optional<RouterPrx>& rtr);
232
233 /// Gets the default locator of this communicator.
234 /// @return The default locator of this communicator.
235 /// @see #setDefaultLocator
236 /// @see Locator
237 [[nodiscard]] std::optional<Ice::LocatorPrx> getDefaultLocator() const;
238
239 /// Sets the default locator of this communicator. All newly created proxies will use this default locator.
240 /// This function has no effect on existing proxies or object adapters.
241 /// @param loc The new default locator. Use `nullopt` to remove the default locator.
242 /// @see #getDefaultLocator
243 /// @see Locator
244 /// @see ObjectAdapter#setLocator
245 void setDefaultLocator(const std::optional<LocatorPrx>& loc);
246
247 /// Gets the plug-in manager of this communicator.
248 /// @return This communicator's plug-in manager.
249 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
250 /// @see PluginManager
251 [[nodiscard]] PluginManagerPtr getPluginManager() const;
252
253 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
254 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
255 /// are ignored.
256 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
257 /// over the wire.
259
260 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
261 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
262 /// are ignored.
263 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
264 /// over the wire.
265 /// @param exception The exception callback.
266 /// @param sent The sent callback.
267 /// @return A function that can be called to cancel the flush.
268 std::function<void()> flushBatchRequestsAsync(
269 CompressBatch compress,
270 std::function<void(std::exception_ptr)> exception,
271 std::function<void(bool)> sent = nullptr);
272
273 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
274 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
275 /// are ignored.
276 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
277 /// over the wire.
278 /// @return A future that becomes available when all batch requests have been sent.
279 [[nodiscard]] std::future<void> flushBatchRequestsAsync(CompressBatch compress);
280
281 /// Adds the Admin object with all its facets to the provided object adapter. If `Ice.Admin.ServerId`
282 /// is set and the provided object adapter has a Locator, #createAdmin registers the Admin's Process facet with
283 /// the Locator's LocatorRegistry.
284 /// @param adminAdapter The object adapter used to host the Admin object; if it is null and
285 /// `Ice.Admin.Endpoints` is set, this function uses the `Ice.Admin` object adapter, after creating and
286 /// activating this adapter.
287 /// @param adminId The identity of the Admin object.
288 /// @return A proxy to the main ("") facet of the Admin object.
289 /// @throws InitializationException Thrown when #createAdmin is called more than once.
290 /// @see #getAdmin
291 ObjectPrx createAdmin(const ObjectAdapterPtr& adminAdapter, const Identity& adminId);
292
293 /// Gets a proxy to the main facet of the Admin object. #getAdmin also creates the Admin object and creates and
294 /// activates the `Ice.Admin` object adapter to host this Admin object if `Ice.Admin.Endpoints` is set. The
295 /// identity of the Admin object created by getAdmin is `{value of Ice.Admin.InstanceName}/admin`, or
296 /// `{UUID}/admin` when `Ice.Admin.InstanceName` is not set. If `Ice.Admin.DelayCreation` is `0` or not set,
297 /// #getAdmin is called by the communicator initialization, after initialization of all plugins.
298 /// @return A proxy to the main ("") facet of the Admin object, or nullopt if no Admin object is configured.
299 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
300 /// @see #createAdmin
301 std::optional<ObjectPrx> getAdmin() const; // NOLINT(modernize-use-nodiscard)
302
303 /// Adds a new facet to the Admin object.
304 /// @param servant The servant that implements the new Admin facet.
305 /// @param facet The name of the new Admin facet.
306 /// @throws AlreadyRegisteredException Thrown when a facet with the same name is already registered.
307 void addAdminFacet(ObjectPtr servant, std::string facet);
308
309 /// Removes a facet from the Admin object.
310 /// @param facet The name of the Admin facet.
311 /// @return The servant associated with this Admin facet.
312 /// @throws NotRegisteredException Thrown when no facet with the given name is registered.
313 ObjectPtr removeAdminFacet(std::string_view facet);
314
315 /// Returns a facet of the Admin object.
316 /// @tparam T The type of the facet to return.
317 /// @param facet The name of the Admin facet.
318 /// @return The servant associated with this Admin facet, or null if no facet is registered with the given name.
319 template<typename T = Object, std::enable_if_t<std::is_base_of_v<Object, T>, bool> = true>
320 std::shared_ptr<T> findAdminFacet(std::string_view facet)
321 {
322 return std::dynamic_pointer_cast<T>(_findAdminFacet(facet));
323 }
324
325 /// Returns a map of all facets of the Admin object.
326 /// @return A collection containing all the facet names and servants of the Admin object.
327 /// @see #findAdminFacet
329
330 private:
331 Communicator() = default;
332
333 static CommunicatorPtr create(InitializationData);
334
335 // Certain initialization tasks need to be completed after the constructor.
336 void finishSetup(int&, const char*[]);
337
338 [[nodiscard]] IceInternal::ReferencePtr _stringToProxy(std::string_view str) const;
339 [[nodiscard]] IceInternal::ReferencePtr _propertyToProxy(std::string_view property) const;
340 [[nodiscard]] ObjectPtr _findAdminFacet(std::string_view facet);
341
342 /// @cond INTERNAL
343 friend ICE_API_FRIEND CommunicatorPtr initialize(int&, const char*[], InitializationData);
344 friend ICE_API_FRIEND CommunicatorPtr initialize(InitializationData);
345 /// @endcond
346
347 friend ICE_API_FRIEND IceInternal::InstancePtr IceInternal::getInstance(const Ice::CommunicatorPtr&);
348 friend ICE_API_FRIEND IceInternal::TimerPtr IceInternal::getInstanceTimer(const Ice::CommunicatorPtr&);
349
350 const IceInternal::InstancePtr _instance;
351 };
352
353 /// A helper class that uses Resource Acquisition Is Initialization (RAII) to hold a communicator instance, and
354 /// automatically destroy this instance when the holder goes out of scope.
355 /// @headerfile Ice/Ice.h
356 class ICE_API CommunicatorHolder
357 {
358 public:
359 /// Default constructor.
361
362 /// Constructs a CommunicatorHolder that adopts an existing communicator.
363 /// @param communicator The communicator to adopt.
365
366 /// Constructs a CommunicatorHolder for a new communicator created using an `Ice::initialize` overload.
367 /// @tparam T The types of the arguments to pass to the `Ice::initialize` function.
368 /// @param args The arguments to pass to the `Ice::initialize` function.
369 template<class... T>
370 explicit CommunicatorHolder(T&&... args) : _communicator(std::move(initialize(std::forward<T>(args)...)))
371 {
372 }
373
374 /// Move constructor. Constructs a CommunicatorHolder with the contents of @p other using move semantics.
375 /// @param other The holder to move from.
377
378 CommunicatorHolder(const CommunicatorHolder&) = delete;
379
380 /// Assignment operator. Destroys the current communicator (if any) and adopts a new communicator.
381 /// @param communicator The communicator to adopt.
383
384 CommunicatorHolder& operator=(const CommunicatorHolder&) noexcept = delete;
385
386 /// Move assignment operator. Destroys the current communicator (if any) and adopts a new communicator.
387 /// @param holder The holder from which to adopt a communicator.
389
390 /// Determines whether this holder holds a communicator.
391 /// @return `true` if the holder currently a holds communicator, `false` otherwise.
392 explicit operator bool() const noexcept { return _communicator != nullptr; }
393
395
396 /// Gets the communicator.
397 /// @return The communicator held by this holder, or null if the holder is empty.
398 [[nodiscard]] const CommunicatorPtr& communicator() const noexcept { return _communicator; }
399
400 /// Gets the communicator.
401 /// @return The communicator held by this holder, or null if the holder is empty.
402 const CommunicatorPtr& operator->() const noexcept { return _communicator; }
403
404 /// Gets the communicator and clears the reference held by the holder.
405 /// @return The communicator held by this holder, or null if the holder is empty.
406 CommunicatorPtr release() noexcept { return std::move(_communicator); }
407
408 private:
409 CommunicatorPtr _communicator;
410 };
411}
412
413#endif
CommunicatorHolder(CommunicatorHolder &&other)=default
Move constructor.
CommunicatorHolder & operator=(CommunicatorHolder &&holder) noexcept
Move assignment operator.
const CommunicatorPtr & operator->() const noexcept
Gets the communicator.
CommunicatorHolder & operator=(CommunicatorPtr communicator) noexcept
Assignment operator.
CommunicatorPtr release() noexcept
Gets the communicator and clears the reference held by the holder.
CommunicatorHolder()=default
Default constructor.
CommunicatorHolder(T &&... args)
Constructs a CommunicatorHolder for a new communicator created using an Ice::initialize overload.
CommunicatorHolder(CommunicatorPtr communicator) noexcept
Constructs a CommunicatorHolder that adopts an existing communicator.
const CommunicatorPtr & communicator() const noexcept
Gets the communicator.
A helper class that uses Resource Acquisition Is Initialization (RAII) to hold a communicator instanc...
void waitForShutdown() noexcept
Waits for shutdown to complete.
void setDefaultLocator(const std::optional< LocatorPrx > &loc)
Sets the default locator of this communicator.
ObjectAdapterPtr createObjectAdapter(std::string name, std::optional< SSL::ServerAuthenticationOptions > serverAuthenticationOptions=std::nullopt)
Creates a new object adapter.
void setDefaultObjectAdapter(ObjectAdapterPtr adapter)
Sets the object adapter that will be associated with new outgoing connections created by this communi...
std::optional< Ice::LocatorPrx > getDefaultLocator() const
Gets the default locator of this communicator.
std::string identityToString(const Identity &ident) const
Converts an identity into a string.
std::string proxyToString(const std::optional< ObjectPrx > &obj) const
Converts a proxy into a string.
void flushBatchRequests(CompressBatch compress)
Flushes any pending batch requests of this communicator.
ObjectAdapterPtr getDefaultObjectAdapter() const
Gets the object adapter that is associated by default with new outgoing connections created by this c...
PluginManagerPtr getPluginManager() const
Gets the plug-in manager of this communicator.
void waitForShutdownAsync(std::function< void()> completed) noexcept
Waits until this communicator is shut down.
std::function< void()> flushBatchRequestsAsync(CompressBatch compress, std::function< void(std::exception_ptr)> exception, std::function< void(bool)> sent=nullptr)
Flushes any pending batch requests of this communicator.
ObjectAdapterPtr createObjectAdapterWithEndpoints(std::string name, std::string_view endpoints, std::optional< SSL::ServerAuthenticationOptions > serverAuthenticationOptions=std::nullopt)
Creates a new object adapter with endpoints.
std::shared_ptr< T > findAdminFacet(std::string_view facet)
Returns a facet of the Admin object.
ObjectPrx createAdmin(const ObjectAdapterPtr &adminAdapter, const Identity &adminId)
Adds the Admin object with all its facets to the provided object adapter.
FacetMap findAllAdminFacets()
Returns a map of all facets of the Admin object.
ObjectPtr removeAdminFacet(std::string_view facet)
Removes a facet from the Admin object.
std::optional< RouterPrx > getDefaultRouter() const
Gets the default router of this communicator.
Instrumentation::CommunicatorObserverPtr getObserver() const noexcept
Gets the observer object of this communicator.
ObjectAdapterPtr createObjectAdapterWithRouter(std::string name, RouterPrx rtr)
Creates a new object adapter with a router.
PropertyDict proxyToProperty(const std::optional< ObjectPrx > &proxy, std::string property) const
Converts a proxy into a set of proxy properties.
void shutdown() noexcept
Shuts down this communicator.
std::optional< Prx > propertyToProxy(std::string_view property) const
Converts a set of proxy properties into a proxy.
void destroyAsync(std::function< void()> completed) noexcept
Destroys this communicator asynchronously.
std::optional< Prx > stringToProxy(std::string_view str) const
Converts a stringified proxy into a proxy.
std::optional< ObjectPrx > getAdmin() const
Gets a proxy to the main facet of the Admin object.
ImplicitContextPtr getImplicitContext() const noexcept
Gets the implicit context associated with this communicator.
void addSliceLoader(SliceLoaderPtr loader) noexcept
Adds a Slice loader to this communicator, after the Slice loader set in InitializationData (if any) a...
void addAdminFacet(ObjectPtr servant, std::string facet)
Adds a new facet to the Admin object.
void setDefaultRouter(const std::optional< RouterPrx > &rtr)
Sets the default router of this communicator.
PropertiesPtr getProperties() const noexcept
Gets the properties of this communicator.
void destroy() noexcept
Destroys this communicator.
bool isShutdown() const noexcept
Checks whether or not shutdown was called on this communicator.
LoggerPtr getLogger() const noexcept
Gets the logger of this communicator.
Client applications use the Locator object to resolve Ice indirect proxies.
Definition Locator.h:38
The base class for all Ice proxies.
Definition Proxy.h:232
The base class for servants.
Definition Object.h:21
Represents an intermediary object that routes requests and replies between clients and Ice objects th...
Definition Router.h:35
Observers for objects created by the Ice runtime.
std::shared_ptr< Communicator > CommunicatorPtr
A shared pointer to a Communicator.
std::shared_ptr< ObjectAdapter > ObjectAdapterPtr
A shared pointer to an ObjectAdapter.
std::shared_ptr< Properties > PropertiesPtr
A shared pointer to a Properties.
Definition PropertiesF.h:13
std::shared_ptr< SliceLoader > SliceLoaderPtr
A shared pointer to a SliceLoader.
Definition SliceLoader.h:44
std::shared_ptr< PluginManager > PluginManagerPtr
A shared pointer to a PluginManager.
Definition Plugin.h:70
std::shared_ptr< Logger > LoggerPtr
A shared pointer to a Logger.
Definition Logger.h:16
std::shared_ptr< Object > ObjectPtr
A shared pointer to an Object.
Definition ObjectF.h:13
std::shared_ptr< ImplicitContext > ImplicitContextPtr
A shared pointer to an ImplicitContext.
CommunicatorPtr initialize(int &argc, const char *argv[], InitializationData initData={})
Creates a new communicator.
std::map< std::string, std::string, std::less<> > PropertyDict
A simple collection of properties, represented as a dictionary of key/value pairs.
CompressBatch
Represents batch compression options when flushing queued batch requests.
Definition Connection.h:30
std::map< std::string, ObjectPtr, std::less<> > FacetMap
A mapping from facet name to servant.
Definition FacetMap.h:13
The Ice RPC framework.
Definition SampleEvent.h:59
Represents the identity of an Ice object.
Definition Identity.h:40
Represents a set of options that you can specify when initializing a communicator.
Definition Initialize.h:65