blob: b482e02fe9b2d93518b4ad94e77a8dac046c6afa [file] [log] [blame]
// 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_TRANSPORT_TSERVERSOCKET_H_
#define _THRIFT_TRANSPORT_TSERVERSOCKET_H_ 1
#include "TServerTransport.h"
#include <boost/shared_ptr.hpp>
namespace facebook { namespace thrift { namespace transport {
class TSocket;
/**
* Server socket implementation of TServerTransport. Wrapper around a unix
* socket listen and accept calls.
*
* @author Mark Slee <mcslee@facebook.com>
*/
class TServerSocket : public TServerTransport {
public:
TServerSocket(int port);
TServerSocket(int port, int sendTimeout, int recvTimeout);
~TServerSocket();
void setSendTimeout(int sendTimeout);
void setRecvTimeout(int recvTimeout);
void listen();
void close();
void interrupt() {
interrupt_ = true;
}
protected:
shared_ptr<TTransport> acceptImpl();
private:
int port_;
int serverSocket_;
int acceptBacklog_;
int sendTimeout_;
int recvTimeout_;
volatile bool interrupt_;
};
}}} // facebook::thrift::transport
#endif // #ifndef _THRIFT_TRANSPORT_TSERVERSOCKET_H_