From 2e0fa68f7d06e988fada263b9ffe9fad7e83cb40 Mon Sep 17 00:00:00 2001
From: "Sven G. Robertz" <sven.robertz@cs.lth.se>
Date: Fri, 29 Nov 2013 06:24:53 -0500
Subject: [PATCH] added python test decoder and a server that only encodes

---
 examples/tcp/example_tcp_client_decoder.py    | 34 ++++++++++
 .../labcommTCPtest/server/OneShotServer.java  | 62 +++++++++++++++++++
 examples/tcp/runpy                            |  3 +
 examples/tcp/rwsocket.py                      | 24 +++++++
 4 files changed, 123 insertions(+)
 create mode 100755 examples/tcp/example_tcp_client_decoder.py
 create mode 100644 examples/tcp/labcommTCPtest/server/OneShotServer.java
 create mode 100755 examples/tcp/runpy
 create mode 100644 examples/tcp/rwsocket.py

diff --git a/examples/tcp/example_tcp_client_decoder.py b/examples/tcp/example_tcp_client_decoder.py
new file mode 100755
index 0000000..eebad4a
--- /dev/null
+++ b/examples/tcp/example_tcp_client_decoder.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+
+import os
+import sys
+import socket
+import rwsocket
+
+if not any('labcomm' in p for p in sys.path):
+    sys.path.append('../../lib/python')
+import labcomm
+
+
+if __name__ == "__main__":
+    print "Trying to connect..."
+    host = sys.argv[1] #'localhost'
+    port = sys.argv[2] #'8081'
+    addr = (host,int(port))
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    sock.connect(addr)
+    print "Connected!"
+
+    d = labcomm.Decoder(labcomm.StreamReader(sock))
+
+    while True:
+        try:
+            data,decl = d.decode()
+            if data:
+                print data
+        except KeyError as e:
+            print 'KeyError : "%s"' % str(e)
+            break 
+        except:
+            print 'exception...', sys.exc_info()[0]
+            break
diff --git a/examples/tcp/labcommTCPtest/server/OneShotServer.java b/examples/tcp/labcommTCPtest/server/OneShotServer.java
new file mode 100644
index 0000000..437e723
--- /dev/null
+++ b/examples/tcp/labcommTCPtest/server/OneShotServer.java
@@ -0,0 +1,62 @@
+package labcommTCPtest.server;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.ServerSocket;
+
+import se.lth.control.labcomm.LabCommDecoderChannel;
+import se.lth.control.labcomm.LabCommEncoderChannel;
+import labcommTCPtest.gen.FooSample;
+
+public class OneShotServer {//implements Handler {
+
+	private OutputStream out;
+
+	public OneShotServer(Socket s) throws IOException {
+		out = s.getOutputStream();
+	}
+
+	public void test() {
+		
+		try {
+			LabCommEncoderChannel e = new LabCommEncoderChannel(out );
+			FooSample.register(e);
+			FooSample sample = new FooSample();
+			sample.x = 17;
+			sample.y = 42;
+			sample.t = 1717;
+			sample.d = 0.42;
+			printSample("Server sending", sample);
+			FooSample.encode(e, sample);
+			Thread.sleep(1);
+			sample.x++;
+			sample.y--;
+			printSample("Server sending", sample);
+			FooSample.encode(e, sample);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public static void main(String... args) {
+		String server = "localhost";
+		int port = 9999;
+		try {
+			ServerSocket ss = new ServerSocket(port);
+			Socket s = ss.accept();
+			OneShotServer c = new OneShotServer(s);
+			c.test();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void printSample(String header, FooSample sample2) throws Exception {
+		System.out.println(header);
+		System.out.format("TestClient.invoke(%d, %d, %d, %f)\n", sample2.x, sample2.y, sample2.t, sample2.d);
+	}
+}
diff --git a/examples/tcp/runpy b/examples/tcp/runpy
new file mode 100755
index 0000000..42d7b92
--- /dev/null
+++ b/examples/tcp/runpy
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+PYTHONPATH=../../lib/python ./example_tcp_client_decoder.py
diff --git a/examples/tcp/rwsocket.py b/examples/tcp/rwsocket.py
new file mode 100644
index 0000000..99d424a
--- /dev/null
+++ b/examples/tcp/rwsocket.py
@@ -0,0 +1,24 @@
+import socket
+import types
+
+def flush(self):
+    pass
+
+socket.socket.write = socket.socket.send
+socket.socket.read = socket.socket.recv
+socket.socket.flush = flush
+
+# class rwsocket(socket.socket):
+#     write=socket.socket.send
+#     read=socket.socket.recv
+
+#     def flush(self):
+#         pass
+
+#     def accept(self):
+#         sock, addr = super(rwsocket, self).accept()
+#         # sock.write = types.MethodType(self.write, sock, sock.__class__)
+#         # sock.read = types.MethodType(self.write, sock, sock.__class__)
+#         sock.__class__ = rwsocket
+
+#         return (sock, addr)
-- 
GitLab