summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r--cpp/src/Ice/Initialize.cpp24
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