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*[])
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`.
106 /// Additional 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 Properties
161 /// @see SSL::OpenSSLServerAuthenticationOptions
162 /// @see SSL::SecureTransportServerAuthenticationOptions
163 /// @see SSL::SchannelServerAuthenticationOptions
165 std::string name,
166 std::string_view endpoints,
167 std::optional<SSL::ServerAuthenticationOptions> serverAuthenticationOptions = std::nullopt);
168
169 /// Creates a new object adapter with a router. This function creates a routed object adapter. Calling this
170 /// function with an empty name will result in a UUID being generated for the name.
171 /// @param name The object adapter name.
172 /// @param rtr The router.
173 /// @return The new object adapter.
174 /// @see #createObjectAdapter
175 /// @see Properties
177
178 /// Gets the object adapter that is associated by default with new outgoing connections created by this
179 /// communicator. This function returns `nullptr` unless you set a non-null default object adapter using
180 /// #setDefaultObjectAdapter.
181 /// @return The object adapter associated by default with new outgoing connections.
182 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
183 /// @see Connection::getAdapter
185
186 /// Sets the object adapter that will be associated with new outgoing connections created by this
187 /// communicator. This function has no effect on existing outgoing connections, or on incoming connections.
188 /// @param adapter The object adapter to associate with new outgoing connections.
189 /// @see Connection::setAdapter
191
192 /// Gets the implicit context associated with this communicator.
193 /// @return The implicit context associated with this communicator; returns `nullptr` when the property
194 /// `Ice.ImplicitContext` is not set or is set to `None`.
195 [[nodiscard]] ImplicitContextPtr getImplicitContext() const noexcept;
196
197 /// Gets the properties of this communicator.
198 /// @return This communicator's properties.
199 [[nodiscard]] PropertiesPtr getProperties() const noexcept;
200
201 /// Gets the logger of this communicator.
202 /// @return This communicator's logger.
203 [[nodiscard]] LoggerPtr getLogger() const noexcept;
204
205 /// Adds a Slice loader to this communicator, after the Slice loader set in InitializationData (if any) and
206 /// after other Slice loaders added by this function.
207 /// @param loader The Slice loader to add.
208 /// @remarks This function is not thread-safe and should only be called right after the communicator is created.
209 /// It's provided for applications that cannot set the Slice loader in the InitializationData of the
210 /// communicator, such as IceBox services.
211 void addSliceLoader(SliceLoaderPtr loader) noexcept;
212
213 /// Gets the observer object of this communicator.
214 /// @return This communicator's observer object.
215 [[nodiscard]] Instrumentation::CommunicatorObserverPtr getObserver() const noexcept;
216
217 /// Gets the default router of this communicator.
218 /// @return The default router of this communicator.
219 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
220 /// @see #setDefaultRouter
221 [[nodiscard]] std::optional<RouterPrx> getDefaultRouter() const;
222
223 /// Sets the default router of this communicator. All newly created proxies will use this default router. This
224 /// function has no effect on existing proxies.
225 /// @param rtr The new default router. Use `nullopt` to remove the default router.
226 /// @see #getDefaultRouter
227 /// @see #createObjectAdapterWithRouter
228 /// @see Router
229 void setDefaultRouter(const std::optional<RouterPrx>& rtr);
230
231 /// Gets the default locator of this communicator.
232 /// @return The default locator of this communicator.
233 /// @see #setDefaultLocator
234 /// @see Locator
235 [[nodiscard]] std::optional<Ice::LocatorPrx> getDefaultLocator() const;
236
237 /// Sets the default locator of this communicator. All newly created proxies will use this default locator.
238 /// This function has no effect on existing proxies or object adapters.
239 /// @param loc The new default locator. Use `nullopt` to remove the default locator.
240 /// @see #getDefaultLocator
241 /// @see Locator
242 /// @see ObjectAdapter#setLocator
243 void setDefaultLocator(const std::optional<LocatorPrx>& loc);
244
245 /// Gets the plug-in manager of this communicator.
246 /// @return This communicator's plug-in manager.
247 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
248 /// @see PluginManager
249 [[nodiscard]] PluginManagerPtr getPluginManager() const;
250
251 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
252 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
253 /// are ignored.
254 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
255 /// over the wire.
257
258 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
259 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
260 /// are ignored.
261 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
262 /// over the wire.
263 /// @param exception The exception callback.
264 /// @param sent The sent callback.
265 /// @return A function that can be called to cancel the flush.
266 std::function<void()> flushBatchRequestsAsync(
267 CompressBatch compress,
268 std::function<void(std::exception_ptr)> exception,
269 std::function<void(bool)> sent = nullptr);
270
271 /// Flushes any pending batch requests of this communicator. This means all batch requests invoked on fixed
272 /// proxies for all connections associated with the communicator. Errors that occur while flushing a connection
273 /// are ignored.
274 /// @param compress Specifies whether or not the queued batch requests should be compressed before being sent
275 /// over the wire.
276 /// @return A future that becomes available when all batch requests have been sent.
277 [[nodiscard]] std::future<void> flushBatchRequestsAsync(CompressBatch compress);
278
279 /// Adds the Admin object with all its facets to the provided object adapter. If `Ice.Admin.ServerId`
280 /// is set and the provided object adapter has a Locator, #createAdmin registers the Admin's Process facet with
281 /// the Locator's LocatorRegistry.
282 /// @param adminAdapter The object adapter used to host the Admin object; if it is null and
283 /// `Ice.Admin.Endpoints` is set, this function uses the `Ice.Admin` object adapter, after creating and
284 /// activating this adapter.
285 /// @param adminId The identity of the Admin object.
286 /// @return A proxy to the main ("") facet of the Admin object.
287 /// @throws InitializationException Thrown when #createAdmin is called more than once.
288 /// @see #getAdmin
289 ObjectPrx createAdmin(const ObjectAdapterPtr& adminAdapter, const Identity& adminId);
290
291 /// Gets a proxy to the main facet of the Admin object. #getAdmin also creates the Admin object and creates and
292 /// activates the `Ice.Admin` object adapter to host this Admin object if `Ice.Admin.Endpoints` is set. The
293 /// identity of the Admin object created by getAdmin is `{value of Ice.Admin.InstanceName}/admin`, or
294 /// `{UUID}/admin` when `Ice.Admin.InstanceName` is not set. If `Ice.Admin.DelayCreation` is `0` or not set,
295 /// #getAdmin is called by the communicator initialization, after initialization of all plugins.
296 /// @return A proxy to the main ("") facet of the Admin object, or nullopt if no Admin object is configured.
297 /// @throws CommunicatorDestroyedException Thrown when the communicator has been destroyed.
298 /// @see #createAdmin
299 std::optional<ObjectPrx> getAdmin() const; // NOLINT(modernize-use-nodiscard)
300
301 /// Adds a new facet to the Admin object.
302 /// @param servant The servant that implements the new Admin facet.
303 /// @param facet The name of the new Admin facet.
304 /// @throws AlreadyRegisteredException Thrown when a facet with the same name is already registered.
305 void addAdminFacet(ObjectPtr servant, std::string facet);
306
307 /// Removes a facet from the Admin object.
308 /// @param facet The name of the Admin facet.
309 /// @return The servant associated with this Admin facet.
310 /// @throws NotRegisteredException Thrown when no facet with the given name is registered.
311 ObjectPtr removeAdminFacet(std::string_view facet);
312
313 /// Returns a facet of the Admin object.
314 /// @tparam T The type of the facet to return.
315 /// @param facet The name of the Admin facet.
316 /// @return The servant associated with this Admin facet, or null if no facet is registered with the given name.
317 template<typename T = Object, std::enable_if_t<std::is_base_of_v<Object, T>, bool> = true>
318 std::shared_ptr<T> findAdminFacet(std::string_view facet)
319 {
320 return std::dynamic_pointer_cast<T>(_findAdminFacet(facet));
321 }
322
323 /// Returns a map of all facets of the Admin object.
324 /// @return A collection containing all the facet names and servants of the Admin object.
325 /// @see #findAdminFacet
327
328 private:
329 Communicator() = default;
330
331 static CommunicatorPtr create(InitializationData);
332
333 // Certain initialization tasks need to be completed after the constructor.
334 void finishSetup();
335
336 [[nodiscard]] IceInternal::ReferencePtr _stringToProxy(std::string_view str) const;
337 [[nodiscard]] IceInternal::ReferencePtr _propertyToProxy(std::string_view property) const;
338 [[nodiscard]] ObjectPtr _findAdminFacet(std::string_view facet);
339
340 /// @cond INTERNAL
341 friend ICE_API_FRIEND CommunicatorPtr initialize(int&, const char*[], InitializationData);
342 friend ICE_API_FRIEND CommunicatorPtr initialize(InitializationData);
343 /// @endcond
344
345 friend ICE_API_FRIEND IceInternal::InstancePtr IceInternal::getInstance(const Ice::CommunicatorPtr&);
346 friend ICE_API_FRIEND IceInternal::TimerPtr IceInternal::getInstanceTimer(const Ice::CommunicatorPtr&);
347
348 const IceInternal::InstancePtr _instance;
349 };
350
351 /// A helper class that uses Resource Acquisition Is Initialization (RAII) to hold a communicator instance, and
352 /// automatically destroy this instance when the holder goes out of scope.
353 /// @headerfile Ice/Ice.h
354 class ICE_API CommunicatorHolder
355 {
356 public:
357 /// Default constructor.
359
360 /// Constructs a CommunicatorHolder that adopts an existing communicator.
361 /// @param communicator The communicator to adopt.
363
364 /// Constructs a CommunicatorHolder for a new communicator created using an `Ice::initialize` overload.
365 /// @tparam T The types of the arguments to pass to the `Ice::initialize` function.
366 /// @param args The arguments to pass to the `Ice::initialize` function.
367 template<class... T>
368 explicit CommunicatorHolder(T&&... args) : _communicator(std::move(initialize(std::forward<T>(args)...)))
369 {
370 }
371
372 /// Move constructor. Constructs a CommunicatorHolder with the contents of @p other using move semantics.
373 /// @param other The holder to move from.
375
376 CommunicatorHolder(const CommunicatorHolder&) = delete;
377
378 /// Assignment operator. Destroys the current communicator (if any) and adopts a new communicator.
379 /// @param communicator The communicator to adopt.
381
382 CommunicatorHolder& operator=(const CommunicatorHolder&) noexcept = delete;
383
384 /// Move assignment operator. Destroys the current communicator (if any) and adopts a new communicator.
385 /// @param holder The holder from which to adopt a communicator.
387
388 /// Determines whether this holder holds a communicator.
389 /// @return `true` if the holder currently a holds communicator, `false` otherwise.
390 explicit operator bool() const noexcept { return _communicator != nullptr; }
391
393
394 /// Gets the communicator.
395 /// @return The communicator held by this holder, or nullptr if the holder is empty.
396 [[nodiscard]] const CommunicatorPtr& communicator() const noexcept { return _communicator; }
397
398 /// Gets the communicator.
399 /// @return The communicator held by this holder, or nullptr if the holder is empty.
400 const CommunicatorPtr& operator->() const noexcept { return _communicator; }
401
402 /// Gets the communicator and clears the reference held by the holder.
403 /// @return The communicator held by this holder, or null if the holder is empty.
404 CommunicatorPtr release() noexcept { return std::move(_communicator); }
405
406 private:
407 CommunicatorPtr _communicator;
408 };
409}
410
411#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:39
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:36
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.
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
CommunicatorPtr initialize(InitializationData initData={})
Creates a new communicator.
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:60
Represents the identity of an Ice object.
Definition Identity.h:41
Represents a set of options that you can specify when initializing a communicator.
Definition Initialize.h:28