Thrift TTransportFactory model for servers
Summary: Servers need to create bufferedtransports etc. around the transports they get in a user-definable way. So use a factory pattern to allow the user to supply an object to the server that defines this behavior.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664792 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/java/src/server/TSimpleServer.java b/lib/java/src/server/TSimpleServer.java
index 94b739e..76a5762 100644
--- a/lib/java/src/server/TSimpleServer.java
+++ b/lib/java/src/server/TSimpleServer.java
@@ -13,19 +13,9 @@
*/
public class TSimpleServer extends TServer {
- private TServerTransport serverTransport_;
-
public TSimpleServer(TProcessor processor,
TServerTransport serverTransport) {
- this(processor, new TServer.Options(), serverTransport);
- }
-
-
- public TSimpleServer(TProcessor processor,
- TServer.Options options,
- TServerTransport serverTransport) {
- super(processor, options);
- serverTransport_ = serverTransport;
+ super(processor, serverTransport);
}
public void run() {
@@ -38,18 +28,24 @@
while (true) {
TTransport client = null;
+ TTransport[] io = null;
try {
client = serverTransport_.accept();
if (client != null) {
- while (processor_.process(client, client));
+ io = transportFactory_.getIOTransports(client);
+ while (processor_.process(io[0], io[1]));
}
} catch (TException tx) {
tx.printStackTrace();
}
- if (client != null) {
- client.close();
- client = null;
+ if (io != null) {
+ if (io[0] != null) {
+ io[0].close();
+ }
+ if (io[1] != null) {
+ io[1].close();
+ }
}
}
}