diff options
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r-- | cpp/src/Ice/Initialize.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp index f4279f7812d..ad0591e4366 100644 --- a/cpp/src/Ice/Initialize.cpp +++ b/cpp/src/Ice/Initialize.cpp @@ -368,9 +368,27 @@ IceInternal::getInstanceTimer(const CommunicatorPtr& communicator) } #ifdef ICE_CPP11 -void -IceInternal::Cpp11Dispatcher::dispatch(const ::Ice::DispatcherCallPtr& call, const ::Ice::ConnectionPtr& conn) +Ice::DispatcherPtr +Ice::newDispatcher(const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)>& cb) { - _cb(call, conn); + class Cpp11Dispatcher : public Dispatcher + { + public: + + Cpp11Dispatcher(const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)>& cb) : + _cb(cb) + { + } + + virtual void dispatch(const DispatcherCallPtr& call, const ConnectionPtr& conn) + { + _cb(call, conn); + } + + private: + const ::std::function<void (const DispatcherCallPtr&, const ConnectionPtr)> _cb; + }; + + return new Cpp11Dispatcher(cb); } #endif |