diff options
author | Bernard Normier <bernard@zeroc.com> | 2014-07-24 16:06:51 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2014-07-24 16:06:51 +0000 |
commit | ac23953bb2f5ab0bac337f15d4d8739e7aa1ce5c (patch) | |
tree | 3af419df5b8c46c809d579fdcd7165135f452d8f /cpp/src/Ice/Initialize.cpp | |
parent | VS 2010 build fix (diff) | |
download | ice-ac23953bb2f5ab0bac337f15d4d8739e7aa1ce5c.tar.bz2 ice-ac23953bb2f5ab0bac337f15d4d8739e7aa1ce5c.tar.xz ice-ac23953bb2f5ab0bac337f15d4d8739e7aa1ce5c.zip |
Completed fix for ICE-5567: move various C++11 classes/functions out of line
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 |