blob: ec2e460551e6de7afa6e66906d3ecd29180ac9da [file] [log] [blame]
Mark Slee9f0c6512007-02-28 23:58:26 +00001// Copyright (c) 2006- Facebook
2// Distributed under the Thrift Software License
3//
4// See accompanying file LICENSE or visit the Thrift site at:
5// http://developers.facebook.com/thrift/
6
Mark Sleef5f2be42006-09-05 21:05:31 +00007#ifndef _THRIFT_TRANSPORT_TSERVERSOCKET_H_
8#define _THRIFT_TRANSPORT_TSERVERSOCKET_H_ 1
Mark Sleee8540632006-05-30 09:24:40 +00009
Marc Slemkod42a2c22006-08-10 03:30:18 +000010#include "TServerTransport.h"
Marc Slemko16698852006-08-04 03:16:10 +000011#include <boost/shared_ptr.hpp>
Mark Sleee8540632006-05-30 09:24:40 +000012
T Jake Lucianib5e62212009-01-31 22:36:20 +000013namespace apache { namespace thrift { namespace transport {
Marc Slemko6f038a72006-08-03 18:58:09 +000014
Mark Sleee8540632006-05-30 09:24:40 +000015class TSocket;
16
17/**
18 * Server socket implementation of TServerTransport. Wrapper around a unix
19 * socket listen and accept calls.
20 *
Mark Sleee8540632006-05-30 09:24:40 +000021 */
22class TServerSocket : public TServerTransport {
23 public:
24 TServerSocket(int port);
Mark Slee29050782006-09-29 00:12:30 +000025 TServerSocket(int port, int sendTimeout, int recvTimeout);
26
Mark Sleee8540632006-05-30 09:24:40 +000027 ~TServerSocket();
28
Mark Slee29050782006-09-29 00:12:30 +000029 void setSendTimeout(int sendTimeout);
30 void setRecvTimeout(int recvTimeout);
31
boz1ea81ce2007-05-14 23:04:33 +000032 void setRetryLimit(int retryLimit);
33 void setRetryDelay(int retryDelay);
34
Christopher Piro9cc63b52008-03-21 00:40:42 +000035 void setTcpSendBuffer(int tcpSendBuffer);
36 void setTcpRecvBuffer(int tcpRecvBuffer);
37
Mark Slee8d7e1f62006-06-07 06:48:56 +000038 void listen();
Mark Sleee8540632006-05-30 09:24:40 +000039 void close();
40
Mark Slee561b5362007-03-09 19:26:29 +000041 void interrupt();
Mark Sleea5a783f2007-03-02 19:41:08 +000042
Mark Slee8d7e1f62006-06-07 06:48:56 +000043 protected:
Mark Slee5ea15f92007-03-05 22:55:59 +000044 boost::shared_ptr<TTransport> acceptImpl();
Mark Slee8d7e1f62006-06-07 06:48:56 +000045
Mark Sleee8540632006-05-30 09:24:40 +000046 private:
Mark Sleee8540632006-05-30 09:24:40 +000047 int port_;
48 int serverSocket_;
49 int acceptBacklog_;
Mark Slee29050782006-09-29 00:12:30 +000050 int sendTimeout_;
51 int recvTimeout_;
boz1ea81ce2007-05-14 23:04:33 +000052 int retryLimit_;
53 int retryDelay_;
Christopher Piro9cc63b52008-03-21 00:40:42 +000054 int tcpSendBuffer_;
55 int tcpRecvBuffer_;
Mark Slee561b5362007-03-09 19:26:29 +000056
57 int intSock1_;
58 int intSock2_;
Mark Sleee8540632006-05-30 09:24:40 +000059};
60
T Jake Lucianib5e62212009-01-31 22:36:20 +000061}}} // apache::thrift::transport
Marc Slemko6f038a72006-08-03 18:58:09 +000062
Mark Sleef5f2be42006-09-05 21:05:31 +000063#endif // #ifndef _THRIFT_TRANSPORT_TSERVERSOCKET_H_