// ********************************************************************** // // Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #ifndef ICE_DISPATCHER_H #define ICE_DISPATCHER_H #include #include #include #include #ifdef ICE_CPP11 # include #endif namespace Ice { class ICE_API DispatcherCall : virtual public IceUtil::Shared { public: virtual ~DispatcherCall() { } virtual void run() = 0; }; typedef IceUtil::Handle DispatcherCallPtr; class ICE_API Dispatcher : virtual public IceUtil::Shared { public: virtual void dispatch(const DispatcherCallPtr&, const ConnectionPtr&) = 0; }; typedef IceUtil::Handle DispatcherPtr; } #ifdef ICE_CPP11 namespace IceInternal { class ICE_API Cpp11Dispatcher : public ::Ice::Dispatcher { public: Cpp11Dispatcher(const ::std::function& cb) : _cb(cb) { } virtual void dispatch(const ::Ice::DispatcherCallPtr& call, const ::Ice::ConnectionPtr& conn); private: const ::std::function _cb; }; } namespace Ice { inline DispatcherPtr newDispatcher(const ::std::function& cb) { return new ::IceInternal::Cpp11Dispatcher(cb); } } #endif #endif