blob: 5ef96d0db5f299791b17b110ab19034f0cfa6b9f [file] [log] [blame]
Mark Slee83c52a82006-06-07 06:51:18 +00001package com.facebook.thrift.server;
2
3import com.facebook.thrift.TProcessor;
Mark Slee456b7a82006-10-25 20:53:37 +00004import com.facebook.thrift.protocol.TBinaryProtocol;
5import com.facebook.thrift.protocol.TProtocolFactory;
Mark Sleed788b2e2006-09-07 01:26:35 +00006import com.facebook.thrift.transport.TServerTransport;
7import com.facebook.thrift.transport.TTransportFactory;
Mark Slee83c52a82006-06-07 06:51:18 +00008
9/**
10 * Generic interface for a Thrift server.
11 *
12 * @author Mark Slee <mcslee@facebook.com>
13 */
14public abstract class TServer {
15
16 /**
Mark Sleed788b2e2006-09-07 01:26:35 +000017 * Core processor
18 */
Mark Slee83c52a82006-06-07 06:51:18 +000019 protected TProcessor processor_;
20
Mark Sleed788b2e2006-09-07 01:26:35 +000021 /**
Mark Sleed788b2e2006-09-07 01:26:35 +000022 * Server transport
Mark Sleeffcddd62006-09-06 20:37:03 +000023 */
Mark Sleed788b2e2006-09-07 01:26:35 +000024 protected TServerTransport serverTransport_;
Mark Sleeffcddd62006-09-06 20:37:03 +000025
26 /**
Mark Sleed788b2e2006-09-07 01:26:35 +000027 * Transport Factory
Mark Slee83c52a82006-06-07 06:51:18 +000028 */
Mark Sleed788b2e2006-09-07 01:26:35 +000029 protected TTransportFactory transportFactory_;
30
31 /**
Mark Slee456b7a82006-10-25 20:53:37 +000032 * Protocol Factory
33 */
34 protected TProtocolFactory protocolFactory_;
35
36 /**
Mark Sleed788b2e2006-09-07 01:26:35 +000037 * Default constructors.
38 */
39
40 protected TServer(TProcessor processor,
41 TServerTransport serverTransport) {
42 this(processor,
43 serverTransport,
Mark Slee456b7a82006-10-25 20:53:37 +000044 new TTransportFactory(),
45 new TBinaryProtocol.Factory());
Mark Sleed788b2e2006-09-07 01:26:35 +000046 }
47
48 protected TServer(TProcessor processor,
49 TServerTransport serverTransport,
50 TTransportFactory transportFactory) {
51 this(processor,
52 serverTransport,
53 transportFactory,
Mark Slee456b7a82006-10-25 20:53:37 +000054 new TBinaryProtocol.Factory());
Mark Sleed788b2e2006-09-07 01:26:35 +000055 }
56
57 protected TServer(TProcessor processor,
58 TServerTransport serverTransport,
59 TTransportFactory transportFactory,
Mark Slee456b7a82006-10-25 20:53:37 +000060 TProtocolFactory protocolFactory) {
Mark Slee83c52a82006-06-07 06:51:18 +000061 processor_ = processor;
Mark Sleed788b2e2006-09-07 01:26:35 +000062 serverTransport_ = serverTransport;
63 transportFactory_ = transportFactory;
Mark Slee456b7a82006-10-25 20:53:37 +000064 protocolFactory_ = protocolFactory;
Mark Slee83c52a82006-06-07 06:51:18 +000065 }
66
67 /**
68 * The run method fires up the server and gets things going.
69 */
Mark Slee4e755ca2006-09-12 00:46:08 +000070 public abstract void serve();
Mark Slee456b7a82006-10-25 20:53:37 +000071
Mark Slee83c52a82006-06-07 06:51:18 +000072}