43 lines
1.3 KiB
C
43 lines
1.3 KiB
C
|
// Copyright (c) 2006- Facebook
|
||
|
// Distributed under the Thrift Software License
|
||
|
//
|
||
|
// See accompanying file LICENSE or visit the Thrift site at:
|
||
|
// http://developers.facebook.com/thrift/
|
||
|
|
||
|
#ifndef _THRIFT_TSYNCTOASYNCPROCESSOR_H_
|
||
|
#define _THRIFT_TSYNCTOASYNCPROCESSOR_H_ 1
|
||
|
|
||
|
#include <tr1/functional>
|
||
|
#include <boost/shared_ptr.hpp>
|
||
|
#include "thrift/lib/cpp/TProcessor.h"
|
||
|
#include "thrift/lib/cpp/async/TAsyncProcessor.h"
|
||
|
|
||
|
namespace apache { namespace thrift { namespace async {
|
||
|
|
||
|
/**
|
||
|
* Adapter to allow a TProcessor to be used as a TAsyncProcessor.
|
||
|
*
|
||
|
* Note that this should only be used for handlers that return quickly without
|
||
|
* blocking, since async servers can be stalled by a single blocking operation.
|
||
|
*/
|
||
|
class TSyncToAsyncProcessor : public TAsyncProcessor {
|
||
|
public:
|
||
|
TSyncToAsyncProcessor(boost::shared_ptr<TProcessor> processor)
|
||
|
: processor_(processor)
|
||
|
{}
|
||
|
|
||
|
virtual void process(std::tr1::function<void(bool success)> _return,
|
||
|
boost::shared_ptr<protocol::TProtocol> in,
|
||
|
boost::shared_ptr<protocol::TProtocol> out,
|
||
|
TConnectionContext* context) {
|
||
|
return _return(processor_->process(in, out, context));
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
boost::shared_ptr<TProcessor> processor_;
|
||
|
};
|
||
|
|
||
|
}}} // apache::thrift::async
|
||
|
|
||
|
#endif // #ifndef _THRIFT_TSYNCTOASYNCPROCESSOR_H_
|