Ice 3.7 C++11 API Reference
Proxy.h
Go to the documentation of this file.
1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #ifndef ICE_PROXY_H
6 #define ICE_PROXY_H
7 
8 #include <IceUtil/Shared.h>
9 #include <IceUtil/Mutex.h>
10 #include <Ice/ProxyF.h>
11 #include <Ice/ProxyFactoryF.h>
12 #include <Ice/ConnectionIF.h>
13 #include <Ice/RequestHandlerF.h>
14 #include <Ice/EndpointF.h>
15 #include <Ice/EndpointTypes.h>
16 #include <Ice/Object.h>
17 #include <Ice/ObjectAdapterF.h>
18 #include <Ice/ReferenceF.h>
19 #include <Ice/BatchRequestQueueF.h>
20 #include <Ice/AsyncResult.h>
21 //#include <Ice/RouterF.h> // Can't include RouterF.h here, otherwise we have cyclic includes
22 //#include <Ice/LocatorF.h> // Can't include LocatorF.h here, otherwise we have cyclic includes
23 #include <Ice/Current.h>
24 #include <Ice/CommunicatorF.h>
25 #include <Ice/OutgoingAsync.h>
26 #include <Ice/LocalException.h>
27 #include <iosfwd>
28 
29 namespace Ice
30 {
31 
33 ICE_API extern const Context noExplicitContext;
34 
35 }
36 
37 #if defined(_MSC_VER) && (_MSC_VER <= 1600)
38 //
39 // COMPILERFIX v90 and v100 get confused with namespaces and complains that
40 // ::Ice::noExplicitContext isn't defined in IceProxy namespace.
41 //
42 namespace IceProxy
43 {
44 
45 namespace Ice
46 {
47 
50 
51 }
52 
53 }
54 #endif
55 
56 namespace IceInternal
57 {
58 
59 //
60 // Class for handling the proxy's begin_ice_flushBatchRequest request.
61 //
62 class ICE_API ProxyFlushBatchAsync : public ProxyOutgoingAsyncBase
63 {
64 public:
65 
66  ProxyFlushBatchAsync(const Ice::ObjectPrxPtr&);
67 
68  virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool);
69  virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*);
70 
71  void invoke(const std::string&);
72 
73 private:
74 
75  int _batchRequestNum;
76 };
77 typedef IceUtil::Handle<ProxyFlushBatchAsync> ProxyFlushBatchAsyncPtr;
78 
79 //
80 // Class for handling the proxy's begin_ice_getConnection request.
81 //
82 class ICE_API ProxyGetConnection : public ProxyOutgoingAsyncBase
83 {
84 public:
85 
86  ProxyGetConnection(const Ice::ObjectPrxPtr&);
87 
88  virtual AsyncStatus invokeRemote(const Ice::ConnectionIPtr&, bool, bool);
89  virtual AsyncStatus invokeCollocated(CollocatedRequestHandler*);
90 
91  virtual Ice::ConnectionPtr getConnection() const;
92 
93  void invoke(const std::string&);
94 };
95 typedef IceUtil::Handle<ProxyGetConnection> ProxyGetConnectionPtr;
96 
97 }
98 
99 #ifdef ICE_CPP11_MAPPING // C++11 mapping
100 
101 namespace IceInternal
102 {
103 
104 template<typename P>
105 ::std::shared_ptr<P> createProxy()
106 {
107  return ::std::shared_ptr<P>(new P());
108 }
109 
110 inline ::std::pair<const Ice::Byte*, const Ice::Byte*>
111 makePair(const Ice::ByteSeq& seq)
112 {
113  if(seq.empty())
114  {
115  return { nullptr, nullptr };
116  }
117  else
118  {
119  return { seq.data(), seq.data() + seq.size() };
120  }
121 }
122 
123 template<typename R>
124 class InvokeOutgoingAsyncT : public OutgoingAsync
125 {
126 public:
127 
128  using OutgoingAsync::OutgoingAsync;
129 
130  void
131  invoke(const std::string& operation,
132  Ice::OperationMode mode,
133  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
134  const Ice::Context& context)
135  {
136  _read = [](bool ok, Ice::InputStream* stream)
137  {
138  const ::Ice::Byte* encaps;
139  ::Ice::Int sz;
140  stream->readEncapsulation(encaps, sz);
141  return R { ok, { encaps, encaps + sz } };
142  };
143 
144  try
145  {
146  prepare(operation, mode, context);
147  if(inParams.first == inParams.second)
148  {
149  _os.writeEmptyEncapsulation(_encoding);
150  }
151  else
152  {
153  _os.writeEncapsulation(inParams.first, static_cast<Ice::Int>(inParams.second - inParams.first));
154  }
155  OutgoingAsync::invoke(operation);
156  }
157  catch(const Ice::Exception& ex)
158  {
159  abort(ex);
160  }
161  }
162 
163 protected:
164 
165  std::function<R(bool, Ice::InputStream*)> _read;
166 };
167 
168 template<typename R>
169 class InvokeLambdaOutgoing : public InvokeOutgoingAsyncT<R>, public LambdaInvoke
170 {
171 public:
172 
173  InvokeLambdaOutgoing(const ::std::shared_ptr<::Ice::ObjectPrx>& proxy,
174  ::std::function<void(R)> response,
175  ::std::function<void(::std::exception_ptr)> ex,
176  ::std::function<void(bool)> sent) :
177  InvokeOutgoingAsyncT<R>(proxy, false), LambdaInvoke(::std::move(ex), ::std::move(sent))
178  {
179  if(response)
180  {
181 #if ICE_CPLUSPLUS >= 201402L
182  // Move capture with C++14
183  _response = [this, response = std::move(response)](bool ok)
184 #else
185  _response = [this, response](bool ok)
186 #endif
187  {
188  if(this->_is.b.empty())
189  {
190  response(R { ok, { 0, 0 }});
191  }
192  else
193  {
194  response(this->_read(ok, &this->_is));
195  }
196  };
197  }
198  }
199 };
200 
201 template<typename P, typename R>
202 class InvokePromiseOutgoing : public InvokeOutgoingAsyncT<R>, public PromiseInvoke<P>
203 {
204 public:
205 
206  InvokePromiseOutgoing(const std::shared_ptr<Ice::ObjectPrx>& proxy, bool synchronous) :
207  InvokeOutgoingAsyncT<R>(proxy, false)
208  {
209  this->_synchronous = synchronous;
210  this->_response = [this](bool ok)
211  {
212  if(this->_is.b.empty())
213  {
214  this->_promise.set_value(R { ok, { 0, 0 }});
215  }
216  else
217  {
218  this->_promise.set_value(this->_read(ok, &this->_is));
219  }
220  };
221  }
222 
223  virtual bool handleSent(bool done, bool) override
224  {
225  if(done)
226  {
227  this->_promise.set_value(R { true, { 0, 0 }});
228  }
229  return false;
230  }
231 };
232 
233 class ProxyGetConnectionLambda : public ProxyGetConnection, public LambdaInvoke
234 {
235 public:
236 
237  ProxyGetConnectionLambda(const ::std::shared_ptr<::Ice::ObjectPrx>& proxy,
238  ::std::function<void(::std::shared_ptr<Ice::Connection>)> response,
239  ::std::function<void(::std::exception_ptr)> ex,
240  ::std::function<void(bool)> sent) :
241  ProxyGetConnection(proxy), LambdaInvoke(::std::move(ex), ::std::move(sent))
242  {
243 #if ICE_CPLUSPLUS >= 201402L
244  _response = [&, response = std::move(response)](bool)
245 #else
246  _response = [&, response](bool)
247 #endif
248  {
249  response(getConnection());
250  };
251  }
252 };
253 
254 template<typename P>
255 class ProxyGetConnectionPromise : public ProxyGetConnection, public PromiseInvoke<P>
256 {
257 public:
258 
259  ProxyGetConnectionPromise(const ::std::shared_ptr<::Ice::ObjectPrx>& proxy) : ProxyGetConnection(proxy)
260  {
261  this->_response = [&](bool)
262  {
263  this->_promise.set_value(getConnection());
264  };
265  }
266 };
267 
268 class ProxyFlushBatchLambda : public ProxyFlushBatchAsync, public LambdaInvoke
269 {
270 public:
271 
272  ProxyFlushBatchLambda(const ::std::shared_ptr<::Ice::ObjectPrx>& proxy,
273  ::std::function<void(::std::exception_ptr)> ex,
274  ::std::function<void(bool)> sent) :
275  ProxyFlushBatchAsync(proxy), LambdaInvoke(::std::move(ex), ::std::move(sent))
276  {
277  }
278 };
279 
280 template<typename P>
281 class ProxyFlushBatchPromise : public ProxyFlushBatchAsync, public PromiseInvoke<P>
282 {
283 public:
284 
285  using ProxyFlushBatchAsync::ProxyFlushBatchAsync;
286 
287  virtual bool handleSent(bool, bool) override
288  {
289  this->_promise.set_value();
290  return false;
291  }
292 };
293 
294 }
295 
296 namespace Ice
297 {
298 
299 class RouterPrx;
301 using RouterPrxPtr = ::std::shared_ptr<::Ice::RouterPrx>;
303 
304 class LocatorPrx;
306 using LocatorPrxPtr = ::std::shared_ptr<::Ice::LocatorPrx>;
308 
309 class LocalException;
310 class OutputStream;
311 
316 class ICE_API ObjectPrx : public ::std::enable_shared_from_this<ObjectPrx>
317 {
318 public:
319 
320  virtual ~ObjectPrx() = default;
321 
322  friend ICE_API bool operator<(const ObjectPrx&, const ObjectPrx&);
323  friend ICE_API bool operator==(const ObjectPrx&, const ObjectPrx&);
324 
329  ::std::shared_ptr<::Ice::Communicator> ice_getCommunicator() const;
330 
335  ::std::string ice_toString() const;
336 
344  bool
345  ice_isA(const ::std::string& typeId, const ::Ice::Context& context = ::Ice::noExplicitContext)
346  {
347  return _makePromiseOutgoing<bool>(true, this, &ObjectPrx::_iceI_isA, typeId, context).get();
348  }
349 
359  ::std::function<void()>
360  ice_isAAsync(const ::std::string& typeId,
361  ::std::function<void(bool)> response,
362  ::std::function<void(::std::exception_ptr)> ex = nullptr,
363  ::std::function<void(bool)> sent = nullptr,
365  {
366  return _makeLamdaOutgoing<bool>(std::move(response), std::move(ex), std::move(sent), this,
367  &ObjectPrx::_iceI_isA, typeId, context);
368  }
369 
376  template<template<typename> class P = std::promise> auto
377  ice_isAAsync(const ::std::string& typeId, const ::Ice::Context& context = ::Ice::noExplicitContext)
378  -> decltype(std::declval<P<bool>>().get_future())
379  {
380  return _makePromiseOutgoing<bool, P>(false, this, &ObjectPrx::_iceI_isA, typeId, context);
381  }
382 
384  void
385  _iceI_isA(const ::std::shared_ptr<::IceInternal::OutgoingAsyncT<bool>>&, const ::std::string&, const ::Ice::Context&);
387 
392  void
394  {
395  _makePromiseOutgoing<void>(true, this, &ObjectPrx::_iceI_ping, context).get();
396  }
397 
406  ::std::function<void()>
407  ice_pingAsync(::std::function<void()> response,
408  ::std::function<void(::std::exception_ptr)> ex = nullptr,
409  ::std::function<void(bool)> sent = nullptr,
411  {
412  return _makeLamdaOutgoing<void>(std::move(response), std::move(ex), std::move(sent), this,
413  &ObjectPrx::_iceI_ping, context);
414  }
415 
421  template<template<typename> class P = std::promise>
423  -> decltype(std::declval<P<void>>().get_future())
424  {
425  return _makePromiseOutgoing<void, P>(false, this, &ObjectPrx::_iceI_ping, context);
426  }
427 
429  void
430  _iceI_ping(const ::std::shared_ptr<::IceInternal::OutgoingAsyncT<void>>&, const ::Ice::Context&);
432 
439  ::std::vector<::std::string>
441  {
442  return _makePromiseOutgoing<::std::vector<::std::string>>(true, this, &ObjectPrx::_iceI_ids, context).get();
443  }
444 
453  ::std::function<void()>
454  ice_idsAsync(::std::function<void(::std::vector<::std::string>)> response,
455  ::std::function<void(::std::exception_ptr)> ex = nullptr,
456  ::std::function<void(bool)> sent = nullptr,
458  {
459  return _makeLamdaOutgoing<::std::vector<::std::string>>(std::move(response), std::move(ex), std::move(sent),
460  this, &ObjectPrx::_iceI_ids, context);
461  }
462 
468  template<template<typename> class P = std::promise> auto
470  -> decltype(std::declval<P<::std::vector<::std::string>>>().get_future())
471  {
472  return _makePromiseOutgoing<::std::vector<::std::string>, P>(false, this, &ObjectPrx::_iceI_ids, context);
473  }
474 
476  void
477  _iceI_ids(const ::std::shared_ptr<::IceInternal::OutgoingAsyncT<::std::vector<::std::string>>>&, const ::Ice::Context&);
479 
485  ::std::string
487  {
488  return _makePromiseOutgoing<::std::string>(true, this, &ObjectPrx::_iceI_id, context).get();
489  }
490 
499  ::std::function<void()>
500  ice_idAsync(::std::function<void(::std::string)> response,
501  ::std::function<void(::std::exception_ptr)> ex = nullptr,
502  ::std::function<void(bool)> sent = nullptr,
504  {
505  return _makeLamdaOutgoing<::std::string>(std::move(response), std::move(ex), std::move(sent), this,
506  &ObjectPrx::_iceI_id, context);
507  }
508 
514  template<template<typename> class P = std::promise>
516  -> decltype(std::declval<P<::std::string>>().get_future())
517  {
518  return _makePromiseOutgoing<::std::string, P>(false, this, &ObjectPrx::_iceI_id, context);
519  }
520 
522  void
523  _iceI_id(const ::std::shared_ptr<::IceInternal::OutgoingAsyncT<::std::string>>&, const ::Ice::Context&);
525 
530  static const ::std::string& ice_staticId()
531  {
532  return ::Ice::Object::ice_staticId();
533  }
534 
547  bool
548  ice_invoke(const ::std::string& operation,
549  ::Ice::OperationMode mode,
550  const ::std::vector<Byte>& inParams,
551  ::std::vector<::Ice::Byte>& outParams,
553  {
554  return ice_invoke(operation, mode, ::IceInternal::makePair(inParams), outParams, context);
555  }
556 
565  template<template<typename> class P = std::promise> auto
566  ice_invokeAsync(const ::std::string& operation,
567  ::Ice::OperationMode mode,
568  const ::std::vector<Byte>& inParams,
570  -> decltype(std::declval<P<::Ice::Object::Ice_invokeResult>>().get_future())
571  {
572  return ice_invokeAsync<P>(operation, mode, ::IceInternal::makePair(inParams), context);
573  }
574 
586  ::std::function<void()>
587  ice_invokeAsync(const ::std::string& operation,
588  ::Ice::OperationMode mode,
589  const ::std::vector<::Ice::Byte>& inParams,
590  ::std::function<void(bool, ::std::vector<::Ice::Byte>)> response,
591  ::std::function<void(::std::exception_ptr)> ex = nullptr,
592  ::std::function<void(bool)> sent = nullptr,
594  {
595  using Outgoing = ::IceInternal::InvokeLambdaOutgoing<::Ice::Object::Ice_invokeResult>;
596  ::std::function<void(::Ice::Object::Ice_invokeResult&&)> r;
597  if(response)
598  {
599 #if ICE_CPLUSPLUS >= 201402L
600  r = [response = std::move(response)](::Ice::Object::Ice_invokeResult&& result)
601 #else
602  r = [response](::Ice::Object::Ice_invokeResult&& result)
603 #endif
604  {
605  response(result.returnValue, std::move(result.outParams));
606  };
607  }
608  auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), std::move(r), std::move(ex), std::move(sent));
609  outAsync->invoke(operation, mode, ::IceInternal::makePair(inParams), context);
610  return [outAsync]() { outAsync->cancel(); };
611  }
612 
625  bool
626  ice_invoke(const ::std::string& operation,
627  ::Ice::OperationMode mode,
628  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
629  ::std::vector<::Ice::Byte>& outParams,
631  {
632  using Outgoing = ::IceInternal::InvokePromiseOutgoing<
633  ::std::promise<::Ice::Object::Ice_invokeResult>, ::Ice::Object::Ice_invokeResult>;
634  auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), true);
635  outAsync->invoke(operation, mode, inParams, context);
636  auto result = outAsync->getFuture().get();
637  outParams.swap(result.outParams);
638  return result.returnValue;
639  }
640 
649  template<template<typename> class P = std::promise> auto
650  ice_invokeAsync(const ::std::string& operation,
651  ::Ice::OperationMode mode,
652  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
654  -> decltype(std::declval<P<::Ice::Object::Ice_invokeResult>>().get_future())
655  {
656  using Outgoing =
657  ::IceInternal::InvokePromiseOutgoing<P<::Ice::Object::Ice_invokeResult>, ::Ice::Object::Ice_invokeResult>;
658  auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), false);
659  outAsync->invoke(operation, mode, inParams, context);
660  return outAsync->getFuture();
661  }
662 
674  ::std::function<void()>
675  ice_invokeAsync(const ::std::string& operation,
676  ::Ice::OperationMode mode,
677  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
678  ::std::function<void(bool, ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>)> response,
679  ::std::function<void(::std::exception_ptr)> ex = nullptr,
680  ::std::function<void(bool)> sent = nullptr,
682  {
683  using Result = ::std::tuple<bool, ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>>;
684  using Outgoing = ::IceInternal::InvokeLambdaOutgoing<Result>;
685 
686  ::std::function<void(Result&&)> r;
687  if(response)
688  {
689 #if ICE_CPLUSPLUS >= 201402L
690  r = [response = std::move(response)](Result&& result)
691 #else
692  r = [response](Result&& result)
693 #endif
694  {
695  response(::std::get<0>(result), ::std::move(::std::get<1>(result)));
696  };
697  }
698  auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), std::move(r), std::move(ex), std::move(sent));
699  outAsync->invoke(operation, mode, inParams, context);
700  return [outAsync]() { outAsync->cancel(); };
701  }
702 
708 
714  ::std::shared_ptr<::Ice::ObjectPrx> ice_identity(const ::Ice::Identity& id) const;
715 
721 
727  ::std::shared_ptr<::Ice::ObjectPrx> ice_context(const ::Ice::Context& context) const;
728 
733  const ::std::string& ice_getFacet() const;
734 
740  ::std::shared_ptr<::Ice::ObjectPrx> ice_facet(const ::std::string& facet) const;
741 
746  ::std::string ice_getAdapterId() const;
747 
753  ::std::shared_ptr<::Ice::ObjectPrx> ice_adapterId(const ::std::string& id) const;
754 
760 
766  ::std::shared_ptr<::Ice::ObjectPrx> ice_endpoints(const ::Ice::EndpointSeq& endpoints) const;
767 
773 
779  ::std::shared_ptr<::Ice::ObjectPrx> ice_locatorCacheTimeout(::Ice::Int timeout) const;
780 
786 
792  ::std::shared_ptr<::Ice::ObjectPrx> ice_connectionCached(bool b) const;
793 
799 
805  ::std::shared_ptr<::Ice::ObjectPrx> ice_endpointSelection(::Ice::EndpointSelectionType type) const;
806 
811  bool ice_isSecure() const;
812 
819  ::std::shared_ptr<::Ice::ObjectPrx> ice_secure(bool b) const;
820 
826 
833  ::std::shared_ptr<::Ice::ObjectPrx> ice_encodingVersion(const ::Ice::EncodingVersion& version) const;
834 
840  bool ice_isPreferSecure() const;
841 
849  ::std::shared_ptr<::Ice::ObjectPrx> ice_preferSecure(bool b) const;
850 
856  ::std::shared_ptr<::Ice::RouterPrx> ice_getRouter() const;
857 
863  ::std::shared_ptr<::Ice::ObjectPrx> ice_router(const ::std::shared_ptr<::Ice::RouterPrx>& router) const;
864 
869  ::std::shared_ptr<::Ice::LocatorPrx> ice_getLocator() const;
870 
876  ::std::shared_ptr<::Ice::ObjectPrx> ice_locator(const ::std::shared_ptr<::Ice::LocatorPrx>& locator) const;
877 
883 
889  ::std::shared_ptr<::Ice::ObjectPrx> ice_collocationOptimized(bool b) const;
890 
896 
902  ::std::shared_ptr<::Ice::ObjectPrx> ice_invocationTimeout(::Ice::Int timeout) const;
903 
908  ::std::shared_ptr<::Ice::ObjectPrx> ice_twoway() const;
909 
914  bool ice_isTwoway() const;
915 
920  ::std::shared_ptr<::Ice::ObjectPrx> ice_oneway() const;
921 
926  bool ice_isOneway() const;
927 
932  ::std::shared_ptr<::Ice::ObjectPrx> ice_batchOneway() const;
933 
938  bool ice_isBatchOneway() const;
939 
944  ::std::shared_ptr<::Ice::ObjectPrx> ice_datagram() const;
945 
950  bool ice_isDatagram() const;
951 
956  ::std::shared_ptr<::Ice::ObjectPrx> ice_batchDatagram() const;
957 
962  bool ice_isBatchDatagram() const;
963 
970  ::std::shared_ptr<::Ice::ObjectPrx> ice_compress(bool b) const;
971 
978 
985  ::std::shared_ptr<::Ice::ObjectPrx> ice_timeout(int timeout) const;
986 
993 
1000  ::std::shared_ptr<::Ice::ObjectPrx> ice_connectionId(const ::std::string& id) const;
1001 
1006  ::std::string ice_getConnectionId() const;
1007 
1014  ::std::shared_ptr<::Ice::ObjectPrx> ice_fixed(const ::std::shared_ptr<::Ice::Connection>& connection) const;
1015 
1020  bool ice_isFixed() const;
1021 
1027  ::std::shared_ptr<::Ice::Connection>
1029  {
1030  return ice_getConnectionAsync().get();
1031  }
1032 
1041  ::std::function<void()>
1042  ice_getConnectionAsync(::std::function<void(::std::shared_ptr<::Ice::Connection>)> response,
1043  ::std::function<void(::std::exception_ptr)> ex = nullptr,
1044  ::std::function<void(bool)> sent = nullptr)
1045  {
1046  using LambdaOutgoing = ::IceInternal::ProxyGetConnectionLambda;
1047  auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), std::move(response), std::move(ex), std::move(sent));
1048  _iceI_getConnection(outAsync);
1049  return [outAsync]() { outAsync->cancel(); };
1050  }
1051 
1057  template<template<typename> class P = std::promise> auto
1058  ice_getConnectionAsync() -> decltype(std::declval<P<::std::shared_ptr<::Ice::Connection>>>().get_future())
1059  {
1060  using PromiseOutgoing = ::IceInternal::ProxyGetConnectionPromise<P<::std::shared_ptr<::Ice::Connection>>>;
1061  auto outAsync = ::std::make_shared<PromiseOutgoing>(shared_from_this());
1062  _iceI_getConnection(outAsync);
1063  return outAsync->getFuture();
1064  }
1065 
1067  void _iceI_getConnection(const ::std::shared_ptr<::IceInternal::ProxyGetConnection>&);
1069 
1076  ::std::shared_ptr<::Ice::Connection> ice_getCachedConnection() const;
1077 
1082  {
1083  return ice_flushBatchRequestsAsync().get();
1084  }
1085 
1092  std::function<void()>
1093  ice_flushBatchRequestsAsync(::std::function<void(::std::exception_ptr)> ex,
1094  ::std::function<void(bool)> sent = nullptr)
1095  {
1096  using LambdaOutgoing = ::IceInternal::ProxyFlushBatchLambda;
1097  auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), std::move(ex), std::move(sent));
1098  _iceI_flushBatchRequests(outAsync);
1099  return [outAsync]() { outAsync->cancel(); };
1100  }
1101 
1106  template<template<typename> class P = std::promise> auto
1107  ice_flushBatchRequestsAsync() -> decltype(std::declval<P<void>>().get_future())
1108  {
1109  using PromiseOutgoing = ::IceInternal::ProxyFlushBatchPromise<P<void>>;
1110  auto outAsync = ::std::make_shared<PromiseOutgoing>(shared_from_this());
1111  _iceI_flushBatchRequests(outAsync);
1112  return outAsync->getFuture();
1113  }
1114 
1116  void _iceI_flushBatchRequests(const ::std::shared_ptr<::IceInternal::ProxyFlushBatchAsync>&);
1117 
1118  const ::IceInternal::ReferencePtr& _getReference() const { return _reference; }
1119 
1120  void _copyFrom(const std::shared_ptr<::Ice::ObjectPrx>&);
1121 
1122  int _handleException(const ::Ice::Exception&, const ::IceInternal::RequestHandlerPtr&, ::Ice::OperationMode,
1123  bool, int&);
1124 
1125  void _checkTwowayOnly(const ::std::string&) const;
1126 
1127  ::IceInternal::RequestHandlerPtr _getRequestHandler();
1128  ::IceInternal::BatchRequestQueuePtr _getBatchRequestQueue();
1129  ::IceInternal::RequestHandlerPtr _setRequestHandler(const ::IceInternal::RequestHandlerPtr&);
1130  void _updateRequestHandler(const ::IceInternal::RequestHandlerPtr&, const ::IceInternal::RequestHandlerPtr&);
1131 
1132  int _hash() const;
1133 
1134  void _write(OutputStream&) const;
1136 
1137 protected:
1138 
1140  template<typename R, template<typename> class P = ::std::promise, typename Obj, typename Fn, typename... Args>
1141  auto _makePromiseOutgoing(bool sync, Obj obj, Fn fn, Args&&... args)
1142  -> decltype(std::declval<P<R>>().get_future())
1143  {
1144  auto outAsync = ::std::make_shared<::IceInternal::PromiseOutgoing<P<R>, R>>(shared_from_this(), sync);
1145  (obj->*fn)(outAsync, std::forward<Args>(args)...);
1146  return outAsync->getFuture();
1147  }
1148 
1149  template<typename R, typename Re, typename E, typename S, typename Obj, typename Fn, typename... Args>
1150  ::std::function<void()> _makeLamdaOutgoing(Re r, E e, S s, Obj obj, Fn fn, Args&&... args)
1151  {
1152  auto outAsync = ::std::make_shared<::IceInternal::LambdaOutgoing<R>>(shared_from_this(),
1153  std::move(r), std::move(e), std::move(s));
1154  (obj->*fn)(outAsync, std::forward<Args>(args)...);
1155  return [outAsync]() { outAsync->cancel(); };
1156  }
1157 
1158  virtual ::std::shared_ptr<ObjectPrx> _newInstance() const;
1159  ObjectPrx() = default;
1160  friend ::std::shared_ptr<ObjectPrx> IceInternal::createProxy<ObjectPrx>();
1162 
1163 private:
1164 
1165  void setup(const ::IceInternal::ReferencePtr&);
1166  friend class ::IceInternal::ProxyFactory;
1167 
1168  ::IceInternal::ReferencePtr _reference;
1169  ::IceInternal::RequestHandlerPtr _requestHandler;
1170  ::IceInternal::BatchRequestQueuePtr _batchRequestQueue;
1171  IceUtil::Mutex _mutex;
1172 };
1173 
1174 inline bool
1175 operator>(const ObjectPrx& lhs, const ObjectPrx& rhs)
1176 {
1177  return rhs < lhs;
1178 }
1179 
1180 inline bool
1181 operator<=(const ObjectPrx& lhs, const ObjectPrx& rhs)
1182 {
1183  return !(lhs > rhs);
1184 }
1185 
1186 inline bool
1187 operator>=(const ObjectPrx& lhs, const ObjectPrx& rhs)
1188 {
1189  return !(lhs < rhs);
1190 }
1191 
1192 inline bool
1193 operator!=(const ObjectPrx& lhs, const ObjectPrx& rhs)
1194 {
1195  return !(lhs == rhs);
1196 }
1197 
1202 template<typename Prx, typename... Bases>
1203 class Proxy : public virtual Bases...
1204 {
1205 public:
1206 
1212  ::std::shared_ptr<Prx> ice_context(const ::Ice::Context& context) const
1213  {
1214  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_context(context));
1215  }
1216 
1222  ::std::shared_ptr<Prx> ice_adapterId(const ::std::string& id) const
1223  {
1224  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_adapterId(id));
1225  }
1226 
1232  ::std::shared_ptr<Prx> ice_endpoints(const ::Ice::EndpointSeq& endpoints) const
1233  {
1234  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_endpoints(endpoints));
1235  }
1236 
1242  ::std::shared_ptr<Prx> ice_locatorCacheTimeout(int timeout) const
1243  {
1244  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_locatorCacheTimeout(timeout));
1245  }
1246 
1252  ::std::shared_ptr<Prx> ice_connectionCached(bool b) const
1253  {
1254  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_connectionCached(b));
1255  }
1256 
1262  ::std::shared_ptr<Prx> ice_endpointSelection(::Ice::EndpointSelectionType type) const
1263  {
1264  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_endpointSelection(type));
1265  }
1266 
1273  ::std::shared_ptr<Prx> ice_secure(bool b) const
1274  {
1275  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_secure(b));
1276  }
1277 
1285  ::std::shared_ptr<Prx> ice_preferSecure(bool b) const
1286  {
1287  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_preferSecure(b));
1288  }
1289 
1295  ::std::shared_ptr<Prx> ice_router(const ::std::shared_ptr<::Ice::RouterPrx>& router) const
1296  {
1297  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_router(router));
1298  }
1299 
1305  ::std::shared_ptr<Prx> ice_locator(const ::std::shared_ptr<::Ice::LocatorPrx>& locator) const
1306  {
1307  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_locator(locator));
1308  }
1309 
1315  ::std::shared_ptr<Prx> ice_collocationOptimized(bool b) const
1316  {
1317  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_collocationOptimized(b));
1318  }
1319 
1325  ::std::shared_ptr<Prx> ice_invocationTimeout(int timeout) const
1326  {
1327  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_invocationTimeout(timeout));
1328  }
1329 
1334  ::std::shared_ptr<Prx> ice_twoway() const
1335  {
1336  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_twoway());
1337  }
1338 
1343  ::std::shared_ptr<Prx> ice_oneway() const
1344  {
1345  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_oneway());
1346  }
1347 
1352  ::std::shared_ptr<Prx> ice_batchOneway() const
1353  {
1354  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_batchOneway());
1355  }
1356 
1361  ::std::shared_ptr<Prx> ice_datagram() const
1362  {
1363  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_datagram());
1364  }
1365 
1370  ::std::shared_ptr<Prx> ice_batchDatagram() const
1371  {
1372  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_batchDatagram());
1373  }
1374 
1381  ::std::shared_ptr<Prx> ice_compress(bool b) const
1382  {
1383  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_compress(b));
1384  }
1385 
1392  ::std::shared_ptr<Prx> ice_timeout(int timeout) const
1393  {
1394  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_timeout(timeout));
1395  }
1396 
1403  ::std::shared_ptr<Prx> ice_connectionId(const ::std::string& id) const
1404  {
1405  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_connectionId(id));
1406  }
1407 
1414  ::std::shared_ptr<Prx> ice_fixed(const ::std::shared_ptr<::Ice::Connection>& connection) const
1415  {
1416  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_fixed(connection));
1417  }
1418 
1425  ::std::shared_ptr<Prx> ice_encodingVersion(const ::Ice::EncodingVersion& version) const
1426  {
1427  return ::std::dynamic_pointer_cast<Prx>(ObjectPrx::ice_encodingVersion(version));
1428  }
1429 
1430 protected:
1431 
1433  virtual ::std::shared_ptr<ObjectPrx> _newInstance() const = 0;
1435 };
1436 
1437 ICE_API ::std::ostream& operator<<(::std::ostream&, const ::Ice::ObjectPrx&);
1438 
1445 ICE_API bool proxyIdentityLess(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs);
1446 
1453 ICE_API bool proxyIdentityEqual(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs);
1454 
1462 ICE_API bool proxyIdentityAndFacetLess(const ::std::shared_ptr<ObjectPrx>& lhs,
1463  const ::std::shared_ptr<ObjectPrx>& rhs);
1464 
1472 ICE_API bool proxyIdentityAndFacetEqual(const ::std::shared_ptr<ObjectPrx>& lhs,
1473  const ::std::shared_ptr<ObjectPrx>& rhs);
1474 
1482 #if (ICE_CPLUSPLUS < 201703L)
1483  : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1484 #endif
1485 {
1486  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
1487  {
1488  return proxyIdentityLess(lhs, rhs);
1489  }
1490 };
1491 
1498 #if (ICE_CPLUSPLUS < 201703L)
1499  : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1500 #endif
1501 {
1502  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
1503  {
1504  return proxyIdentityEqual(lhs, rhs);
1505  }
1506 };
1507 
1514 #if (ICE_CPLUSPLUS < 201703L)
1515  : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1516 #endif
1517 {
1518  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
1519  {
1520  return proxyIdentityAndFacetLess(lhs, rhs);
1521  }
1522 };
1523 
1530 #if (ICE_CPLUSPLUS < 201703L)
1531  : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1532 #endif
1533 {
1534  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
1535  {
1536  return proxyIdentityAndFacetEqual(lhs, rhs);
1537  }
1538 };
1539 
1545 template<typename P,
1546  typename T,
1547  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, P>::value>::type* = nullptr,
1548  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type* = nullptr> ::std::shared_ptr<P>
1549 uncheckedCast(const ::std::shared_ptr<T>& b)
1550 {
1551  ::std::shared_ptr<P> r;
1552  if(b)
1553  {
1554  r = ::std::dynamic_pointer_cast<P>(b);
1555  if(!r)
1556  {
1557  r = IceInternal::createProxy<P>();
1558  r->_copyFrom(b);
1559  }
1560  }
1561  return r;
1562 }
1563 
1570 template<typename P,
1571  typename T,
1572  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, P>::value>::type* = nullptr,
1573  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type* = nullptr> ::std::shared_ptr<P>
1574 uncheckedCast(const ::std::shared_ptr<T>& b, const std::string& f)
1575 {
1576  ::std::shared_ptr<P> r;
1577  if(b)
1578  {
1579  r = IceInternal::createProxy<P>();
1580  r->_copyFrom(b->ice_facet(f));
1581  }
1582  return r;
1583 }
1584 
1592 template<typename P,
1593  typename T,
1594  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, P>::value>::type* = nullptr,
1595  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type* = nullptr> ::std::shared_ptr<P>
1596 checkedCast(const ::std::shared_ptr<T>& b, const ::Ice::Context& context = Ice::noExplicitContext)
1597 {
1598  ::std::shared_ptr<P> r;
1599  if(b)
1600  {
1601  if(b->ice_isA(P::ice_staticId(), context))
1602  {
1603  r = IceInternal::createProxy<P>();
1604  r->_copyFrom(b);
1605  }
1606  }
1607  return r;
1608 }
1609 
1618 template<typename P,
1619  typename T,
1620  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, P>::value>::type* = nullptr,
1621  typename ::std::enable_if<::std::is_base_of<::Ice::ObjectPrx, T>::value>::type* = nullptr> ::std::shared_ptr<P>
1622 checkedCast(const ::std::shared_ptr<T>& b, const std::string& f, const ::Ice::Context& context = Ice::noExplicitContext)
1623 {
1624  ::std::shared_ptr<P> r;
1625  if(b)
1626  {
1627  try
1628  {
1629  ::std::shared_ptr<::Ice::ObjectPrx> bb = b->ice_facet(f);
1630  if(bb->ice_isA(P::ice_staticId(), context))
1631  {
1632  r = IceInternal::createProxy<P>();
1633  r->_copyFrom(bb);
1634  }
1635  }
1636  catch(const Ice::FacetNotExistException&)
1637  {
1638  }
1639  }
1640  return r;
1641 }
1642 
1643 }
1644 
1645 #else // C++98 mapping
1646 
1647 namespace IceProxy
1648 {
1649 
1650 namespace Ice
1651 {
1652 
1654 class Locator;
1655 ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Locator*);
1656 
1657 class Router;
1658 ICE_API ::IceProxy::Ice::Object* upCast(::IceProxy::Ice::Router*);
1660 
1661 }
1662 
1663 }
1664 
1665 namespace Ice
1666 {
1667 
1668 typedef ::IceInternal::ProxyHandle< ::IceProxy::Ice::Router> RouterPrx;
1669 typedef RouterPrx RouterPrxPtr;
1670 typedef ::IceInternal::ProxyHandle< ::IceProxy::Ice::Locator> LocatorPrx;
1671 typedef LocatorPrx LocatorPrxPtr;
1672 
1673 class LocalException;
1674 class OutputStream;
1675 
1682 class Callback_Object_ice_isA_Base : public virtual ::IceInternal::CallbackBase { };
1683 typedef ::IceUtil::Handle< Callback_Object_ice_isA_Base> Callback_Object_ice_isAPtr;
1684 
1691 class Callback_Object_ice_ping_Base : public virtual ::IceInternal::CallbackBase { };
1692 typedef ::IceUtil::Handle< Callback_Object_ice_ping_Base> Callback_Object_ice_pingPtr;
1693 
1700 class Callback_Object_ice_ids_Base : public virtual ::IceInternal::CallbackBase { };
1701 typedef ::IceUtil::Handle< Callback_Object_ice_ids_Base> Callback_Object_ice_idsPtr;
1702 
1709 class Callback_Object_ice_id_Base : public virtual ::IceInternal::CallbackBase { };
1710 typedef ::IceUtil::Handle< Callback_Object_ice_id_Base> Callback_Object_ice_idPtr;
1711 
1718 class Callback_Object_ice_invoke_Base : public virtual ::IceInternal::CallbackBase { };
1719 typedef ::IceUtil::Handle< Callback_Object_ice_invoke_Base> Callback_Object_ice_invokePtr;
1720 
1727 class Callback_Object_ice_flushBatchRequests_Base : public virtual ::IceInternal::CallbackBase { };
1728 typedef ::IceUtil::Handle< Callback_Object_ice_flushBatchRequests_Base> Callback_Object_ice_flushBatchRequestsPtr;
1729 
1736 class Callback_Object_ice_getConnection_Base : public virtual ::IceInternal::CallbackBase { };
1737 typedef ::IceUtil::Handle< Callback_Object_ice_getConnection_Base> Callback_Object_ice_getConnectionPtr;
1738 
1739 }
1740 
1741 namespace IceProxy { namespace Ice
1742 {
1743 
1748 class ICE_API Object : public ::IceUtil::Shared
1749 {
1750 public:
1751 
1752  bool operator==(const Object&) const;
1753  bool operator<(const Object&) const;
1754 
1759  ::Ice::CommunicatorPtr ice_getCommunicator() const;
1760 
1765  ::std::string ice_toString() const;
1766 
1774  bool ice_isA(const ::std::string& typeId, const ::Ice::Context& context = ::Ice::noExplicitContext)
1775  {
1776  return end_ice_isA(_iceI_begin_ice_isA(typeId, context, ::IceInternal::dummyCallback, 0, true));
1777  }
1778 
1785  ::Ice::AsyncResultPtr begin_ice_isA(const ::std::string& typeId,
1787  {
1788  return _iceI_begin_ice_isA(typeId, context, ::IceInternal::dummyCallback, 0);
1789  }
1790 
1798  ::Ice::AsyncResultPtr begin_ice_isA(const ::std::string& typeId,
1799  const ::Ice::CallbackPtr& cb,
1800  const ::Ice::LocalObjectPtr& cookie = 0)
1801  {
1802  return _iceI_begin_ice_isA(typeId, ::Ice::noExplicitContext, cb, cookie);
1803  }
1804 
1813  ::Ice::AsyncResultPtr begin_ice_isA(const ::std::string& typeId,
1814  const ::Ice::Context& context,
1815  const ::Ice::CallbackPtr& cb,
1816  const ::Ice::LocalObjectPtr& cookie = 0)
1817  {
1818  return _iceI_begin_ice_isA(typeId, context, cb, cookie);
1819  }
1820 
1828  ::Ice::AsyncResultPtr begin_ice_isA(const ::std::string& typeId,
1829  const ::Ice::Callback_Object_ice_isAPtr& cb,
1830  const ::Ice::LocalObjectPtr& cookie = 0)
1831  {
1832  return _iceI_begin_ice_isA(typeId, ::Ice::noExplicitContext, cb, cookie);
1833  }
1834 
1843  ::Ice::AsyncResultPtr begin_ice_isA(const ::std::string& typeId,
1844  const ::Ice::Context& context,
1845  const ::Ice::Callback_Object_ice_isAPtr& cb,
1846  const ::Ice::LocalObjectPtr& cookie = 0)
1847  {
1848  return _iceI_begin_ice_isA(typeId, context, cb, cookie);
1849  }
1850 
1857  bool end_ice_isA(const ::Ice::AsyncResultPtr& result);
1858 
1863  void ice_ping(const ::Ice::Context& context = ::Ice::noExplicitContext)
1864  {
1865  end_ice_ping(_iceI_begin_ice_ping(context, ::IceInternal::dummyCallback, 0, true));
1866  }
1867 
1873  ::Ice::AsyncResultPtr begin_ice_ping(const ::Ice::Context& context = ::Ice::noExplicitContext)
1874  {
1875  return _iceI_begin_ice_ping(context, ::IceInternal::dummyCallback, 0);
1876  }
1877 
1884  ::Ice::AsyncResultPtr begin_ice_ping(const ::Ice::CallbackPtr& cb, const ::Ice::LocalObjectPtr& cookie = 0)
1885  {
1886  return _iceI_begin_ice_ping(::Ice::noExplicitContext, cb, cookie);
1887  }
1888 
1896  ::Ice::AsyncResultPtr begin_ice_ping(const ::Ice::Context& context, const ::Ice::CallbackPtr& cb,
1897  const ::Ice::LocalObjectPtr& cookie = 0)
1898  {
1899  return _iceI_begin_ice_ping(context, cb, cookie);
1900  }
1901 
1908  ::Ice::AsyncResultPtr begin_ice_ping(const ::Ice::Callback_Object_ice_pingPtr& cb,
1909  const ::Ice::LocalObjectPtr& cookie = 0)
1910  {
1911  return _iceI_begin_ice_ping(::Ice::noExplicitContext, cb, cookie);
1912  }
1913 
1921  ::Ice::AsyncResultPtr begin_ice_ping(const ::Ice::Context& context, const ::Ice::Callback_Object_ice_pingPtr& cb,
1922  const ::Ice::LocalObjectPtr& cookie = 0)
1923  {
1924  return _iceI_begin_ice_ping(context, cb, cookie);
1925  }
1926 
1931  void end_ice_ping(const ::Ice::AsyncResultPtr& result);
1932 
1939  ::std::vector< ::std::string> ice_ids(const ::Ice::Context& context = ::Ice::noExplicitContext)
1940  {
1941  return end_ice_ids(_iceI_begin_ice_ids(context, ::IceInternal::dummyCallback, 0, true));
1942  }
1943 
1949  ::Ice::AsyncResultPtr begin_ice_ids(const ::Ice::Context& context = ::Ice::noExplicitContext)
1950  {
1951  return _iceI_begin_ice_ids(context, ::IceInternal::dummyCallback, 0);
1952  }
1953 
1960  ::Ice::AsyncResultPtr begin_ice_ids(const ::Ice::CallbackPtr& cb,
1961  const ::Ice::LocalObjectPtr& cookie = 0)
1962  {
1963  return _iceI_begin_ice_ids(::Ice::noExplicitContext, cb, cookie);
1964  }
1965 
1973  ::Ice::AsyncResultPtr begin_ice_ids(const ::Ice::Context& context,
1974  const ::Ice::CallbackPtr& cb,
1975  const ::Ice::LocalObjectPtr& cookie = 0)
1976  {
1977  return _iceI_begin_ice_ids(context, cb, cookie);
1978  }
1979 
1986  ::Ice::AsyncResultPtr begin_ice_ids(const ::Ice::Callback_Object_ice_idsPtr& cb,
1987  const ::Ice::LocalObjectPtr& cookie = 0)
1988  {
1989  return _iceI_begin_ice_ids(::Ice::noExplicitContext, cb, cookie);
1990  }
1991 
1999  ::Ice::AsyncResultPtr begin_ice_ids(const ::Ice::Context& context,
2000  const ::Ice::Callback_Object_ice_idsPtr& cb,
2001  const ::Ice::LocalObjectPtr& cookie = 0)
2002  {
2003  return _iceI_begin_ice_ids(context, cb, cookie);
2004  }
2005 
2012  ::std::vector< ::std::string> end_ice_ids(const ::Ice::AsyncResultPtr& result);
2013 
2019  ::std::string ice_id(const ::Ice::Context& context = ::Ice::noExplicitContext)
2020  {
2021  return end_ice_id(_iceI_begin_ice_id(context, ::IceInternal::dummyCallback, 0, true));
2022  }
2023 
2029  ::Ice::AsyncResultPtr begin_ice_id(const ::Ice::Context& context = ::Ice::noExplicitContext)
2030  {
2031  return _iceI_begin_ice_id(context, ::IceInternal::dummyCallback, 0);
2032  }
2033 
2040  ::Ice::AsyncResultPtr begin_ice_id(const ::Ice::CallbackPtr& cb,
2041  const ::Ice::LocalObjectPtr& cookie = 0)
2042  {
2043  return _iceI_begin_ice_id(::Ice::noExplicitContext, cb, cookie);
2044  }
2045 
2053  ::Ice::AsyncResultPtr begin_ice_id(const ::Ice::Context& context,
2054  const ::Ice::CallbackPtr& cb,
2055  const ::Ice::LocalObjectPtr& cookie = 0)
2056  {
2057  return _iceI_begin_ice_id(context, cb, cookie);
2058  }
2059 
2066  ::Ice::AsyncResultPtr begin_ice_id(const ::Ice::Callback_Object_ice_idPtr& cb,
2067  const ::Ice::LocalObjectPtr& cookie = 0)
2068  {
2069  return _iceI_begin_ice_id(::Ice::noExplicitContext, cb, cookie);
2070  }
2071 
2079  ::Ice::AsyncResultPtr begin_ice_id(const ::Ice::Context& context,
2080  const ::Ice::Callback_Object_ice_idPtr& cb,
2081  const ::Ice::LocalObjectPtr& cookie = 0)
2082  {
2083  return _iceI_begin_ice_id(context, cb, cookie);
2084  }
2085 
2091  ::std::string end_ice_id(const ::Ice::AsyncResultPtr& result);
2092 
2097  static const ::std::string& ice_staticId()
2098  {
2099  return ::Ice::Object::ice_staticId();
2100  }
2101 
2114  bool ice_invoke(const ::std::string& operation,
2115  ::Ice::OperationMode mode,
2116  const ::std::vector< ::Ice::Byte>& inParams,
2117  ::std::vector< ::Ice::Byte>& outParams,
2119 
2127  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2128  ::Ice::OperationMode mode,
2129  const ::std::vector< ::Ice::Byte>& inParams)
2130  {
2131  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext,
2132  ::IceInternal::dummyCallback, 0);
2133  }
2134 
2143  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2144  ::Ice::OperationMode mode,
2145  const ::std::vector< ::Ice::Byte>& inParams,
2146  const ::Ice::Context& context)
2147  {
2148  return _iceI_begin_ice_invoke(operation, mode, inParams, context, ::IceInternal::dummyCallback, 0);
2149  }
2150 
2160  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2161  ::Ice::OperationMode mode,
2162  const ::std::vector< ::Ice::Byte>& inParams,
2163  const ::Ice::CallbackPtr& cb,
2164  const ::Ice::LocalObjectPtr& cookie = 0)
2165  {
2166  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext, cb, cookie);
2167  }
2168 
2179  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2180  ::Ice::OperationMode mode,
2181  const ::std::vector< ::Ice::Byte>& inParams,
2182  const ::Ice::Context& context,
2183  const ::Ice::CallbackPtr& cb,
2184  const ::Ice::LocalObjectPtr& cookie = 0)
2185  {
2186  return _iceI_begin_ice_invoke(operation, mode, inParams, context, cb, cookie);
2187  }
2188 
2198  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2199  ::Ice::OperationMode mode,
2200  const ::std::vector< ::Ice::Byte>& inParams,
2201  const ::Ice::Callback_Object_ice_invokePtr& cb,
2202  const ::Ice::LocalObjectPtr& cookie = 0)
2203  {
2204  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext, cb, cookie);
2205  }
2206 
2217  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2218  ::Ice::OperationMode mode,
2219  const ::std::vector< ::Ice::Byte>& inParams,
2220  const ::Ice::Context& context,
2221  const ::Ice::Callback_Object_ice_invokePtr& cb,
2222  const ::Ice::LocalObjectPtr& cookie = 0)
2223  {
2224  return _iceI_begin_ice_invoke(operation, mode, inParams, context, cb, cookie);
2225  }
2226 
2236  bool end_ice_invoke(::std::vector< ::Ice::Byte>& outParams, const ::Ice::AsyncResultPtr& result);
2237 
2250  bool ice_invoke(const ::std::string& operation,
2251  ::Ice::OperationMode mode,
2252  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2253  ::std::vector< ::Ice::Byte>& outParams,
2255  {
2256  return end_ice_invoke(outParams, _iceI_begin_ice_invoke(operation, mode, inParams, context,
2257  ::IceInternal::dummyCallback, 0, true));
2258  }
2259 
2267  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2268  ::Ice::OperationMode mode,
2269  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams)
2270  {
2271  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext,
2272  ::IceInternal::dummyCallback, 0);
2273  }
2274 
2284  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2285  ::Ice::OperationMode mode,
2286  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2287  const ::Ice::Context& context,
2288  const ::Ice::LocalObjectPtr& cookie = 0)
2289  {
2290  return _iceI_begin_ice_invoke(operation, mode, inParams, context, ::IceInternal::dummyCallback, cookie);
2291  }
2292 
2302  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2303  ::Ice::OperationMode mode,
2304  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2305  const ::Ice::CallbackPtr& cb,
2306  const ::Ice::LocalObjectPtr& cookie = 0)
2307  {
2308  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext, cb, cookie);
2309  }
2310 
2321  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2322  ::Ice::OperationMode mode,
2323  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2324  const ::Ice::Context& context,
2325  const ::Ice::CallbackPtr& cb,
2326  const ::Ice::LocalObjectPtr& cookie = 0)
2327  {
2328  return _iceI_begin_ice_invoke(operation, mode, inParams, context, cb, cookie);
2329  }
2330 
2340  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2341  ::Ice::OperationMode mode,
2342  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2343  const ::Ice::Callback_Object_ice_invokePtr& cb,
2344  const ::Ice::LocalObjectPtr& cookie = 0)
2345  {
2346  return _iceI_begin_ice_invoke(operation, mode, inParams, ::Ice::noExplicitContext, cb, cookie);
2347  }
2348 
2359  ::Ice::AsyncResultPtr begin_ice_invoke(const ::std::string& operation,
2360  ::Ice::OperationMode mode,
2361  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>& inParams,
2362  const ::Ice::Context& context,
2363  const ::Ice::Callback_Object_ice_invokePtr& cb,
2364  const ::Ice::LocalObjectPtr& cookie = 0)
2365  {
2366  return _iceI_begin_ice_invoke(operation, mode, inParams, context, cb, cookie);
2367  }
2368 
2370  bool _iceI_end_ice_invoke(::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>&, const ::Ice::AsyncResultPtr&);
2372 
2377  ::Ice::Identity ice_getIdentity() const;
2378 
2384  ::Ice::ObjectPrx ice_identity(const ::Ice::Identity& id) const;
2385 
2390  ::Ice::Context ice_getContext() const;
2391 
2397  ::Ice::ObjectPrx ice_context(const ::Ice::Context& context) const;
2398 
2403  const ::std::string& ice_getFacet() const;
2404 
2410  ::Ice::ObjectPrx ice_facet(const ::std::string& facet) const;
2411 
2416  ::std::string ice_getAdapterId() const;
2417 
2423  ::Ice::ObjectPrx ice_adapterId(const ::std::string& id) const;
2424 
2429  ::Ice::EndpointSeq ice_getEndpoints() const;
2430 
2436  ::Ice::ObjectPrx ice_endpoints(const ::Ice::EndpointSeq& endpoints) const;
2437 
2442  ::Ice::Int ice_getLocatorCacheTimeout() const;
2443 
2449  ::Ice::ObjectPrx ice_locatorCacheTimeout(::Ice::Int timeout) const;
2450 
2455  bool ice_isConnectionCached() const;
2456 
2462  ::Ice::ObjectPrx ice_connectionCached(bool b) const;
2463 
2468  ::Ice::EndpointSelectionType ice_getEndpointSelection() const;
2469 
2475  ::Ice::ObjectPrx ice_endpointSelection(::Ice::EndpointSelectionType type) const;
2476 
2481  bool ice_isSecure() const;
2482 
2489  ::Ice::ObjectPrx ice_secure(bool b) const;
2490 
2495  ::Ice::EncodingVersion ice_getEncodingVersion() const;
2496 
2503  ::Ice::ObjectPrx ice_encodingVersion(const ::Ice::EncodingVersion& version) const;
2504 
2510  bool ice_isPreferSecure() const;
2511 
2519  ::Ice::ObjectPrx ice_preferSecure(bool b) const;
2520 
2526  ::Ice::RouterPrx ice_getRouter() const;
2527 
2533  ::Ice::ObjectPrx ice_router(const ::Ice::RouterPrx& router) const;
2534 
2539  ::Ice::LocatorPrx ice_getLocator() const;
2540 
2546  ::Ice::ObjectPrx ice_locator(const ::Ice::LocatorPrx& locator) const;
2547 
2552  bool ice_isCollocationOptimized() const;
2553 
2559  ::Ice::ObjectPrx ice_collocationOptimized(bool b) const;
2560 
2565  ::Ice::Int ice_getInvocationTimeout() const;
2566 
2572  ::Ice::ObjectPrx ice_invocationTimeout(::Ice::Int timeout) const;
2573 
2578  ::Ice::ObjectPrx ice_twoway() const;
2579 
2584  bool ice_isTwoway() const;
2585 
2590  ::Ice::ObjectPrx ice_oneway() const;
2591 
2596  bool ice_isOneway() const;
2597 
2602  ::Ice::ObjectPrx ice_batchOneway() const;
2603 
2608  bool ice_isBatchOneway() const;
2609 
2614  ::Ice::ObjectPrx ice_datagram() const;
2615 
2620  bool ice_isDatagram() const;
2621 
2626  ::Ice::ObjectPrx ice_batchDatagram() const;
2627 
2632  bool ice_isBatchDatagram() const;
2633 
2640  ::Ice::ObjectPrx ice_compress(bool b) const;
2641 
2647  ::IceUtil::Optional<bool> ice_getCompress() const;
2648 
2655  ::Ice::ObjectPrx ice_timeout(int timeout) const;
2656 
2662  ::IceUtil::Optional<int> ice_getTimeout() const;
2663 
2670  ::Ice::ObjectPrx ice_connectionId(const ::std::string& id) const;
2671 
2676  ::std::string ice_getConnectionId() const;
2677 
2684  ::Ice::ObjectPrx ice_fixed(const ::Ice::ConnectionPtr& connection) const;
2685 
2690  bool ice_isFixed() const;
2691 
2697  ::Ice::ConnectionPtr ice_getConnection()
2698  {
2699  return end_ice_getConnection(begin_ice_getConnection());
2700  }
2701 
2707  ::Ice::AsyncResultPtr begin_ice_getConnection()
2708  {
2709  return _iceI_begin_ice_getConnection(::IceInternal::dummyCallback, 0);
2710  }
2711 
2719  ::Ice::AsyncResultPtr begin_ice_getConnection(const ::Ice::CallbackPtr& cb,
2720  const ::Ice::LocalObjectPtr& cookie = 0)
2721  {
2722  return _iceI_begin_ice_getConnection(cb, cookie);
2723  }
2724 
2732  ::Ice::AsyncResultPtr begin_ice_getConnection(const ::Ice::Callback_Object_ice_getConnectionPtr& cb,
2733  const ::Ice::LocalObjectPtr& cookie = 0)
2734  {
2735  return _iceI_begin_ice_getConnection(cb, cookie);
2736  }
2737 
2743  ::Ice::ConnectionPtr end_ice_getConnection(const ::Ice::AsyncResultPtr& result);
2744 
2752  ::Ice::ConnectionPtr ice_getCachedConnection() const;
2753 
2757  void ice_flushBatchRequests()
2758  {
2759  return end_ice_flushBatchRequests(begin_ice_flushBatchRequests());
2760  }
2761 
2766  ::Ice::AsyncResultPtr begin_ice_flushBatchRequests()
2767  {
2768  return _iceI_begin_ice_flushBatchRequests(::IceInternal::dummyCallback, 0);
2769  }
2770 
2777  ::Ice::AsyncResultPtr begin_ice_flushBatchRequests(const ::Ice::CallbackPtr& cb,
2778  const ::Ice::LocalObjectPtr& cookie = 0)
2779  {
2780  return _iceI_begin_ice_flushBatchRequests(cb, cookie);
2781  }
2782 
2789  ::Ice::AsyncResultPtr begin_ice_flushBatchRequests(const ::Ice::Callback_Object_ice_flushBatchRequestsPtr& cb,
2790  const ::Ice::LocalObjectPtr& cookie = 0)
2791  {
2792  return _iceI_begin_ice_flushBatchRequests(cb, cookie);
2793  }
2794 
2799  void end_ice_flushBatchRequests(const ::Ice::AsyncResultPtr& result);
2800 
2802  const ::IceInternal::ReferencePtr& _getReference() const { return _reference; }
2803 
2804  ::Ice::Int _hash() const;
2805 
2806  void _copyFrom(const ::Ice::ObjectPrx&);
2807 
2808  int _handleException(const ::Ice::Exception&, const ::IceInternal::RequestHandlerPtr&, ::Ice::OperationMode,
2809  bool, int&);
2810 
2811  void _checkTwowayOnly(const ::std::string&, bool) const;
2812 
2813  void _end(const ::Ice::AsyncResultPtr&, const std::string&) const;
2814 
2815  ::IceInternal::RequestHandlerPtr _getRequestHandler();
2816  ::IceInternal::BatchRequestQueuePtr _getBatchRequestQueue();
2817  ::IceInternal::RequestHandlerPtr _setRequestHandler(const ::IceInternal::RequestHandlerPtr&);
2818  void _updateRequestHandler(const ::IceInternal::RequestHandlerPtr&, const ::IceInternal::RequestHandlerPtr&);
2819 
2820  void _write(::Ice::OutputStream&) const;
2822 
2823 protected:
2824 
2826  virtual Object* _newInstance() const;
2828 
2829 private:
2830 
2831  ::Ice::AsyncResultPtr _iceI_begin_ice_isA(const ::std::string&,
2833  const ::IceInternal::CallbackBasePtr&,
2835  bool = false);
2836 
2837  ::Ice::AsyncResultPtr _iceI_begin_ice_ping(const ::Ice::Context&,
2838  const ::IceInternal::CallbackBasePtr&,
2840  bool = false);
2841 
2842  ::Ice::AsyncResultPtr _iceI_begin_ice_ids(const ::Ice::Context&,
2843  const ::IceInternal::CallbackBasePtr&,
2845  bool = false);
2846 
2847  ::Ice::AsyncResultPtr _iceI_begin_ice_id(const ::Ice::Context&,
2848  const ::IceInternal::CallbackBasePtr&,
2850  bool = false);
2851 
2852  ::Ice::AsyncResultPtr _iceI_begin_ice_invoke(const ::std::string&,
2854  const ::std::vector< ::Ice::Byte>&,
2856  const ::IceInternal::CallbackBasePtr&,
2858  bool = false);
2859 
2860  ::Ice::AsyncResultPtr _iceI_begin_ice_invoke(const ::std::string&,
2862  const ::std::pair<const ::Ice::Byte*, const ::Ice::Byte*>&,
2864  const ::IceInternal::CallbackBasePtr&,
2866  bool = false);
2867 
2868  ::Ice::AsyncResultPtr _iceI_begin_ice_getConnection(const ::IceInternal::CallbackBasePtr&,
2870 
2871  ::Ice::AsyncResultPtr _iceI_begin_ice_flushBatchRequests(const ::IceInternal::CallbackBasePtr&,
2873 
2874  void setup(const ::IceInternal::ReferencePtr&);
2875  friend class ::IceInternal::ProxyFactory;
2876 
2877  ::IceInternal::ReferencePtr _reference;
2878  ::IceInternal::RequestHandlerPtr _requestHandler;
2879  ::IceInternal::BatchRequestQueuePtr _batchRequestQueue;
2880  IceUtil::Mutex _mutex;
2881 };
2882 
2883 } }
2884 
2885 ICE_API ::std::ostream& operator<<(::std::ostream&, const ::IceProxy::Ice::Object&);
2886 
2887 namespace Ice
2888 {
2889 
2894 template<typename Prx, typename Base>
2895 class Proxy : public virtual Base
2896 {
2897 public:
2898 
2904  IceInternal::ProxyHandle<Prx> ice_context(const ::Ice::Context& context) const
2905  {
2906  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_context(context).get());
2907  }
2908 
2914  IceInternal::ProxyHandle<Prx> ice_adapterId(const ::std::string& id) const
2915  {
2916  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_adapterId(id).get());
2917  }
2918 
2924  IceInternal::ProxyHandle<Prx> ice_endpoints(const ::Ice::EndpointSeq& endpoints) const
2925  {
2926  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_endpoints(endpoints).get());
2927  }
2928 
2934  IceInternal::ProxyHandle<Prx> ice_locatorCacheTimeout(int timeout) const
2935  {
2936  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_locatorCacheTimeout(timeout).get());
2937  }
2938 
2944  IceInternal::ProxyHandle<Prx> ice_connectionCached(bool b) const
2945  {
2946  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_connectionCached(b).get());
2947  }
2948 
2954  IceInternal::ProxyHandle<Prx> ice_endpointSelection(::Ice::EndpointSelectionType type) const
2955  {
2956  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_endpointSelection(type).get());
2957  }
2958 
2965  IceInternal::ProxyHandle<Prx> ice_secure(bool b) const
2966  {
2967  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_secure(b).get());
2968  }
2969 
2977  IceInternal::ProxyHandle<Prx> ice_preferSecure(bool b) const
2978  {
2979  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_preferSecure(b).get());
2980  }
2981 
2987  IceInternal::ProxyHandle<Prx> ice_router(const ::Ice::RouterPrx& router) const
2988  {
2989  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_router(router).get());
2990  }
2991 
2997  IceInternal::ProxyHandle<Prx> ice_locator(const ::Ice::LocatorPrx& locator) const
2998  {
2999  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_locator(locator).get());
3000  }
3001 
3007  IceInternal::ProxyHandle<Prx> ice_collocationOptimized(bool b) const
3008  {
3009  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_collocationOptimized(b).get());
3010  }
3011 
3017  IceInternal::ProxyHandle<Prx> ice_invocationTimeout(int timeout) const
3018  {
3019  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_invocationTimeout(timeout).get());
3020  }
3021 
3026  IceInternal::ProxyHandle<Prx> ice_twoway() const
3027  {
3028  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_twoway().get());
3029  }
3030 
3035  IceInternal::ProxyHandle<Prx> ice_oneway() const
3036  {
3037  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_oneway().get());
3038  }
3039 
3044  IceInternal::ProxyHandle<Prx> ice_batchOneway() const
3045  {
3046  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_batchOneway().get());
3047  }
3048 
3053  IceInternal::ProxyHandle<Prx> ice_datagram() const
3054  {
3055  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_datagram().get());
3056  }
3057 
3062  IceInternal::ProxyHandle<Prx> ice_batchDatagram() const
3063  {
3064  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_batchDatagram().get());
3065  }
3066 
3073  IceInternal::ProxyHandle<Prx> ice_compress(bool b) const
3074  {
3075  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_compress(b).get());
3076  }
3077 
3084  IceInternal::ProxyHandle<Prx> ice_timeout(int timeout) const
3085  {
3086  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_timeout(timeout).get());
3087  }
3088 
3095  IceInternal::ProxyHandle<Prx> ice_connectionId(const ::std::string& id) const
3096  {
3097  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_connectionId(id).get());
3098  }
3099 
3106  IceInternal::ProxyHandle<Prx> ice_fixed(const ::Ice::ConnectionPtr& connection) const
3107  {
3108  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_fixed(connection).get());
3109  }
3110 
3117  IceInternal::ProxyHandle<Prx> ice_encodingVersion(const ::Ice::EncodingVersion& version) const
3118  {
3119  return dynamic_cast<Prx*>(::IceProxy::Ice::Object::ice_encodingVersion(version).get());
3120  }
3121 
3122 protected:
3123 
3125  virtual ::IceProxy::Ice::Object* _newInstance() const = 0;
3127 };
3128 
3135 ICE_API bool proxyIdentityLess(const ObjectPrx& lhs, const ObjectPrx& rhs);
3136 
3143 ICE_API bool proxyIdentityEqual(const ObjectPrx& lhs, const ObjectPrx& rhs);
3144 
3152 ICE_API bool proxyIdentityAndFacetLess(const ObjectPrx& lhs, const ObjectPrx& rhs);
3153 
3161 ICE_API bool proxyIdentityAndFacetEqual(const ObjectPrx& lhs, const ObjectPrx& rhs);
3162 
3168 struct ProxyIdentityLess
3169 #if (ICE_CPLUSPLUS < 201703L)
3170  : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3171 #endif
3172 {
3173  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3174  {
3175  return proxyIdentityLess(lhs, rhs);
3176  }
3177 };
3178 
3184 struct ProxyIdentityEqual
3185 #if (ICE_CPLUSPLUS < 201703L)
3186  : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3187 #endif
3188 {
3189  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3190  {
3191  return proxyIdentityEqual(lhs, rhs);
3192  }
3193 };
3194 
3200 struct ProxyIdentityAndFacetLess
3201 #if (ICE_CPLUSPLUS < 201703L)
3202  : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3203 #endif
3204 {
3205  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3206  {
3207  return proxyIdentityAndFacetLess(lhs, rhs);
3208  }
3209 };
3210 
3216 struct ProxyIdentityAndFacetEqual
3217 #if (ICE_CPLUSPLUS < 201703L)
3218  : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3219 #endif
3220 {
3221  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3222  {
3223  return proxyIdentityAndFacetEqual(lhs, rhs);
3224  }
3225 };
3226 
3227 }
3228 
3229 namespace IceInternal
3230 {
3231 
3232 //
3233 // Inline comparison functions for proxies
3234 //
3235 template<typename T, typename U>
3236 inline bool operator==(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3237 {
3238  ::IceProxy::Ice::Object* l = lhs._upCast();
3239  ::IceProxy::Ice::Object* r = rhs._upCast();
3240  if(l && r)
3241  {
3242  return *l == *r;
3243  }
3244  else
3245  {
3246  return !l && !r;
3247  }
3248 }
3249 
3250 template<typename T, typename U>
3251 inline bool operator!=(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3252 {
3253  return !operator==(lhs, rhs);
3254 }
3255 
3256 template<typename T, typename U>
3257 inline bool operator<(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3258 {
3259  ::IceProxy::Ice::Object* l = lhs._upCast();
3260  ::IceProxy::Ice::Object* r = rhs._upCast();
3261  if(l && r)
3262  {
3263  return *l < *r;
3264  }
3265  else
3266  {
3267  return !l && r;
3268  }
3269 }
3270 
3271 template<typename T, typename U>
3272 inline bool operator<=(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3273 {
3274  return lhs < rhs || lhs == rhs;
3275 }
3276 
3277 template<typename T, typename U>
3278 inline bool operator>(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3279 {
3280  return !(lhs < rhs || lhs == rhs);
3281 }
3282 
3283 template<typename T, typename U>
3284 inline bool operator>=(const ProxyHandle<T>& lhs, const ProxyHandle<U>& rhs)
3285 {
3286  return !(lhs < rhs);
3287 }
3288 
3289 //
3290 // checkedCast and uncheckedCast functions without facet:
3291 //
3292 template<typename P> P
3293 checkedCastImpl(const ::Ice::ObjectPrx& b, const ::Ice::Context& context)
3294 {
3295  P d = 0;
3296  if(b.get())
3297  {
3298  typedef typename P::element_type T;
3299 
3300  if(b->ice_isA(T::ice_staticId(), context))
3301  {
3302  d = new T;
3303  d->_copyFrom(b);
3304  }
3305  }
3306  return d;
3307 }
3308 
3309 template<typename P> P
3310 uncheckedCastImpl(const ::Ice::ObjectPrx& b)
3311 {
3312  P d = 0;
3313  if(b)
3314  {
3315  typedef typename P::element_type T;
3316 
3317  d = dynamic_cast<T*>(b.get());
3318  if(!d)
3319  {
3320  d = new T;
3321  d->_copyFrom(b);
3322  }
3323  }
3324  return d;
3325 }
3326 
3327 //
3328 // checkedCast and uncheckedCast with facet:
3329 //
3330 
3331 //
3332 // Helper with type ID.
3333 //
3334 ICE_API ::Ice::ObjectPrx checkedCastImpl(const ::Ice::ObjectPrx&, const std::string&, const std::string&,
3336 
3337 //
3338 // Specializations for P = ::Ice::ObjectPrx
3339 // We have to use inline functions for broken compilers such as VC7.
3340 //
3341 
3342 template<> inline ::Ice::ObjectPrx
3343 checkedCastImpl< ::Ice::ObjectPrx>(const ::Ice::ObjectPrx& b, const std::string& f, const ::Ice::Context& context)
3344 {
3345  return checkedCastImpl(b, f, "::Ice::Object", context);
3346 }
3347 
3348 template<> inline ::Ice::ObjectPrx
3349 uncheckedCastImpl< ::Ice::ObjectPrx>(const ::Ice::ObjectPrx& b, const std::string& f)
3350 {
3351  ::Ice::ObjectPrx d = 0;
3352  if(b)
3353  {
3354  d = b->ice_facet(f);
3355  }
3356  return d;
3357 }
3358 
3359 template<typename P> P
3360 checkedCastImpl(const ::Ice::ObjectPrx& b, const std::string& f, const ::Ice::Context& context)
3361 {
3362  P d = 0;
3363 
3364  typedef typename P::element_type T;
3365  ::Ice::ObjectPrx bb = checkedCastImpl(b, f, T::ice_staticId(), context);
3366 
3367  if(bb)
3368  {
3369  d = new T;
3370  d->_copyFrom(bb);
3371  }
3372  return d;
3373 }
3374 
3375 template<typename P> P
3376 uncheckedCastImpl(const ::Ice::ObjectPrx& b, const std::string& f)
3377 {
3378  P d = 0;
3379  if(b)
3380  {
3381  typedef typename P::element_type T;
3382 
3383  ::Ice::ObjectPrx bb = b->ice_facet(f);
3384  d = new T;
3385  d->_copyFrom(bb);
3386  }
3387  return d;
3388 }
3389 }
3390 
3391 //
3392 // checkedCast and uncheckedCast functions provided in the Ice namespace
3393 //
3394 namespace Ice
3395 {
3396 
3404 template<typename P, typename Y> inline P
3405 checkedCast(const ::IceInternal::ProxyHandle<Y>& b, const ::Ice::Context& context = ::Ice::noExplicitContext)
3406 {
3407  Y* tag = 0;
3408  return ::IceInternal::checkedCastHelper<typename P::element_type>(b, tag, context);
3409 }
3410 
3416 template<typename P, typename Y> inline P
3417 uncheckedCast(const ::IceInternal::ProxyHandle<Y>& b)
3418 {
3419  Y* tag = 0;
3420  return ::IceInternal::uncheckedCastHelper<typename P::element_type>(b, tag);
3421 }
3422 
3431 template<typename P> inline P
3432 checkedCast(const ::Ice::ObjectPrx& b, const std::string& f, const ::Ice::Context& context = ::Ice::noExplicitContext)
3433 {
3434  return ::IceInternal::checkedCastImpl<P>(b, f, context);
3435 }
3436 
3443 template<typename P> inline P
3444 uncheckedCast(const ::Ice::ObjectPrx& b, const std::string& f)
3445 {
3446  return ::IceInternal::uncheckedCastImpl<P>(b, f);
3447 }
3448 
3449 }
3450 
3451 namespace IceInternal
3452 {
3453 
3454 //
3455 // Base template for operation callbacks.
3456 //
3457 template<class T>
3458 class CallbackNC : public virtual CallbackBase
3459 {
3460 public:
3461 
3462  typedef T callback_type;
3463 
3464  typedef IceUtil::Handle<T> TPtr;
3465 
3466  typedef void (T::*Exception)(const ::Ice::Exception&);
3467  typedef void (T::*Sent)(bool);
3468 
3469  CallbackNC(const TPtr& instance, Exception excb, Sent sentcb) : _callback(instance), _exception(excb), _sent(sentcb)
3470  {
3471  }
3472 
3473  virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr& cookie)
3474  {
3475  if(cookie != 0) // Makes sure begin_ was called without a cookie
3476  {
3477  throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "cookie specified for callback without cookie");
3478  }
3479  return this;
3480  }
3481 
3482  virtual void sent(const ::Ice::AsyncResultPtr& result) const
3483  {
3484  if(_sent)
3485  {
3486  (_callback.get()->*_sent)(result->sentSynchronously());
3487  }
3488  }
3489 
3490  virtual bool hasSentCallback() const
3491  {
3492  return _sent != 0;
3493  }
3494 
3495 protected:
3496 
3497  void exception(const ::Ice::AsyncResultPtr&, const ::Ice::Exception& ex) const
3498  {
3499  if(_exception)
3500  {
3501  (_callback.get()->*_exception)(ex);
3502  }
3503  }
3504 
3505  TPtr _callback;
3506 
3507 private:
3508 
3509  Exception _exception;
3510  Sent _sent;
3511 };
3512 
3513 template<class T, typename CT>
3514 class Callback : public virtual CallbackBase
3515 {
3516 public:
3517 
3518  typedef T callback_type;
3519  typedef CT cookie_type;
3520 
3521  typedef IceUtil::Handle<T> TPtr;
3522 
3523  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3524  typedef void (T::*Sent)(bool, const CT&);
3525 
3526  Callback(const TPtr& instance, Exception excb, Sent sentcb) : _callback(instance), _exception(excb), _sent(sentcb)
3527  {
3528  }
3529 
3530  virtual CallbackBasePtr verify(const ::Ice::LocalObjectPtr& cookie)
3531  {
3532  if(cookie && !CT::dynamicCast(cookie))
3533  {
3534  throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "unexpected cookie type");
3535  }
3536  return this;
3537  }
3538 
3539  virtual void sent(const ::Ice::AsyncResultPtr& result) const
3540  {
3541  if(_sent)
3542  {
3543  (_callback.get()->*_sent)(result->sentSynchronously(), CT::dynamicCast(result->getCookie()));
3544  }
3545  }
3546 
3547  virtual bool hasSentCallback() const
3548  {
3549  return _sent != 0;
3550  }
3551 
3552 protected:
3553 
3554  void exception(const ::Ice::AsyncResultPtr& result, const ::Ice::Exception& ex) const
3555  {
3556  if(_exception)
3557  {
3558  (_callback.get()->*_exception)(ex, CT::dynamicCast(result->getCookie()));
3559  }
3560  }
3561 
3562  TPtr _callback;
3563 
3564 private:
3565 
3566  Exception _exception;
3567  Sent _sent;
3568 };
3569 
3570 //
3571 // Base class for twoway operation callbacks.
3572 //
3573 template<class T>
3574 class TwowayCallbackNC : public CallbackNC<T>
3575 {
3576 public:
3577 
3578  typedef IceUtil::Handle<T> TPtr;
3579 
3580  typedef void (T::*Exception)(const ::Ice::Exception&);
3581  typedef void (T::*Sent)(bool);
3582 
3583  TwowayCallbackNC(const TPtr& instance, bool cb, Exception excb, Sent sentcb) : CallbackNC<T>(instance, excb, sentcb)
3584  {
3585  CallbackBase::checkCallback(instance, cb || excb != 0);
3586  }
3587 };
3588 
3589 template<class T, typename CT>
3590 class TwowayCallback : public Callback<T, CT>
3591 {
3592 public:
3593 
3594  typedef IceUtil::Handle<T> TPtr;
3595 
3596  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3597  typedef void (T::*Sent)(bool, const CT&);
3598 
3599  TwowayCallback(const TPtr& instance, bool cb, Exception excb, Sent sentcb) : Callback<T, CT>(instance, excb, sentcb)
3600  {
3601  CallbackBase::checkCallback(instance, cb || excb != 0);
3602  }
3603 };
3604 
3605 //
3606 // Base template class for oneway operations callbacks.
3607 //
3608 template<class T>
3609 class OnewayCallbackNC : public CallbackNC<T>
3610 {
3611 public:
3612 
3613  typedef IceUtil::Handle<T> TPtr;
3614 
3615  typedef void (T::*Exception)(const ::Ice::Exception&);
3616  typedef void (T::*Sent)(bool);
3617  typedef void (T::*Response)();
3618 
3619  OnewayCallbackNC(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3620  CallbackNC<T>(instance, excb, sentcb), _response(cb)
3621  {
3622  CallbackBase::checkCallback(instance, cb != 0 || excb != 0);
3623  }
3624 
3625  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3626  {
3627  try
3628  {
3629  result->getProxy()->_end(result, result->getOperation());
3630  }
3631  catch(const ::Ice::Exception& ex)
3632  {
3633  CallbackNC<T>::exception(result, ex);
3634  return;
3635  }
3636  if(_response)
3637  {
3638  (CallbackNC<T>::_callback.get()->*_response)();
3639  }
3640  }
3641 
3642 private:
3643 
3644  Response _response;
3645 };
3646 
3647 template<class T, typename CT>
3648 class OnewayCallback : public Callback<T, CT>
3649 {
3650 public:
3651 
3652  typedef IceUtil::Handle<T> TPtr;
3653 
3654  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3655  typedef void (T::*Sent)(bool, const CT&);
3656  typedef void (T::*Response)(const CT&);
3657 
3658  OnewayCallback(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3659  Callback<T, CT>(instance, excb, sentcb), _response(cb)
3660  {
3661  CallbackBase::checkCallback(instance, cb != 0 || excb != 0);
3662  }
3663 
3664  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3665  {
3666  try
3667  {
3668  result->getProxy()->_end(result, result->getOperation());
3669  }
3670  catch(const ::Ice::Exception& ex)
3671  {
3672  Callback<T, CT>::exception(result, ex);
3673  return;
3674  }
3675  if(_response)
3676  {
3677  (Callback<T, CT>::_callback.get()->*_response)(CT::dynamicCast(result->getCookie()));
3678  }
3679  }
3680 
3681 private:
3682 
3683  Response _response;
3684 };
3685 
3686 }
3687 
3688 namespace Ice
3689 {
3690 
3697 template<class T>
3698 class CallbackNC_Object_ice_isA : public Callback_Object_ice_isA_Base, public ::IceInternal::TwowayCallbackNC<T>
3699 {
3700 public:
3701 
3702  typedef IceUtil::Handle<T> TPtr;
3703 
3704  typedef void (T::*Exception)(const ::Ice::Exception&);
3705  typedef void (T::*Sent)(bool);
3706  typedef void (T::*Response)(bool);
3707 
3708  CallbackNC_Object_ice_isA(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3709  ::IceInternal::TwowayCallbackNC<T>(instance, cb != 0, excb, sentcb), _response(cb)
3710  {
3711  }
3712 
3714  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3715  {
3716  bool ret;
3717  try
3718  {
3719  ret = result->getProxy()->end_ice_isA(result);
3720  }
3721  catch(const ::Ice::Exception& ex)
3722  {
3723  ::IceInternal::CallbackNC<T>::exception(result, ex);
3724  return;
3725  }
3726  if(_response)
3727  {
3728  (::IceInternal::CallbackNC<T>::_callback.get()->*_response)(ret);
3729  }
3730  }
3732 
3733 private:
3734 
3735  Response _response;
3736 };
3737 
3744 template<class T, typename CT>
3745 class Callback_Object_ice_isA : public Callback_Object_ice_isA_Base, public ::IceInternal::TwowayCallback<T, CT>
3746 {
3747 public:
3748 
3749  typedef IceUtil::Handle<T> TPtr;
3750 
3751  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3752  typedef void (T::*Sent)(bool, const CT&);
3753  typedef void (T::*Response)(bool, const CT&);
3754 
3755  Callback_Object_ice_isA(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3756  ::IceInternal::TwowayCallback<T, CT>(instance, cb != 0, excb, sentcb), _response(cb)
3757  {
3758  }
3759 
3761  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3762  {
3763  bool ret;
3764  try
3765  {
3766  ret = result->getProxy()->end_ice_isA(result);
3767  }
3768  catch(const ::Ice::Exception& ex)
3769  {
3770  ::IceInternal::Callback<T, CT>::exception(result, ex);
3771  return;
3772  }
3773  if(_response)
3774  {
3775  (::IceInternal::Callback<T, CT>::_callback.get()->*_response)(ret,
3776  CT::dynamicCast(result->getCookie()));
3777  }
3778  }
3780 
3781 private:
3782 
3783  Response _response;
3784 };
3785 
3792 template<class T>
3793 class CallbackNC_Object_ice_ping : public Callback_Object_ice_ping_Base, public ::IceInternal::OnewayCallbackNC<T>
3794 {
3795 public:
3796 
3797  typedef IceUtil::Handle<T> TPtr;
3798 
3799  typedef void (T::*Exception)(const ::Ice::Exception&);
3800  typedef void (T::*Sent)(bool);
3801  typedef void (T::*Response)();
3802 
3803  CallbackNC_Object_ice_ping(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3804  ::IceInternal::OnewayCallbackNC<T>(instance, cb, excb, sentcb)
3805  {
3806  }
3807 };
3808 
3815 template<class T, typename CT>
3816 class Callback_Object_ice_ping : public Callback_Object_ice_ping_Base, public ::IceInternal::OnewayCallback<T, CT>
3817 {
3818 public:
3819 
3820  typedef IceUtil::Handle<T> TPtr;
3821 
3822  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3823  typedef void (T::*Sent)(bool, const CT&);
3824  typedef void (T::*Response)(const CT&);
3825 
3826  Callback_Object_ice_ping(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3827  ::IceInternal::OnewayCallback<T, CT>(instance, cb, excb, sentcb)
3828  {
3829  }
3830 };
3831 
3838 template<class T>
3839 class CallbackNC_Object_ice_ids : public Callback_Object_ice_ids_Base, public ::IceInternal::TwowayCallbackNC<T>
3840 {
3841 public:
3842 
3843  typedef IceUtil::Handle<T> TPtr;
3844 
3845  typedef void (T::*Exception)(const ::Ice::Exception&);
3846  typedef void (T::*Sent)(bool);
3847  typedef void (T::*Response)(const ::std::vector< ::std::string>&);
3848 
3849  CallbackNC_Object_ice_ids(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3850  ::IceInternal::TwowayCallbackNC<T>(instance, cb != 0, excb, sentcb), _response(cb)
3851  {
3852  }
3853 
3855  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3856  {
3857  ::std::vector< ::std::string> ret;
3858  try
3859  {
3860  ret = result->getProxy()->end_ice_ids(result);
3861  }
3862  catch(const ::Ice::Exception& ex)
3863  {
3864  ::IceInternal::CallbackNC<T>::exception(result, ex);
3865  return;
3866  }
3867  if(_response)
3868  {
3869  (::IceInternal::CallbackNC<T>::_callback.get()->*_response)(ret);
3870  }
3871  }
3873 
3874 private:
3875 
3876  Response _response;
3877 };
3878 
3885 template<class T, typename CT>
3886 class Callback_Object_ice_ids : public Callback_Object_ice_ids_Base, public ::IceInternal::TwowayCallback<T, CT>
3887 {
3888 public:
3889 
3890  typedef IceUtil::Handle<T> TPtr;
3891 
3892  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3893  typedef void (T::*Sent)(bool, const CT&);
3894  typedef void (T::*Response)(const ::std::vector< ::std::string>&, const CT&);
3895 
3896  Callback_Object_ice_ids(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3897  ::IceInternal::TwowayCallback<T, CT>(instance, cb != 0, excb, sentcb), _response(cb)
3898  {
3899  }
3900 
3902  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3903  {
3904  ::std::vector< ::std::string> ret;
3905  try
3906  {
3907  ret = result->getProxy()->end_ice_ids(result);
3908  }
3909  catch(const ::Ice::Exception& ex)
3910  {
3911  ::IceInternal::Callback<T, CT>::exception(result, ex);
3912  return;
3913  }
3914  if(_response)
3915  {
3916  (::IceInternal::Callback<T, CT>::_callback.get()->*_response)(ret,
3917  CT::dynamicCast(result->getCookie()));
3918  }
3919  }
3921 
3922 private:
3923 
3924  Response _response;
3925 };
3926 
3933 template<class T>
3934 class CallbackNC_Object_ice_id : public Callback_Object_ice_id_Base, public ::IceInternal::TwowayCallbackNC<T>
3935 {
3936 public:
3937 
3938  typedef IceUtil::Handle<T> TPtr;
3939 
3940  typedef void (T::*Exception)(const ::Ice::Exception&);
3941  typedef void (T::*Sent)(bool);
3942  typedef void (T::*Response)(const ::std::string&);
3943 
3944  CallbackNC_Object_ice_id(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3945  ::IceInternal::TwowayCallbackNC<T>(instance, cb != 0, excb, sentcb), _response(cb)
3946  {
3947  }
3948 
3950  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3951  {
3952  ::std::string ret;
3953  try
3954  {
3955  ret = result->getProxy()->end_ice_id(result);
3956  }
3957  catch(const ::Ice::Exception& ex)
3958  {
3959  ::IceInternal::CallbackNC<T>::exception(result, ex);
3960  return;
3961  }
3962  if(_response)
3963  {
3964  (::IceInternal::CallbackNC<T>::_callback.get()->*_response)(ret);
3965  }
3966  }
3968 
3969 private:
3970 
3971  Response _response;
3972 };
3973 
3980 template<class T, typename CT>
3981 class Callback_Object_ice_id : public Callback_Object_ice_id_Base, public ::IceInternal::TwowayCallback<T, CT>
3982 {
3983 public:
3984 
3985  typedef IceUtil::Handle<T> TPtr;
3986 
3987  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
3988  typedef void (T::*Sent)(bool, const CT&);
3989  typedef void (T::*Response)(const ::std::string&, const CT&);
3990 
3991  Callback_Object_ice_id(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
3992  ::IceInternal::TwowayCallback<T, CT>(instance, cb != 0, excb, sentcb), _response(cb)
3993  {
3994  }
3995 
3997  virtual void completed(const ::Ice::AsyncResultPtr& result) const
3998  {
3999  ::std::string ret;
4000  try
4001  {
4002  ret = result->getProxy()->end_ice_id(result);
4003  }
4004  catch(const ::Ice::Exception& ex)
4005  {
4006  ::IceInternal::Callback<T, CT>::exception(result, ex);
4007  return;
4008  }
4009  if(_response)
4010  {
4011  (::IceInternal::Callback<T, CT>::_callback.get()->*_response)(ret,
4012  CT::dynamicCast(result->getCookie()));
4013  }
4014  }
4016 
4017 private:
4018 
4019  Response _response;
4020 };
4021 
4028 template<class T>
4029 class CallbackNC_Object_ice_invoke : public Callback_Object_ice_invoke_Base, public ::IceInternal::TwowayCallbackNC<T>
4030 {
4031 public:
4032 
4033  typedef IceUtil::Handle<T> TPtr;
4034 
4035  typedef void (T::*Exception)(const ::Ice::Exception&);
4036  typedef void (T::*Sent)(bool);
4037  typedef void (T::*Response)(bool, const std::vector< ::Ice::Byte>&);
4038  typedef void (T::*ResponseArray)(bool, const std::pair<const ::Ice::Byte*, const ::Ice::Byte*>&);
4039 
4040  CallbackNC_Object_ice_invoke(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
4041  ::IceInternal::TwowayCallbackNC<T>(instance, cb != 0, excb, sentcb), _response(cb), _responseArray(0)
4042  {
4043  }
4044 
4045  CallbackNC_Object_ice_invoke(const TPtr& instance, ResponseArray cb, Exception excb, Sent sentcb) :
4046  ::IceInternal::TwowayCallbackNC<T>(instance, cb != 0, excb, sentcb), _response(0), _responseArray(cb)
4047  {
4048  }
4049 
4051  virtual void completed(const ::Ice::AsyncResultPtr& result) const
4052  {
4053  if(_response)
4054  {
4055  bool ok;
4056  std::vector< ::Ice::Byte> outParams;
4057  try
4058  {
4059  ok = result->getProxy()->end_ice_invoke(outParams, result);
4060  }
4061  catch(const ::Ice::Exception& ex)
4062  {
4063  ::IceInternal::CallbackNC<T>::exception(result, ex);
4064  return;
4065  }
4066  (::IceInternal::CallbackNC<T>::_callback.get()->*_response)(ok, outParams);
4067  }
4068  else
4069  {
4070  bool ok;
4071  std::pair<const ::Ice::Byte*, const::Ice::Byte*> outParams;
4072  try
4073  {
4074  ok = result->getProxy()->_iceI_end_ice_invoke(outParams, result);
4075  }
4076  catch(const ::Ice::Exception& ex)
4077  {
4078  ::IceInternal::CallbackNC<T>::exception(result, ex);
4079  return;
4080  }
4081  if(_responseArray)
4082  {
4083  (::IceInternal::CallbackNC<T>::_callback.get()->*_responseArray)(ok, outParams);
4084  }
4085  }
4086  }
4088 
4089 private:
4090 
4091  Response _response;
4092  ResponseArray _responseArray;
4093 };
4094 
4101 template<class T, typename CT>
4102 class Callback_Object_ice_invoke : public Callback_Object_ice_invoke_Base, public ::IceInternal::TwowayCallback<T, CT>
4103 {
4104 public:
4105 
4106  typedef IceUtil::Handle<T> TPtr;
4107 
4108  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
4109  typedef void (T::*Sent)(bool, const CT&);
4110  typedef void (T::*Response)(bool, const std::vector< ::Ice::Byte>&, const CT&);
4111  typedef void (T::*ResponseArray)(bool, const std::pair<const ::Ice::Byte*, const ::Ice::Byte*>&, const CT&);
4112 
4113  Callback_Object_ice_invoke(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
4114  ::IceInternal::TwowayCallback<T, CT>(instance, cb != 0, excb, sentcb), _response(cb), _responseArray(0)
4115  {
4116  }
4117 
4118  Callback_Object_ice_invoke(const TPtr& instance, ResponseArray cb, Exception excb, Sent sentcb) :
4119  ::IceInternal::TwowayCallback<T, CT>(instance, cb != 0, excb, sentcb), _response(0), _responseArray(cb)
4120  {
4121  }
4122 
4124  virtual void completed(const ::Ice::AsyncResultPtr& result) const
4125  {
4126  if(_response)
4127  {
4128  bool ok;
4129  std::vector< ::Ice::Byte> outParams;
4130  try
4131  {
4132  ok = result->getProxy()->end_ice_invoke(outParams, result);
4133  }
4134  catch(const ::Ice::Exception& ex)
4135  {
4136  ::IceInternal::Callback<T, CT>::exception(result, ex);
4137  return;
4138  }
4139  (::IceInternal::Callback<T, CT>::_callback.get()->*_response)(ok,
4140  outParams,
4141  CT::dynamicCast(result->getCookie()));
4142  }
4143  else
4144  {
4145  bool ok;
4146  std::pair<const ::Ice::Byte*, const::Ice::Byte*> outParams;
4147  try
4148  {
4149  ok = result->getProxy()->_iceI_end_ice_invoke(outParams, result);
4150  }
4151  catch(const ::Ice::Exception& ex)
4152  {
4153  ::IceInternal::Callback<T, CT>::exception(result, ex);
4154  return;
4155  }
4156  if(_responseArray)
4157  {
4158  (::IceInternal::Callback<T, CT>::_callback.get()->*_responseArray)(ok,
4159  outParams,
4160  CT::dynamicCast(
4161  result->getCookie()));
4162  }
4163  }
4164  }
4166 
4167 private:
4168 
4169  Response _response;
4170  ResponseArray _responseArray;
4171 };
4172 
4179 template<class T>
4180 class CallbackNC_Object_ice_getConnection : public Callback_Object_ice_getConnection_Base,
4181  public ::IceInternal::CallbackNC<T>
4182 {
4183 public:
4184 
4185  typedef IceUtil::Handle<T> TPtr;
4186 
4187  typedef void (T::*Response)(const ::Ice::ConnectionPtr&);
4188  typedef void (T::*Exception)(const ::Ice::Exception&);
4189  typedef void (T::*Sent)(bool);
4190 
4191  CallbackNC_Object_ice_getConnection(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
4192  ::IceInternal::CallbackNC<T>(instance, excb, sentcb), _response(cb)
4193  {
4194  }
4195 
4197  virtual void completed(const ::Ice::AsyncResultPtr& result) const
4198  {
4199  ::Ice::ConnectionPtr ret;
4200  try
4201  {
4202  ret = result->getProxy()->end_ice_getConnection(result);
4203  }
4204  catch(const ::Ice::Exception& ex)
4205  {
4206  ::IceInternal::CallbackNC<T>::exception(result, ex);
4207  return;
4208  }
4209  if(_response)
4210  {
4211  (::IceInternal::CallbackNC<T>::_callback.get()->*_response)(ret);
4212  }
4213  }
4215 
4216 private:
4217 
4218  Response _response;
4219 };
4220 
4227 template<class T, typename CT>
4228 class Callback_Object_ice_getConnection : public Callback_Object_ice_getConnection_Base,
4229  public ::IceInternal::Callback<T, CT>
4230 {
4231 public:
4232 
4233  typedef IceUtil::Handle<T> TPtr;
4234 
4235  typedef void (T::*Response)(const ::Ice::ConnectionPtr&, const CT&);
4236  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
4237  typedef void (T::*Sent)(bool, const CT&);
4238 
4239  Callback_Object_ice_getConnection(const TPtr& instance, Response cb, Exception excb, Sent sentcb) :
4240  ::IceInternal::Callback<T, CT>(instance, excb, sentcb), _response(cb)
4241  {
4242  }
4243 
4245  virtual void completed(const ::Ice::AsyncResultPtr& result) const
4246  {
4247  ::Ice::ConnectionPtr ret;
4248  try
4249  {
4250  ret = result->getProxy()->end_ice_getConnection(result);
4251  }
4252  catch(const ::Ice::Exception& ex)
4253  {
4254  ::IceInternal::Callback<T, CT>::exception(result, ex);
4255  return;
4256  }
4257  if(_response)
4258  {
4259  (::IceInternal::Callback<T, CT>::_callback.get()->*_response)(ret,
4260  CT::dynamicCast(result->getCookie()));
4261  }
4262  }
4264 
4265 private:
4266 
4267  Response _response;
4268 };
4269 
4276 template<class T>
4277 class CallbackNC_Object_ice_flushBatchRequests : public Callback_Object_ice_flushBatchRequests_Base,
4278  public ::IceInternal::OnewayCallbackNC<T>
4279 {
4280 public:
4281 
4282  typedef IceUtil::Handle<T> TPtr;
4283 
4284  typedef void (T::*Exception)(const ::Ice::Exception&);
4285  typedef void (T::*Sent)(bool);
4286 
4287  CallbackNC_Object_ice_flushBatchRequests(const TPtr& instance, Exception excb, Sent sentcb) :
4288  ::IceInternal::OnewayCallbackNC<T>(instance, 0, excb, sentcb)
4289  {
4290  }
4291 };
4292 
4299 template<class T, typename CT>
4300 class Callback_Object_ice_flushBatchRequests : public Callback_Object_ice_flushBatchRequests_Base,
4301  public ::IceInternal::OnewayCallback<T, CT>
4302 {
4303 public:
4304 
4305  typedef IceUtil::Handle<T> TPtr;
4306 
4307  typedef void (T::*Exception)(const ::Ice::Exception&, const CT&);
4308  typedef void (T::*Sent)(bool, const CT&);
4309 
4310  Callback_Object_ice_flushBatchRequests(const TPtr& instance, Exception excb, Sent sentcb) :
4311  ::IceInternal::OnewayCallback<T, CT>(instance, 0, excb, sentcb)
4312  {
4313  }
4314 };
4315 
4324 template<class T> Callback_Object_ice_isAPtr
4325 newCallback_Object_ice_isA(const IceUtil::Handle<T>& instance,
4326  void (T::*cb)(bool),
4327  void (T::*excb)(const ::Ice::Exception&),
4328  void (T::*sentcb)(bool) = 0)
4329 {
4330  return new CallbackNC_Object_ice_isA<T>(instance, cb, excb, sentcb);
4331 }
4332 
4341 template<class T, typename CT> Callback_Object_ice_isAPtr
4342 newCallback_Object_ice_isA(const IceUtil::Handle<T>& instance,
4343  void (T::*cb)(bool, const CT&),
4344  void (T::*excb)(const ::Ice::Exception&, const CT&),
4345  void (T::*sentcb)(bool, const CT&) = 0)
4346 {
4347  return new Callback_Object_ice_isA<T, CT>(instance, cb, excb, sentcb);
4348 }
4349 
4357 template<class T> Callback_Object_ice_isAPtr
4358 newCallback_Object_ice_isA(const IceUtil::Handle<T>& instance,
4359  void (T::*excb)(const ::Ice::Exception&),
4360  void (T::*sentcb)(bool) = 0)
4361 {
4362  return new CallbackNC_Object_ice_isA<T>(instance, 0, excb, sentcb);
4363 }
4364 
4372 template<class T, typename CT> Callback_Object_ice_isAPtr
4373 newCallback_Object_ice_isA(const IceUtil::Handle<T>& instance,
4374  void (T::*excb)(const ::Ice::Exception&, const CT&),
4375  void (T::*sentcb)(bool, const CT&) = 0)
4376 {
4377  return new Callback_Object_ice_isA<T, CT>(instance, 0, excb, sentcb);
4378 }
4379 
4388 template<class T> Callback_Object_ice_isAPtr
4389 newCallback_Object_ice_isA(T* instance,
4390  void (T::*cb)(bool),
4391  void (T::*excb)(const ::Ice::Exception&),
4392  void (T::*sentcb)(bool) = 0)
4393 {
4394  return new CallbackNC_Object_ice_isA<T>(instance, cb, excb, sentcb);
4395 }
4396 
4405 template<class T, typename CT> Callback_Object_ice_isAPtr
4406 newCallback_Object_ice_isA(T* instance,
4407  void (T::*cb)(bool, const CT&),
4408  void (T::*excb)(const ::Ice::Exception&, const CT&),
4409  void (T::*sentcb)(bool, const CT&) = 0)
4410 {
4411  return new Callback_Object_ice_isA<T, CT>(instance, cb, excb, sentcb);
4412 }
4413 
4421 template<class T> Callback_Object_ice_isAPtr
4422 newCallback_Object_ice_isA(T* instance,
4423  void (T::*excb)(const ::Ice::Exception&),
4424  void (T::*sentcb)(bool) = 0)
4425 {
4426  return new CallbackNC_Object_ice_isA<T>(instance, 0, excb, sentcb);
4427 }
4428 
4436 template<class T, typename CT> Callback_Object_ice_isAPtr
4437 newCallback_Object_ice_isA(T* instance,
4438  void (T::*excb)(const ::Ice::Exception&, const CT&),
4439  void (T::*sentcb)(bool, const CT&) = 0)
4440 {
4441  return new Callback_Object_ice_isA<T, CT>(instance, 0, excb, sentcb);
4442 }
4443 
4452 template<class T> Callback_Object_ice_pingPtr
4453 newCallback_Object_ice_ping(const IceUtil::Handle<T>& instance,
4454  void (T::*cb)(),
4455  void (T::*excb)(const ::Ice::Exception&),
4456  void (T::*sentcb)(bool) = 0)
4457 {
4458  return new CallbackNC_Object_ice_ping<T>(instance, cb, excb, sentcb);
4459 }
4460 
4469 template<class T, typename CT> Callback_Object_ice_pingPtr
4470 newCallback_Object_ice_ping(const IceUtil::Handle<T>& instance,
4471  void (T::*cb)(const CT&),
4472  void (T::*excb)(const ::Ice::Exception&, const CT&),
4473  void (T::*sentcb)(bool, const CT&) = 0)
4474 {
4475  return new Callback_Object_ice_ping<T, CT>(instance, cb, excb, sentcb);
4476 }
4477 
4485 template<class T> Callback_Object_ice_pingPtr
4486 newCallback_Object_ice_ping(const IceUtil::Handle<T>& instance,
4487  void (T::*excb)(const ::Ice::Exception&),
4488  void (T::*sentcb)(bool) = 0)
4489 {
4490  return new CallbackNC_Object_ice_ping<T>(instance, 0, excb, sentcb);
4491 }
4492 
4500 template<class T, typename CT> Callback_Object_ice_pingPtr
4501 newCallback_Object_ice_ping(const IceUtil::Handle<T>& instance,
4502  void (T::*excb)(const ::Ice::Exception&, const CT&),
4503  void (T::*sentcb)(bool, const CT&) = 0)
4504 {
4505  return new Callback_Object_ice_ping<T, CT>(instance, 0, excb, sentcb);
4506 }
4507 
4516 template<class T> Callback_Object_ice_pingPtr
4517 newCallback_Object_ice_ping(T* instance,
4518  void (T::*cb)(),
4519  void (T::*excb)(const ::Ice::Exception&),
4520  void (T::*sentcb)(bool) = 0)
4521 {
4522  return new CallbackNC_Object_ice_ping<T>(instance, cb, excb, sentcb);
4523 }
4524 
4533 template<class T, typename CT> Callback_Object_ice_pingPtr
4534 newCallback_Object_ice_ping(T* instance,
4535  void (T::*cb)(const CT&),
4536  void (T::*excb)(const ::Ice::Exception&, const CT&),
4537  void (T::*sentcb)(bool, const CT&) = 0)
4538 {
4539  return new Callback_Object_ice_ping<T, CT>(instance, cb, excb, sentcb);
4540 }
4541 
4549 template<class T> Callback_Object_ice_pingPtr
4550 newCallback_Object_ice_ping(T* instance,
4551  void (T::*excb)(const ::Ice::Exception&),
4552  void (T::*sentcb)(bool) = 0)
4553 {
4554  return new CallbackNC_Object_ice_ping<T>(instance, 0, excb, sentcb);
4555 }
4556 
4564 template<class T, typename CT> Callback_Object_ice_pingPtr
4565 newCallback_Object_ice_ping(T* instance,
4566  void (T::*excb)(const ::Ice::Exception&, const CT&),
4567  void (T::*sentcb)(bool, const CT&) = 0)
4568 {
4569  return new Callback_Object_ice_ping<T, CT>(instance, 0, excb, sentcb);
4570 }
4571 
4580 template<class T> Callback_Object_ice_idsPtr
4581 newCallback_Object_ice_ids(const IceUtil::Handle<T>& instance,
4582  void (T::*cb)(const ::std::vector< ::std::string>&),
4583  void (T::*excb)(const ::Ice::Exception&),
4584  void (T::*sentcb)(bool) = 0)
4585 {
4586  return new CallbackNC_Object_ice_ids<T>(instance, cb, excb, sentcb);
4587 }
4588 
4597 template<class T, typename CT> Callback_Object_ice_idsPtr
4598 newCallback_Object_ice_ids(const IceUtil::Handle<T>& instance,
4599  void (T::*cb)(const ::std::vector< ::std::string>&, const CT&),
4600  void (T::*excb)(const ::Ice::Exception&, const CT&),
4601  void (T::*sentcb)(bool, const CT&) = 0)
4602 {
4603  return new Callback_Object_ice_ids<T, CT>(instance, cb, excb, sentcb);
4604 }
4605 
4613 template<class T> Callback_Object_ice_idsPtr
4614 newCallback_Object_ice_ids(const IceUtil::Handle<T>& instance,
4615  void (T::*excb)(const ::Ice::Exception&),
4616  void (T::*sentcb)(bool) = 0)
4617 {
4618  return new CallbackNC_Object_ice_ids<T>(instance, 0, excb, sentcb);
4619 }
4620 
4628 template<class T, typename CT> Callback_Object_ice_idsPtr
4629 newCallback_Object_ice_ids(const IceUtil::Handle<T>& instance,
4630  void (T::*excb)(const ::Ice::Exception&, const CT&),
4631  void (T::*sentcb)(bool, const CT&) = 0)
4632 {
4633  return new Callback_Object_ice_ids<T, CT>(instance, 0, excb, sentcb);
4634 }
4635 
4644 template<class T> Callback_Object_ice_idsPtr
4645 newCallback_Object_ice_ids(T* instance,
4646  void (T::*cb)(const ::std::vector< ::std::string>&),
4647  void (T::*excb)(const ::Ice::Exception&),
4648  void (T::*sentcb)(bool) = 0)
4649 {
4650  return new CallbackNC_Object_ice_ids<T>(instance, cb, excb, sentcb);
4651 }
4652 
4661 template<class T, typename CT> Callback_Object_ice_idsPtr
4662 newCallback_Object_ice_ids(T* instance,
4663  void (T::*cb)(const ::std::vector< ::std::string>&, const CT&),
4664  void (T::*excb)(const ::Ice::Exception&, const CT&),
4665  void (T::*sentcb)(bool, const CT&) = 0)
4666 {
4667  return new Callback_Object_ice_ids<T, CT>(instance, cb, excb, sentcb);
4668 }
4669 
4677 template<class T> Callback_Object_ice_idsPtr
4678 newCallback_Object_ice_ids(T* instance,
4679  void (T::*excb)(const ::Ice::Exception&),
4680  void (T::*sentcb)(bool) = 0)
4681 {
4682  return new CallbackNC_Object_ice_ids<T>(instance, 0, excb, sentcb);
4683 }
4684 
4692 template<class T, typename CT> Callback_Object_ice_idsPtr
4693 newCallback_Object_ice_ids(T* instance,
4694  void (T::*excb)(const ::Ice::Exception&, const CT&),
4695  void (T::*sentcb)(bool, const CT&) = 0)
4696 {
4697  return new Callback_Object_ice_ids<T, CT>(instance, 0, excb, sentcb);
4698 }
4699 
4708 template<class T> Callback_Object_ice_idPtr
4709 newCallback_Object_ice_id(const IceUtil::Handle<T>& instance,
4710  void (T::*cb)(const ::std::string&),
4711  void (T::*excb)(const ::Ice::Exception&),
4712  void (T::*sentcb)(bool) = 0)
4713 {
4714  return new CallbackNC_Object_ice_id<T>(instance, cb, excb, sentcb);
4715 }
4716 
4725 template<class T, typename CT> Callback_Object_ice_idPtr
4726 newCallback_Object_ice_id(const IceUtil::Handle<T>& instance,
4727  void (T::*cb)(const ::std::string&, const CT&),
4728  void (T::*excb)(const ::Ice::Exception&, const CT&),
4729  void (T::*sentcb)(bool, const CT&) = 0)
4730 {
4731  return new Callback_Object_ice_id<T, CT>(instance, cb, excb, sentcb);
4732 }
4733 
4741 template<class T> Callback_Object_ice_idPtr
4742 newCallback_Object_ice_id(const IceUtil::Handle<T>& instance,
4743  void (T::*excb)(const ::Ice::Exception&),
4744  void (T::*sentcb)(bool) = 0)
4745 {
4746  return new CallbackNC_Object_ice_id<T>(instance, 0, excb, sentcb);
4747 }
4748 
4756 template<class T, typename CT> Callback_Object_ice_idPtr
4757 newCallback_Object_ice_id(const IceUtil::Handle<T>& instance,
4758  void (T::*excb)(const ::Ice::Exception&, const CT&),
4759  void (T::*sentcb)(bool, const CT&) = 0)
4760 {
4761  return new Callback_Object_ice_id<T, CT>(instance, 0, excb, sentcb);
4762 }
4763 
4772 template<class T> Callback_Object_ice_idPtr
4773 newCallback_Object_ice_id(T* instance,
4774  void (T::*cb)(const ::std::string&),
4775  void (T::*excb)(const ::Ice::Exception&),
4776  void (T::*sentcb)(bool) = 0)
4777 {
4778  return new CallbackNC_Object_ice_id<T>(instance, cb, excb, sentcb);
4779 }
4780 
4789 template<class T, typename CT> Callback_Object_ice_idPtr
4790 newCallback_Object_ice_id(T* instance,
4791  void (T::*cb)(const ::std::string&, const CT&),
4792  void (T::*excb)(const ::Ice::Exception&, const CT&),
4793  void (T::*sentcb)(bool, const CT&) = 0)
4794 {
4795  return new Callback_Object_ice_id<T, CT>(instance, cb, excb, sentcb);
4796 }
4797 
4805 template<class T> Callback_Object_ice_idPtr
4806 newCallback_Object_ice_id(T* instance,
4807  void (T::*excb)(const ::Ice::Exception&),
4808  void (T::*sentcb)(bool) = 0)
4809 {
4810  return new CallbackNC_Object_ice_id<T>(instance, 0, excb, sentcb);
4811 }
4812 
4820 template<class T, typename CT> Callback_Object_ice_idPtr
4821 newCallback_Object_ice_id(T* instance,
4822  void (T::*excb)(const ::Ice::Exception&, const CT&),
4823  void (T::*sentcb)(bool, const CT&) = 0)
4824 {
4825  return new Callback_Object_ice_id<T, CT>(instance, 0, excb, sentcb);
4826 }
4827 
4836 template<class T> Callback_Object_ice_invokePtr
4837 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4838  void (T::*cb)(bool, const std::vector<Ice::Byte>&),
4839  void (T::*excb)(const ::Ice::Exception&),
4840  void (T::*sentcb)(bool) = 0)
4841 {
4842  return new CallbackNC_Object_ice_invoke<T>(instance, cb, excb, sentcb);
4843 }
4844 
4853 template<class T> Callback_Object_ice_invokePtr
4854 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4855  void (T::*cb)(bool, const std::pair<const Byte*, const Byte*>&),
4856  void (T::*excb)(const ::Ice::Exception&),
4857  void (T::*sentcb)(bool) = 0)
4858 {
4859  return new CallbackNC_Object_ice_invoke<T>(instance, cb, excb, sentcb);
4860 }
4861 
4870 template<class T, typename CT> Callback_Object_ice_invokePtr
4871 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4872  void (T::*cb)(bool, const std::vector<Ice::Byte>&, const CT&),
4873  void (T::*excb)(const ::Ice::Exception&, const CT&),
4874  void (T::*sentcb)(bool, const CT&) = 0)
4875 {
4876  return new Callback_Object_ice_invoke<T, CT>(instance, cb, excb, sentcb);
4877 }
4878 
4887 template<class T, typename CT> Callback_Object_ice_invokePtr
4888 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4889  void (T::*cb)(bool, const std::pair<const Byte*, const Byte*>&,
4890  const CT&),
4891  void (T::*excb)(const ::Ice::Exception&, const CT&),
4892  void (T::*sentcb)(bool, const CT&) = 0)
4893 {
4894  return new Callback_Object_ice_invoke<T, CT>(instance, cb, excb, sentcb);
4895 }
4896 
4904 template<class T> Callback_Object_ice_invokePtr
4905 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4906  void (T::*excb)(const ::Ice::Exception&),
4907  void (T::*sentcb)(bool) = 0)
4908 {
4909  return new CallbackNC_Object_ice_invoke<T>(instance, 0, excb, sentcb);
4910 }
4911 
4919 template<class T, typename CT> Callback_Object_ice_invokePtr
4920 newCallback_Object_ice_invoke(const IceUtil::Handle<T>& instance,
4921  void (T::*excb)(const ::Ice::Exception&, const CT&),
4922  void (T::*sentcb)(bool, const CT&) = 0)
4923 {
4924  return new Callback_Object_ice_invoke<T, CT>(instance, 0, excb, sentcb);
4925 }
4926 
4935 template<class T> Callback_Object_ice_invokePtr
4936 newCallback_Object_ice_invoke(T* instance,
4937  void (T::*cb)(bool, const std::vector<Ice::Byte>&),
4938  void (T::*excb)(const ::Ice::Exception&),
4939  void (T::*sentcb)(bool) = 0)
4940 {
4941  return new CallbackNC_Object_ice_invoke<T>(instance, cb, excb, sentcb);
4942 }
4943 
4952 template<class T> Callback_Object_ice_invokePtr
4953 newCallback_Object_ice_invoke(T* instance,
4954  void (T::*cb)(bool, const std::pair<const Byte*, const Byte*>&),
4955  void (T::*excb)(const ::Ice::Exception&),
4956  void (T::*sentcb)(bool) = 0)
4957 {
4958  return new CallbackNC_Object_ice_invoke<T>(instance, cb, excb, sentcb);
4959 }
4960 
4969 template<class T, typename CT> Callback_Object_ice_invokePtr
4970 newCallback_Object_ice_invoke(T* instance,
4971  void (T::*cb)(bool, const std::vector<Ice::Byte>&, const CT&),
4972  void (T::*excb)(const ::Ice::Exception&, const CT&),
4973  void (T::*sentcb)(bool, const CT&) = 0)
4974 {
4975  return new Callback_Object_ice_invoke<T, CT>(instance, cb, excb, sentcb);
4976 }
4977 
4986 template<class T, typename CT> Callback_Object_ice_invokePtr
4987 newCallback_Object_ice_invoke(T* instance,
4988  void (T::*cb)(bool, const std::pair<const Byte*, const Byte*>&, const CT&),
4989  void (T::*excb)(const ::Ice::Exception&, const CT&),
4990  void (T::*sentcb)(bool, const CT&) = 0)
4991 {
4992  return new Callback_Object_ice_invoke<T, CT>(instance, cb, excb, sentcb);
4993 }
4994 
5002 template<class T> Callback_Object_ice_invokePtr
5003 newCallback_Object_ice_invoke(T* instance,
5004  void (T::*excb)(const ::Ice::Exception&),
5005  void (T::*sentcb)(bool) = 0)
5006 {
5007  return new CallbackNC_Object_ice_invoke<T>(
5008  instance, static_cast<void (T::*)(bool, const std::vector<Ice::Byte>&)>(0), excb, sentcb);
5009 }
5010 
5018 template<class T, typename CT> Callback_Object_ice_invokePtr
5019 newCallback_Object_ice_invoke(T* instance,
5020  void (T::*excb)(const ::Ice::Exception&, const CT&),
5021  void (T::*sentcb)(bool, const CT&) = 0)
5022 {
5023  return new Callback_Object_ice_invoke<T, CT>(
5024  instance, static_cast<void (T::*)(bool, const std::vector<Ice::Byte>&, const CT&)>(0), excb, sentcb);
5025 }
5026 
5034 template<class T> Callback_Object_ice_getConnectionPtr
5035 newCallback_Object_ice_getConnection(const IceUtil::Handle<T>& instance,
5036  void (T::*cb)(const ::Ice::ConnectionPtr&),
5037  void (T::*excb)(const ::Ice::Exception&))
5038 {
5039  return new CallbackNC_Object_ice_getConnection<T>(instance, cb, excb, 0);
5040 }
5041 
5049 template<class T, typename CT> Callback_Object_ice_getConnectionPtr
5050 newCallback_Object_ice_getConnection(const IceUtil::Handle<T>& instance,
5051  void (T::*cb)(const ::Ice::ConnectionPtr&, const CT&),
5052  void (T::*excb)(const ::Ice::Exception&, const CT&))
5053 {
5054  return new Callback_Object_ice_getConnection<T, CT>(instance, cb, excb, 0);
5055 }
5056 
5064 template<class T> Callback_Object_ice_getConnectionPtr
5065 newCallback_Object_ice_getConnection(T* instance,
5066  void (T::*cb)(const ::Ice::ConnectionPtr&),
5067  void (T::*excb)(const ::Ice::Exception&))
5068 {
5069  return new CallbackNC_Object_ice_getConnection<T>(instance, cb, excb, 0);
5070 }
5071 
5079 template<class T, typename CT> Callback_Object_ice_getConnectionPtr
5080 newCallback_Object_ice_getConnection(T* instance,
5081  void (T::*cb)(const ::Ice::ConnectionPtr&, const CT&),
5082  void (T::*excb)(const ::Ice::Exception&, const CT&))
5083 {
5084  return new Callback_Object_ice_getConnection<T, CT>(instance, cb, excb, 0);
5085 }
5086 
5095 template<class T> Callback_Object_ice_flushBatchRequestsPtr
5096 newCallback_Object_ice_flushBatchRequests(const IceUtil::Handle<T>& instance,
5097  void (T::*excb)(const ::Ice::Exception&),
5098  void (T::*sentcb)(bool) = 0)
5099 {
5100  return new CallbackNC_Object_ice_flushBatchRequests<T>(instance, excb, sentcb);
5101 }
5102 
5111 template<class T, typename CT> Callback_Object_ice_flushBatchRequestsPtr
5112 newCallback_Object_ice_flushBatchRequests(const IceUtil::Handle<T>& instance,
5113  void (T::*excb)(const ::Ice::Exception&, const CT&),
5114  void (T::*sentcb)(bool, const CT&) = 0)
5115 {
5116  return new Callback_Object_ice_flushBatchRequests<T, CT>(instance, excb, sentcb);
5117 }
5118 
5127 template<class T> Callback_Object_ice_flushBatchRequestsPtr
5128 newCallback_Object_ice_flushBatchRequests(T* instance,
5129  void (T::*excb)(const ::Ice::Exception&),
5130  void (T::*sentcb)(bool) = 0)
5131 {
5132  return new CallbackNC_Object_ice_flushBatchRequests<T>(instance, excb, sentcb);
5133 }
5134 
5143 template<class T, typename CT> Callback_Object_ice_flushBatchRequestsPtr
5144 newCallback_Object_ice_flushBatchRequests(T* instance,
5145  void (T::*excb)(const ::Ice::Exception&, const CT&),
5146  void (T::*sentcb)(bool, const CT&) = 0)
5147 {
5148  return new Callback_Object_ice_flushBatchRequests<T, CT>(instance, excb, sentcb);
5149 }
5150 
5151 }
5152 #endif
5153 
5154 #endif
Ice::ObjectPrx::ice_context
::std::shared_ptr<::Ice::ObjectPrx > ice_context(const ::Ice::Context &context) const
Obtains a proxy that is identical to this proxy, except for the per-proxy context.
Ice::operator!=
bool operator!=(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:196
CommunicatorF.h
Ice::ObjectPrx::ice_getConnectionId
::std::string ice_getConnectionId() const
Obtains the connection ID of this proxy.
Ice::LocalObjectPtr
IceInternal::Handle< LocalObject > LocalObjectPtr
Definition: LocalObjectF.h:17
Ice::ObjectPrx::ice_oneway
::std::shared_ptr<::Ice::ObjectPrx > ice_oneway() const
Obtains a proxy that is identical to this proxy, but uses oneway invocations.
Ice::LocatorPrx
The Ice locator interface.
Definition: Locator.h:517
Ice::Context
::std::map<::std::string, ::std::string > Context
A request context.
Definition: Current.h:68
Ice::InputStream
Interface for input streams used to extract Slice types from a sequence of bytes.
Definition: InputStream.h:50
Ice::Proxy::ice_twoway
::std::shared_ptr< Prx > ice_twoway() const
Obtains a proxy that is identical to this proxy, but uses twoway invocations.
Definition: Proxy.h:1334
Ice::ObjectPrx::ice_idAsync
auto ice_idAsync(const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P<::std::string >>().get_future())
Returns the Slice type ID of the most-derived interface supported by the target object of this proxy.
Definition: Proxy.h:515
Ice::Proxy::ice_adapterId
::std::shared_ptr< Prx > ice_adapterId(const ::std::string &id) const
Obtains a proxy that is identical to this proxy, except for the adapter ID.
Definition: Proxy.h:1222
Ice::ObjectPrx::ice_getInvocationTimeout
::Ice::Int ice_getInvocationTimeout() const
Obtains the invocation timeout of this proxy.
Ice::Proxy::ice_encodingVersion
::std::shared_ptr< Prx > ice_encodingVersion(const ::Ice::EncodingVersion &version) const
Obtains a proxy that is identical to this proxy, except for the encoding used to marshal parameters.
Definition: Proxy.h:1425
Ice::proxyIdentityEqual
bool proxyIdentityEqual(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs)
Compares the object identities of two proxies.
Ice::ObjectPrx::ice_toString
::std::string ice_toString() const
Obtains a stringified version of this proxy.
LocalException.h
Ice::ObjectPrx::ice_router
::std::shared_ptr<::Ice::ObjectPrx > ice_router(const ::std::shared_ptr<::Ice::RouterPrx > &router) const
Obtains a proxy that is identical to this proxy, except for the router.
Ice::Object::Ice_invokeResult
Holds the results of a call to ice_invoke.
Definition: Object.h:168
Current.h
Ice::ObjectPrx::ice_getLocator
::std::shared_ptr<::Ice::LocatorPrx > ice_getLocator() const
Obtains the locator for this proxy.
Ice::ProxyIdentityEqual
A functor that compares the object identities of two proxies.
Definition: Proxy.h:1501
Ice::ObjectPrx::ice_getConnection
::std::shared_ptr<::Ice::Connection > ice_getConnection()
Obtains the Connection for this proxy.
Definition: Proxy.h:1028
IceUtil::Optional
std::experimental::Ice::optional< T > Optional
For compatibility with the Ice C++98 mapping, do not use in new code:
Definition: Optional.h:1100
Ice::ObjectPrx::ice_secure
::std::shared_ptr<::Ice::ObjectPrx > ice_secure(bool b) const
Obtains a proxy that is identical to this proxy, except for how it selects endpoints.
Ice::proxyIdentityLess
bool proxyIdentityLess(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs)
Compares the object identities of two proxies.
Ice::operator==
bool operator==(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:184
Ice::ObjectPrx::ice_isDatagram
bool ice_isDatagram() const
Determines whether this proxy uses datagram invocations.
Ice::ProxyIdentityAndFacetEqual::operator()
bool operator()(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs) const
Definition: Proxy.h:1534
Ice::ObjectPrx::~ObjectPrx
virtual ~ObjectPrx()=default
Ice::ObjectPrx::ice_isTwoway
bool ice_isTwoway() const
Determines whether this proxy uses twoway invocations.
Ice::Exception
IceUtil::Exception Exception
Definition: Exception.h:20
Ice::Proxy::ice_secure
::std::shared_ptr< Prx > ice_secure(bool b) const
Obtains a proxy that is identical to this proxy, except for how it selects endpoints.
Definition: Proxy.h:1273
Ice::ObjectPrx::ice_isAAsync
::std::function< void()> ice_isAAsync(const ::std::string &typeId, ::std::function< void(bool)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Tests whether this object supports a specific Slice interface.
Definition: Proxy.h:360
Ice::operator<<
std::ostream & operator<<(std::ostream &out, const ProtocolVersion &version)
Definition: Protocol.h:179
Ice::ObjectPrx::ice_getFacet
const ::std::string & ice_getFacet() const
Obtains the facet for this proxy.
Ice::ObjectPrx::ice_getContext
::Ice::Context ice_getContext() const
Obtains the per-proxy context for this proxy.
Ice::ObjectPrx::ice_timeout
::std::shared_ptr<::Ice::ObjectPrx > ice_timeout(int timeout) const
Obtains a proxy that is identical to this proxy, except for its connection timeout setting which over...
Ice::Proxy::ice_collocationOptimized
::std::shared_ptr< Prx > ice_collocationOptimized(bool b) const
Obtains a proxy that is identical to this proxy, except for collocation optimization.
Definition: Proxy.h:1315
Ice::ObjectPrx::ice_getRouter
::std::shared_ptr<::Ice::RouterPrx > ice_getRouter() const
Obtains the router for this proxy.
Ice::ObjectPrx::ice_getCachedConnection
::std::shared_ptr<::Ice::Connection > ice_getCachedConnection() const
Obtains the cached Connection for this proxy.
OutgoingAsync.h
Ice::FacetNotExistException
This exception is raised if no facet with the given name exists, but at least one facet with the give...
Definition: LocalException.h:1501
Ice::ObjectPrx::ice_twoway
::std::shared_ptr<::Ice::ObjectPrx > ice_twoway() const
Obtains a proxy that is identical to this proxy, but uses twoway invocations.
Ice::Proxy::ice_compress
::std::shared_ptr< Prx > ice_compress(bool b) const
Obtains a proxy that is identical to this proxy, except for its compression setting which overrides t...
Definition: Proxy.h:1381
Ice::ObjectPrx::ice_adapterId
::std::shared_ptr<::Ice::ObjectPrx > ice_adapterId(const ::std::string &id) const
Obtains a proxy that is identical to this proxy, except for the adapter ID.
Ice::ObjectPrx::ice_pingAsync
auto ice_pingAsync(const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P< void >>().get_future())
Tests whether the target object of this proxy can be reached.
Definition: Proxy.h:422
Ice::ObjectPrx::ice_locatorCacheTimeout
::std::shared_ptr<::Ice::ObjectPrx > ice_locatorCacheTimeout(::Ice::Int timeout) const
Obtains a proxy that is identical to this proxy, except for the locator cache timeout.
Ice::Proxy::ice_batchDatagram
::std::shared_ptr< Prx > ice_batchDatagram() const
Obtains a proxy that is identical to this proxy, but uses batch datagram invocations.
Definition: Proxy.h:1370
ICE_API
#define ICE_API
Definition: Config.h:197
BatchRequestQueueF.h
Ice::ObjectPrx::ice_endpoints
::std::shared_ptr<::Ice::ObjectPrx > ice_endpoints(const ::Ice::EndpointSeq &endpoints) const
Obtains a proxy that is identical to this proxy, except for the endpoints.
Ice::operator>=
bool operator>=(const ObjectPrx &lhs, const ObjectPrx &rhs)
Definition: Proxy.h:1187
Ice::EncodingVersion
A version structure for the encoding version.
Definition: Version.h:82
Ice::Proxy::ice_timeout
::std::shared_ptr< Prx > ice_timeout(int timeout) const
Obtains a proxy that is identical to this proxy, except for its connection timeout setting which over...
Definition: Proxy.h:1392
Ice::ObjectPrx::ice_getEndpoints
::Ice::EndpointSeq ice_getEndpoints() const
Obtains the endpoints used by this proxy.
Ice::operator<=
bool operator<=(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:148
Ice::ObjectPrx::ice_getAdapterId
::std::string ice_getAdapterId() const
Obtains the adapter ID for this proxy.
Ice::ObjectPrx::ice_isA
bool ice_isA(const ::std::string &typeId, const ::Ice::Context &context=::Ice::noExplicitContext)
Tests whether this object supports a specific Slice interface.
Definition: Proxy.h:345
Ice::Byte
unsigned char Byte
The mapping for the Slice byte type.
Definition: Config.h:50
Ice::ObjectPrx::ice_flushBatchRequestsAsync
auto ice_flushBatchRequestsAsync() -> decltype(std::declval< P< void >>().get_future())
Flushes asynchronously any pending batched requests for this communicator.
Definition: Proxy.h:1107
EndpointTypes.h
Ice::ObjectPrx::ice_invoke
bool ice_invoke(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::pair< const ::Ice::Byte *, const ::Ice::Byte * > &inParams, ::std::vector<::Ice::Byte > &outParams, const ::Ice::Context &context=::Ice::noExplicitContext)
Invokes an operation dynamically.
Definition: Proxy.h:626
Ice::Proxy::ice_endpoints
::std::shared_ptr< Prx > ice_endpoints(const ::Ice::EndpointSeq &endpoints) const
Obtains a proxy that is identical to this proxy, except for the endpoints.
Definition: Proxy.h:1232
Ice::ObjectPrx::operator<
friend bool operator<(const ObjectPrx &, const ObjectPrx &)
Ice::Proxy::ice_oneway
::std::shared_ptr< Prx > ice_oneway() const
Obtains a proxy that is identical to this proxy, but uses oneway invocations.
Definition: Proxy.h:1343
Ice::ObjectPrx::ice_invokeAsync
::std::function< void()> ice_invokeAsync(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::pair< const ::Ice::Byte *, const ::Ice::Byte * > &inParams, ::std::function< void(bool, ::std::pair< const ::Ice::Byte *, const ::Ice::Byte * >)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Invokes an operation dynamically.
Definition: Proxy.h:675
Ice::ObjectPrx::ice_getCommunicator
::std::shared_ptr<::Ice::Communicator > ice_getCommunicator() const
Obtains the communicator that created this proxy.
Ice::ObjectPrx::ice_batchDatagram
::std::shared_ptr<::Ice::ObjectPrx > ice_batchDatagram() const
Obtains a proxy that is identical to this proxy, but uses batch datagram invocations.
Ice::ObjectPrx::ice_getConnectionAsync
::std::function< void()> ice_getConnectionAsync(::std::function< void(::std::shared_ptr<::Ice::Connection >)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr)
Obtains the Connection for this proxy.
Definition: Proxy.h:1042
Ice::Proxy::ice_connectionId
::std::shared_ptr< Prx > ice_connectionId(const ::std::string &id) const
Obtains a proxy that is identical to this proxy, except for its connection ID.
Definition: Proxy.h:1403
Ice::ProxyIdentityLess
A functor that compares the object identities of two proxies.
Definition: Proxy.h:1485
Ice::Proxy::ice_fixed
::std::shared_ptr< Prx > ice_fixed(const ::std::shared_ptr<::Ice::Connection > &connection) const
Obtains a proxy that is identical to this proxy, except it's a fixed proxy bound the given connection...
Definition: Proxy.h:1414
Ice::ObjectPrx::ice_pingAsync
::std::function< void()> ice_pingAsync(::std::function< void()> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Tests whether the target object of this proxy can be reached.
Definition: Proxy.h:407
Ice::operator>=
bool operator>=(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:172
Ice::ObjectPrx::ice_connectionId
::std::shared_ptr<::Ice::ObjectPrx > ice_connectionId(const ::std::string &id) const
Obtains a proxy that is identical to this proxy, except for its connection ID.
Ice::ObjectPrx::ice_staticId
static const ::std::string & ice_staticId()
Returns the Slice type ID associated with this type.
Definition: Proxy.h:530
Ice::proxyIdentityAndFacetLess
bool proxyIdentityAndFacetLess(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs)
Compares the object identities and facets of two proxies.
Ice::ObjectPrx::ice_getEndpointSelection
::Ice::EndpointSelectionType ice_getEndpointSelection() const
Obtains the endpoint selection policy for this proxy (randomly or ordered).
Ice::ObjectPrx::ice_invokeAsync
::std::function< void()> ice_invokeAsync(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::vector<::Ice::Byte > &inParams, ::std::function< void(bool, ::std::vector<::Ice::Byte >)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Invokes an operation dynamically.
Definition: Proxy.h:587
Ice::ObjectPrx::ice_getConnectionAsync
auto ice_getConnectionAsync() -> decltype(std::declval< P<::std::shared_ptr<::Ice::Connection >>>().get_future())
Obtains the Connection for this proxy.
Definition: Proxy.h:1058
Ice::ObjectPrx::ice_isBatchDatagram
bool ice_isBatchDatagram() const
Determines whether this proxy uses batch datagram invocations.
Ice::ObjectPrx::ice_flushBatchRequests
void ice_flushBatchRequests()
Flushes any pending batched requests for this communicator.
Definition: Proxy.h:1081
Ice::operator<<
::std::ostream & operator<<(::std::ostream &, const ::Ice::ObjectPrx &)
ProxyF.h
Ice::ObjectPrx::ice_idsAsync
auto ice_idsAsync(const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P<::std::vector<::std::string >>>().get_future())
Returns the Slice type IDs of the interfaces supported by the target object of this proxy.
Definition: Proxy.h:469
Ice::ObjectPrx::ice_preferSecure
::std::shared_ptr<::Ice::ObjectPrx > ice_preferSecure(bool b) const
Obtains a proxy that is identical to this proxy, except for its endpoint selection policy.
Ice::operator<
bool operator<(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:136
Ice::ProxyIdentityAndFacetLess::operator()
bool operator()(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs) const
Definition: Proxy.h:1518
Shared.h
Ice::ObjectPrx::ice_isSecure
bool ice_isSecure() const
Determines whether this proxy uses only secure endpoints.
ICE_CPLUSPLUS
#define ICE_CPLUSPLUS
Definition: Config.h:101
Ice::ObjectPrx::ice_ping
void ice_ping(const ::Ice::Context &context=::Ice::noExplicitContext)
Tests whether the target object of this proxy can be reached.
Definition: Proxy.h:393
Ice::operator<=
bool operator<=(const ObjectPrx &lhs, const ObjectPrx &rhs)
Definition: Proxy.h:1181
Ice::ObjectPrx::ice_isBatchOneway
bool ice_isBatchOneway() const
Determines whether this proxy uses batch oneway invocations.
Ice::ObjectPrx::ice_getIdentity
::Ice::Identity ice_getIdentity() const
Obtains the identity embedded in this proxy.
Ice::Proxy::ice_locator
::std::shared_ptr< Prx > ice_locator(const ::std::shared_ptr<::Ice::LocatorPrx > &locator) const
Obtains a proxy that is identical to this proxy, except for the locator.
Definition: Proxy.h:1305
ConnectionIF.h
Ice::ProxyIdentityLess::operator()
bool operator()(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs) const
Definition: Proxy.h:1486
Ice::ObjectPrx::ice_isOneway
bool ice_isOneway() const
Determines whether this proxy uses oneway invocations.
RequestHandlerF.h
Ice::ObjectPrx::ice_isPreferSecure
bool ice_isPreferSecure() const
Determines whether this proxy prefers secure endpoints.
ReferenceF.h
Object.h
Ice::Proxy::ice_preferSecure
::std::shared_ptr< Prx > ice_preferSecure(bool b) const
Obtains a proxy that is identical to this proxy, except for its endpoint selection policy.
Definition: Proxy.h:1285
Ice::ObjectPrx::ice_identity
::std::shared_ptr<::Ice::ObjectPrx > ice_identity(const ::Ice::Identity &id) const
Obtains a proxy that is identical to this proxy, except for the identity.
Ice::Proxy::ice_batchOneway
::std::shared_ptr< Prx > ice_batchOneway() const
Obtains a proxy that is identical to this proxy, but uses batch oneway invocations.
Definition: Proxy.h:1352
Ice::ObjectPrx::ice_collocationOptimized
::std::shared_ptr<::Ice::ObjectPrx > ice_collocationOptimized(bool b) const
Obtains a proxy that is identical to this proxy, except for collocation optimization.
Ice::ObjectPrx::ice_connectionCached
::std::shared_ptr<::Ice::ObjectPrx > ice_connectionCached(bool b) const
Obtains a proxy that is identical to this proxy, except for connection caching.
Ice::ObjectPrx::ice_idsAsync
::std::function< void()> ice_idsAsync(::std::function< void(::std::vector<::std::string >)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Returns the Slice type IDs of the interfaces supported by the target object of this proxy.
Definition: Proxy.h:454
Ice::ObjectPrx::ice_getLocatorCacheTimeout
::Ice::Int ice_getLocatorCacheTimeout() const
Obtains the locator cache timeout of this proxy.
Ice::OutputStream
Interface for output streams used to create a sequence of bytes from Slice types.
Definition: OutputStream.h:28
Ice::ProxyIdentityAndFacetEqual
A functor that compares the object identities and facets of two proxies.
Definition: Proxy.h:1533
Ice::Proxy::ice_context
::std::shared_ptr< Prx > ice_context(const ::Ice::Context &context) const
Obtains a proxy that is identical to this proxy, except for the per-proxy context.
Definition: Proxy.h:1212
Ice::ObjectPrx::ice_facet
::std::shared_ptr<::Ice::ObjectPrx > ice_facet(const ::std::string &facet) const
Obtains a proxy that is identical to this proxy, except for the facet.
Ice::operator>
bool operator>(const ObjectPrx &lhs, const ObjectPrx &rhs)
Definition: Proxy.h:1175
Ice::operator>
bool operator>(const C &lhs, const C &rhs)
Relational operator for generated structs and classes.
Definition: Comparable.h:160
IceUtil::Mutex
Definition: Mutex.h:33
Ice::ObjectPrx::ice_fixed
::std::shared_ptr<::Ice::ObjectPrx > ice_fixed(const ::std::shared_ptr<::Ice::Connection > &connection) const
Obtains a proxy that is identical to this proxy, except it's a fixed proxy bound the given connection...
Ice::ObjectPrx::ice_invoke
bool ice_invoke(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::vector< Byte > &inParams, ::std::vector<::Ice::Byte > &outParams, const ::Ice::Context &context=::Ice::noExplicitContext)
Invokes an operation dynamically.
Definition: Proxy.h:548
Ice::ObjectPrx::ice_id
::std::string ice_id(const ::Ice::Context &context=::Ice::noExplicitContext)
Returns the Slice type ID of the most-derived interface supported by the target object of this proxy.
Definition: Proxy.h:486
Mutex.h
IceUtil::Exception
Abstract base class for all Ice exceptions.
Definition: Exception.h:22
Ice
Definition: BuiltinSequences.h:56
Ice::ProxyIdentityAndFacetLess
A functor that compares the object identities and facets of two proxies.
Definition: Proxy.h:1517
Ice::ObjectPrx::ice_isFixed
bool ice_isFixed() const
Determines whether this proxy is a fixed proxy.
Ice::Proxy::ice_locatorCacheTimeout
::std::shared_ptr< Prx > ice_locatorCacheTimeout(int timeout) const
Obtains a proxy that is identical to this proxy, except for the locator cache timeout.
Definition: Proxy.h:1242
Ice::checkedCast
::std::shared_ptr< P > checkedCast(const ::std::shared_ptr< T > &b, const ::Ice::Context &context=Ice::noExplicitContext)
Downcasts a proxy after confirming the target object's type via a remote invocation.
Definition: Proxy.h:1596
EndpointF.h
Ice::ObjectPrx::ice_locator
::std::shared_ptr<::Ice::ObjectPrx > ice_locator(const ::std::shared_ptr<::Ice::LocatorPrx > &locator) const
Obtains a proxy that is identical to this proxy, except for the locator.
Ice::ObjectPrx::ice_datagram
::std::shared_ptr<::Ice::ObjectPrx > ice_datagram() const
Obtains a proxy that is identical to this proxy, but uses datagram invocations.
Ice::ObjectPrx::ice_getEncodingVersion
::Ice::EncodingVersion ice_getEncodingVersion() const
Obtains the encoding version used to marshal request parameters.
Ice::ProxyIdentityEqual::operator()
bool operator()(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs) const
Definition: Proxy.h:1502
IceUtil::Handle
Definition: Handle.h:143
Ice::ObjectPrx::ice_flushBatchRequestsAsync
std::function< void()> ice_flushBatchRequestsAsync(::std::function< void(::std::exception_ptr)> ex, ::std::function< void(bool)> sent=nullptr)
Flushes asynchronously any pending batched requests for this communicator.
Definition: Proxy.h:1093
Ice::ObjectPrx
Base class of all object proxies.
Definition: Proxy.h:317
Ice::EndpointSeq
::std::vector<::std::shared_ptr< Endpoint > > EndpointSeq
A sequence of endpoints.
Definition: EndpointF.h:73
Ice::Proxy::ice_endpointSelection
::std::shared_ptr< Prx > ice_endpointSelection(::Ice::EndpointSelectionType type) const
Obtains a proxy that is identical to this proxy, except for the endpoint selection policy.
Definition: Proxy.h:1262
IceUtil::IllegalArgumentException
This exception indicates that a function was called with an illegal parameter value.
Definition: Exception.h:204
Ice::proxyIdentityAndFacetEqual
bool proxyIdentityAndFacetEqual(const ::std::shared_ptr< ObjectPrx > &lhs, const ::std::shared_ptr< ObjectPrx > &rhs)
Compares the object identities and facets of two proxies.
Ice::ObjectPrx::ice_idAsync
::std::function< void()> ice_idAsync(::std::function< void(::std::string)> response, ::std::function< void(::std::exception_ptr)> ex=nullptr, ::std::function< void(bool)> sent=nullptr, const ::Ice::Context &context=::Ice::noExplicitContext)
Returns the Slice type ID of the most-derived interface supported by the target object of this proxy.
Definition: Proxy.h:500
Ice::Proxy::ice_connectionCached
::std::shared_ptr< Prx > ice_connectionCached(bool b) const
Obtains a proxy that is identical to this proxy, except for connection caching.
Definition: Proxy.h:1252
Ice::ObjectPrx::ice_encodingVersion
::std::shared_ptr<::Ice::ObjectPrx > ice_encodingVersion(const ::Ice::EncodingVersion &version) const
Obtains a proxy that is identical to this proxy, except for the encoding used to marshal parameters.
Ice::ObjectPrx::ice_invocationTimeout
::std::shared_ptr<::Ice::ObjectPrx > ice_invocationTimeout(::Ice::Int timeout) const
Obtains a proxy that is identical to this proxy, except for the invocation timeout.
Ice::uncheckedCast
::std::shared_ptr< P > uncheckedCast(const ::std::shared_ptr< T > &b)
Downcasts a proxy without confirming the target object's type via a remote invocation.
Definition: Proxy.h:1549
Ice::OperationMode
OperationMode
Determines the retry behavior an invocation in case of a (potentially) recoverable error.
Definition: Current.h:74
Ice::Proxy::ice_invocationTimeout
::std::shared_ptr< Prx > ice_invocationTimeout(int timeout) const
Obtains a proxy that is identical to this proxy, except for the invocation timeout.
Definition: Proxy.h:1325
Ice::Proxy::ice_datagram
::std::shared_ptr< Prx > ice_datagram() const
Obtains a proxy that is identical to this proxy, but uses datagram invocations.
Definition: Proxy.h:1361
Ice::ObjectPrx::operator==
friend bool operator==(const ObjectPrx &, const ObjectPrx &)
Ice::ObjectPrx::ice_endpointSelection
::std::shared_ptr<::Ice::ObjectPrx > ice_endpointSelection(::Ice::EndpointSelectionType type) const
Obtains a proxy that is identical to this proxy, except for the endpoint selection policy.
Ice::ObjectPrx::ice_isAAsync
auto ice_isAAsync(const ::std::string &typeId, const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P< bool >>().get_future())
Tests whether this object supports a specific Slice interface.
Definition: Proxy.h:377
Ice::ObjectPrx::ice_batchOneway
::std::shared_ptr<::Ice::ObjectPrx > ice_batchOneway() const
Obtains a proxy that is identical to this proxy, but uses batch oneway invocations.
Ice::ObjectPrx::ice_isCollocationOptimized
bool ice_isCollocationOptimized() const
Determines whether this proxy uses collocation optimization.
Ice::ObjectPrx::ice_compress
::std::shared_ptr<::Ice::ObjectPrx > ice_compress(bool b) const
Obtains a proxy that is identical to this proxy, except for its compression setting which overrides t...
ProxyFactoryF.h
Ice::Proxy
Helper template that supplies proxy factory functions.
Definition: Proxy.h:1204
Ice::ObjectPrx::ice_isConnectionCached
bool ice_isConnectionCached() const
Determines whether this proxy caches connections.
Ice::Identity
The identity of an Ice object.
Definition: Identity.h:67
Ice::ObjectPrx::ice_invokeAsync
auto ice_invokeAsync(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::pair< const ::Ice::Byte *, const ::Ice::Byte * > &inParams, const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P<::Ice::Object::Ice_invokeResult >>().get_future())
Invokes an operation dynamically.
Definition: Proxy.h:650
Ice::ObjectPrx::ice_getTimeout
::Ice::optional< int > ice_getTimeout() const
Obtains the timeout override of this proxy.
Ice::optional
std::experimental::Ice::optional< T > optional
Ice::optional is a placeholder for std::optional.
Definition: Optional.h:1065
Ice::RouterPrx
The Ice router interface.
Definition: Router.h:242
Ice::ObjectPrx::ice_ids
::std::vector<::std::string > ice_ids(const ::Ice::Context &context=::Ice::noExplicitContext)
Returns the Slice type IDs of the interfaces supported by the target object of this proxy.
Definition: Proxy.h:440
Ice::Int
int Int
The mapping for the Slice int type.
Definition: Config.h:54
IceUtil::Shared
Definition: Shared.h:78
Ice::noExplicitContext
const Context noExplicitContext
Marker value used to indicate that no explicit context was passed to a proxy invocation.
Ice::ObjectPrx::ice_getCompress
::Ice::optional< bool > ice_getCompress() const
Obtains the compression override setting of this proxy.
Ice::operator!=
bool operator!=(const ObjectPrx &lhs, const ObjectPrx &rhs)
Definition: Proxy.h:1193
Ice::ByteSeq
::std::vector< Byte > ByteSeq
A sequence of bytes.
Definition: BuiltinSequences.h:66
Ice::ObjectPrx::ice_invokeAsync
auto ice_invokeAsync(const ::std::string &operation, ::Ice::OperationMode mode, const ::std::vector< Byte > &inParams, const ::Ice::Context &context=::Ice::noExplicitContext) -> decltype(std::declval< P<::Ice::Object::Ice_invokeResult >>().get_future())
Invokes an operation dynamically.
Definition: Proxy.h:566
Ice::Proxy::ice_router
::std::shared_ptr< Prx > ice_router(const ::std::shared_ptr<::Ice::RouterPrx > &router) const
Obtains a proxy that is identical to this proxy, except for the router.
Definition: Proxy.h:1295
Ice::EndpointSelectionType
EndpointSelectionType
Determines the order in which the Ice run time uses the endpoints in a proxy when establishing a conn...
Definition: EndpointTypes.h:63
ObjectAdapterF.h
AsyncResult.h