diff options
author | Simon Rettberg | 2015-06-11 18:40:49 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-06-11 18:40:49 +0200 |
commit | e0005ceecfd9281230c4add7575b18ee88307774 (patch) | |
tree | a73bbcfc213df478c701aac120ae2b7c6e52bb1b /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java | |
parent | [server] db stuff, new interface, ... (diff) | |
download | tutor-module-e0005ceecfd9281230c4add7575b18ee88307774.tar.gz tutor-module-e0005ceecfd9281230c4add7575b18ee88307774.tar.xz tutor-module-e0005ceecfd9281230c4add7575b18ee88307774.zip |
[server] On mah way (lots of restructuring, some early db classes, sql dump of current schema)
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java new file mode 100644 index 00000000..70c47edb --- /dev/null +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java @@ -0,0 +1,65 @@ +package org.openslx.bwlp.sat.thrift; + +import java.security.NoSuchAlgorithmException; + +import org.apache.log4j.Logger; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.server.THsHaServer; +import org.apache.thrift.server.TServer; +import org.apache.thrift.transport.TNonblockingServerSocket; +import org.apache.thrift.transport.TNonblockingServerTransport; +import org.apache.thrift.transport.TTransportException; +import org.openslx.bwlp.thrift.iface.SatelliteServer; +import org.openslx.thrifthelper.TBinaryProtocolSafe; + +public class BinaryListener implements Runnable { + private static final Logger log = Logger.getLogger(BinaryListener.class); + + private static final int MAX_MSG_LEN = 30 * 1000 * 1000; + private static final int MINWORKERTHREADS = 2; + private static final int MAXWORKERTHREADS = 64; + + private final SatelliteServer.Processor<ServerHandler> processor = new SatelliteServer.Processor<ServerHandler>( + new ServerHandler()); + private final TProtocolFactory protFactory = new TBinaryProtocolSafe.Factory(true, true); + + private final TServer server; + + public BinaryListener(int port, boolean secure) throws TTransportException, NoSuchAlgorithmException { + if (secure) + server = initSecure(port); + else + server = initNormal(port); + } + + @Override + public void run() { + log.info("Starting Listener"); + server.serve(); + log.fatal("Listener stopped unexpectedly"); + // TODO: Restart listener; if it fails, quit server so it will be restarted by the OS + } + + private TServer initSecure(int port) throws NoSuchAlgorithmException, TTransportException { + // TODO + return null; + } + + private TServer initNormal(int port) throws TTransportException { + final TNonblockingServerTransport serverTransport; + try { + serverTransport = new TNonblockingServerSocket(port); + log.fatal("Listening on port " + port + " (plain handler)"); + } catch (TTransportException e) { + log.fatal("Could not listen on port " + port + " (plain handler)"); + throw e; + } + THsHaServer.Args args = new THsHaServer.Args(serverTransport); + args.protocolFactory(protFactory); + args.processor(processor); + args.workerThreads(8); + args.maxReadBufferBytes = MAX_MSG_LEN; + return new THsHaServer(args); + } + +} |