diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-03-27 21:50:01 +0200 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-03-27 21:50:01 +0200 |
commit | cb5e96d0106ed968640c11f7a0162d7ce25d4eaf (patch) | |
tree | 9c1412ce74d9077e97e086a15f9906962a57c9f2 /src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java | |
parent | 34f9215702bbadcd4dcd4a3be8eb8fe7f326ac27 (diff) |
Test classes for sending protocol buffers.
Diffstat (limited to 'src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java')
-rw-r--r-- | src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java b/src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java new file mode 100644 index 0000000..57afae9 --- /dev/null +++ b/src/main/java/com/orbekk/protobuf/SimpleProtobufServer.java @@ -0,0 +1,71 @@ +package com.orbekk.protobuf; + +import java.util.logging.Level; +import java.util.logging.Logger; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; + +public class SimpleProtobufServer extends Thread { + private static Logger logger = Logger.getLogger( + SimpleProtobufServer.class.getName()); + ServerSocket serverSocket; + + public static SimpleProtobufServer create(int port) { + try { + InetSocketAddress address = new InetSocketAddress(port); + ServerSocket serverSocket = new ServerSocket(); + serverSocket.setReuseAddress(true); + serverSocket.bind(address); + return new SimpleProtobufServer(serverSocket); + } catch (IOException e) { + logger.log(Level.WARNING, "Could not create server. ", e); + return null; + } + } + + public SimpleProtobufServer(ServerSocket serverSocket) { + this.serverSocket = serverSocket; + } + + private void handleConnection(final Socket connection) { + new Thread(new Runnable() { + @Override public void run() { + try { + Rpc.Request r1 = Rpc.Request.parseDelimitedFrom( + connection.getInputStream()); + Rpc.Request r2 = Rpc.Request.parseDelimitedFrom( + connection.getInputStream()); + System.out.println(r1); + System.out.println(r2); + } catch (IOException e) { + logger.info("Closed connection: " + connection); + } finally { + try { + connection.close(); + } catch (IOException e) { + } + } + } + }).start(); + } + + public void run() { + logger.info("Running server on port " + serverSocket.getLocalPort()); + while (!serverSocket.isClosed()) { + try { + Socket connection = serverSocket.accept(); + handleConnection(connection); + } catch (IOException e) { + logger.log(Level.WARNING, "Could not establish connection. ", + e); + } + } + } + + public static void main(String[] args) { + SimpleProtobufServer.create(10000).start(); + } +} |