From: Mark Slee Date: Thu, 31 May 2007 01:30:22 +0000 (+0000) Subject: ProcessorFactory for Java X-Git-Tag: 0.2.0~1348 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=448849deede56f011dae0049e7b5bb142271eaf6;p=common%2Fthrift.git ProcessorFactory for Java Reviewed By: simon forman git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665124 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CONTRIBUTORS b/CONTRIBUTORS index db6cdd7a..9c5c96f6 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2,6 +2,9 @@ Release 200705xx ---------------- +Simon Forman +-TProcessorFactory abstraction for Java servers + Jake Luciani -Perl code generation, libraries, test code diff --git a/lib/java/src/server/TServer.java b/lib/java/src/server/TServer.java index 9dcbff62..d5f95f62 100644 --- a/lib/java/src/server/TServer.java +++ b/lib/java/src/server/TServer.java @@ -6,7 +6,7 @@ package com.facebook.thrift.server; -import com.facebook.thrift.TProcessor; +import com.facebook.thrift.TProcessorFactory; import com.facebook.thrift.protocol.TBinaryProtocol; import com.facebook.thrift.protocol.TProtocolFactory; import com.facebook.thrift.transport.TServerTransport; @@ -22,7 +22,7 @@ public abstract class TServer { /** * Core processor */ - protected TProcessor processor_; + protected TProcessorFactory processorFactory_; /** * Server transport @@ -53,9 +53,9 @@ public abstract class TServer { * Default constructors. */ - protected TServer(TProcessor processor, + protected TServer(TProcessorFactory processorFactory, TServerTransport serverTransport) { - this(processor, + this(processorFactory, serverTransport, new TTransportFactory(), new TTransportFactory(), @@ -63,10 +63,10 @@ public abstract class TServer { new TBinaryProtocol.Factory()); } - protected TServer(TProcessor processor, + protected TServer(TProcessorFactory processorFactory, TServerTransport serverTransport, TTransportFactory transportFactory) { - this(processor, + this(processorFactory, serverTransport, transportFactory, transportFactory, @@ -74,11 +74,11 @@ public abstract class TServer { new TBinaryProtocol.Factory()); } - protected TServer(TProcessor processor, + protected TServer(TProcessorFactory processorFactory, TServerTransport serverTransport, TTransportFactory transportFactory, TProtocolFactory protocolFactory) { - this(processor, + this(processorFactory, serverTransport, transportFactory, transportFactory, @@ -86,13 +86,13 @@ public abstract class TServer { protocolFactory); } - protected TServer(TProcessor processor, + protected TServer(TProcessorFactory processorFactory, TServerTransport serverTransport, TTransportFactory inputTransportFactory, TTransportFactory outputTransportFactory, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory) { - processor_ = processor; + processorFactory_ = processorFactory; serverTransport_ = serverTransport; inputTransportFactory_ = inputTransportFactory; outputTransportFactory_ = outputTransportFactory; diff --git a/lib/java/src/server/TSimpleServer.java b/lib/java/src/server/TSimpleServer.java index 902c5967..181d8e4f 100644 --- a/lib/java/src/server/TSimpleServer.java +++ b/lib/java/src/server/TSimpleServer.java @@ -8,6 +8,7 @@ package com.facebook.thrift.server; import com.facebook.thrift.TException; import com.facebook.thrift.TProcessor; +import com.facebook.thrift.TProcessorFactory; import com.facebook.thrift.protocol.TProtocol; import com.facebook.thrift.protocol.TProtocolFactory; import com.facebook.thrift.transport.TServerTransport; @@ -24,14 +25,14 @@ public class TSimpleServer extends TServer { public TSimpleServer(TProcessor processor, TServerTransport serverTransport) { - super(processor, serverTransport); + super(new TProcessorFactory(processor), serverTransport); } public TSimpleServer(TProcessor processor, TServerTransport serverTransport, TTransportFactory transportFactory, TProtocolFactory protocolFactory) { - super(processor, serverTransport, transportFactory, protocolFactory); + super(new TProcessorFactory(processor), serverTransport, transportFactory, protocolFactory); } public TSimpleServer(TProcessor processor, @@ -40,11 +41,35 @@ public class TSimpleServer extends TServer { TTransportFactory outputTransportFactory, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory) { - super(processor, serverTransport, + super(new TProcessorFactory(processor), serverTransport, inputTransportFactory, outputTransportFactory, inputProtocolFactory, outputProtocolFactory); } + public TSimpleServer(TProcessorFactory processorFactory, + TServerTransport serverTransport) { + super(processorFactory, serverTransport); + } + + public TSimpleServer(TProcessorFactory processorFactory, + TServerTransport serverTransport, + TTransportFactory transportFactory, + TProtocolFactory protocolFactory) { + super(processorFactory, serverTransport, transportFactory, protocolFactory); + } + + public TSimpleServer(TProcessorFactory processorFactory, + TServerTransport serverTransport, + TTransportFactory inputTransportFactory, + TTransportFactory outputTransportFactory, + TProtocolFactory inputProtocolFactory, + TProtocolFactory outputProtocolFactory) { + super(processorFactory, serverTransport, + inputTransportFactory, outputTransportFactory, + inputProtocolFactory, outputProtocolFactory); + } + + public void serve() { try { serverTransport_.listen(); @@ -55,6 +80,7 @@ public class TSimpleServer extends TServer { while (true) { TTransport client = null; + TProcessor processor = null; TTransport inputTransport = null; TTransport outputTransport = null; TProtocol inputProtocol = null; @@ -62,11 +88,12 @@ public class TSimpleServer extends TServer { try { client = serverTransport_.accept(); if (client != null) { + processor = processorFactory_.getProcessor(client); inputTransport = inputTransportFactory_.getTransport(client); outputTransport = outputTransportFactory_.getTransport(client); inputProtocol = inputProtocolFactory_.getProtocol(inputTransport); outputProtocol = outputProtocolFactory_.getProtocol(outputTransport); - while (processor_.process(inputProtocol, outputProtocol)) {} + while (processor.process(inputProtocol, outputProtocol)) {} } } catch (TTransportException ttx) { // Client died, just move on diff --git a/lib/java/src/server/TThreadPoolServer.java b/lib/java/src/server/TThreadPoolServer.java index 9eaf9b8d..22930d54 100644 --- a/lib/java/src/server/TThreadPoolServer.java +++ b/lib/java/src/server/TThreadPoolServer.java @@ -8,6 +8,7 @@ package com.facebook.thrift.server; import com.facebook.thrift.TException; import com.facebook.thrift.TProcessor; +import com.facebook.thrift.TProcessorFactory; import com.facebook.thrift.protocol.TProtocol; import com.facebook.thrift.protocol.TProtocolFactory; import com.facebook.thrift.protocol.TBinaryProtocol; @@ -47,6 +48,14 @@ public class TThreadPoolServer extends TServer { new Options()); } + public TThreadPoolServer(TProcessorFactory processorFactory, + TServerTransport serverTransport) { + this(processorFactory, serverTransport, + new TTransportFactory(), new TTransportFactory(), + new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory(), + new Options()); + } + public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport, TTransportFactory transportFactory, @@ -56,15 +65,39 @@ public class TThreadPoolServer extends TServer { protocolFactory, protocolFactory, new Options()); } + + public TThreadPoolServer(TProcessorFactory processorFactory, + TServerTransport serverTransport, + TTransportFactory transportFactory, + TProtocolFactory protocolFactory) { + this(processorFactory, serverTransport, + transportFactory, transportFactory, + protocolFactory, protocolFactory, + new Options()); + } + public TThreadPoolServer(TProcessor processor, + TServerTransport serverTransport, + TTransportFactory inputTransportFactory, + TTransportFactory outputTransportFactory, + TProtocolFactory inputProtocolFactory, + TProtocolFactory outputProtocolFactory, + Options options) { + this(new TProcessorFactory(processor), serverTransport, + inputTransportFactory, outputTransportFactory, + inputProtocolFactory, outputProtocolFactory, + options); + } + + public TThreadPoolServer(TProcessorFactory processorFactory, TServerTransport serverTransport, TTransportFactory inputTransportFactory, TTransportFactory outputTransportFactory, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory, Options options) { - super(processor, serverTransport, + super(processorFactory, serverTransport, inputTransportFactory, outputTransportFactory, inputProtocolFactory, outputProtocolFactory); @@ -122,16 +155,18 @@ public class TThreadPoolServer extends TServer { * Loops on processing a client forever */ public void run() { + TProcessor processor = null; TTransport inputTransport = null; TTransport outputTransport = null; TProtocol inputProtocol = null; TProtocol outputProtocol = null; try { + processor = processorFactory_.getProcessor(client_); inputTransport = inputTransportFactory_.getTransport(client_); outputTransport = outputTransportFactory_.getTransport(client_); inputProtocol = inputProtocolFactory_.getProtocol(inputTransport); outputProtocol = outputProtocolFactory_.getProtocol(outputTransport); - while (processor_.process(inputProtocol, outputProtocol)) {} + while (processor.process(inputProtocol, outputProtocol)) {} } catch (TTransportException ttx) { // Assume the client died and continue silently } catch (TException tx) {