summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-11 18:40:49 +0200
committerSimon Rettberg2015-06-11 18:40:49 +0200
commite0005ceecfd9281230c4add7575b18ee88307774 (patch)
treea73bbcfc213df478c701aac120ae2b7c6e52bb1b /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/BinaryListener.java
parent[server] db stuff, new interface, ... (diff)
downloadtutor-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.java65
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);
+ }
+
+}