From 05041bf4d942a96ce627f2b799be45a285a535fb Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Thu, 16 May 2013 20:30:36 +0200
Subject: [PATCH] Added StreamWriter and StreamReader to python library.
Updated wiki_example to use StreamReader.
---
.bzrignore | 6 +++++
Makefile | 2 +-
examples/Makefile | 3 ++-
examples/wiki_example/example_decoder.py | 23 +-----------------
lib/python/labcomm/StreamReader.py | 23 ++++++++++++++++++
lib/python/labcomm/StreamWriter.py | 19 +++++++++++++++
lib/python/labcomm/__init__.py | 3 +++
test/test_encoder_decoder.py | 30 ++----------------------
8 files changed, 57 insertions(+), 52 deletions(-)
create mode 100644 lib/python/labcomm/StreamReader.py
create mode 100644 lib/python/labcomm/StreamWriter.py
diff --git a/.bzrignore b/.bzrignore
index 06ec666..dc2d51e 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -25,3 +25,9 @@ example.h
example.py
examples/wiki_example/example.encoded
example.encoded
+examples/simple/*.class
+examples/simple/encoded_data
+examples/simple/example_decoder
+examples/simple/example_encoder
+lib/c/test/test_labcomm_basic_type_encoding
+lib/c/test/test_labcomm_generated_encoding
diff --git a/Makefile b/Makefile
index 4bb6ec7..e9388b0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-SUBDIRS=compiler lib examples test
+SUBDIRS=compiler lib test examples
export LABCOMM_JAR=$(shell pwd)/compiler/labComm.jar
export LABCOMM=java -jar $(LABCOMM_JAR)
diff --git a/examples/Makefile b/examples/Makefile
index a8a26d7..f9a5511 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -2,7 +2,8 @@ all:
echo To be done...
test:
- echo To be done...
+ echo More to be done...
+ cd simple ; sh compile.sh && sh run.sh
clean:
echo To be done...
diff --git a/examples/wiki_example/example_decoder.py b/examples/wiki_example/example_decoder.py
index 3d40cf4..d729145 100755
--- a/examples/wiki_example/example_decoder.py
+++ b/examples/wiki_example/example_decoder.py
@@ -3,29 +3,8 @@
import labcomm
import sys
-class FileReader:
- def __init__(self, name):
- self.f = open(name)
- pass
-
- def start(self, decoder, version):
- other_version = decoder.decode_string()
- if version != other_version:
- raise Exception("LabComm version mismatch %s != %s" %
- (version, other_version))
- pass
-
- def read(self, count):
- s = self.f.read(count)
- if len(s) == 0:
- raise Exception("EOF")
- return s
-
- def mark(self, value, decl):
- pass
-
if __name__ == "__main__":
- d = labcomm.Decoder(FileReader(sys.argv[1]))
+ d = labcomm.Decoder(labcomm.StreamReader(open(sys.argv[1])))
while True:
try:
diff --git a/lib/python/labcomm/StreamReader.py b/lib/python/labcomm/StreamReader.py
new file mode 100644
index 0000000..08c97ab
--- /dev/null
+++ b/lib/python/labcomm/StreamReader.py
@@ -0,0 +1,23 @@
+class StreamReader:
+
+ def __init__(self, stream):
+ self.stream = stream
+ pass
+
+ def start(self, decoder, version):
+ other_version = decoder.decode_string()
+ if version != other_version:
+ raise Exception("LabComm version mismatch %s != %s" %
+ (version, other_version))
+ pass
+
+ def read(self, count):
+ result = self.stream.read(count)
+ if len(result) == 0:
+ raise EOFError()
+ return result
+
+ def mark(self, value, decl):
+ pass
+
+ pass
diff --git a/lib/python/labcomm/StreamWriter.py b/lib/python/labcomm/StreamWriter.py
new file mode 100644
index 0000000..ae57c96
--- /dev/null
+++ b/lib/python/labcomm/StreamWriter.py
@@ -0,0 +1,19 @@
+class StreamWriter:
+
+ def __init__(self, stream):
+ self.stream = stream
+ pass
+
+ def start(self, encoder, version):
+ encoder.encode_string(version)
+ pass
+
+ def write(self, data):
+ self.stream.write(data)
+ pass
+
+ def mark(self):
+ self.stream.flush()
+ pass
+
+ pass
diff --git a/lib/python/labcomm/__init__.py b/lib/python/labcomm/__init__.py
index 563171e..52a5911 100644
--- a/lib/python/labcomm/__init__.py
+++ b/lib/python/labcomm/__init__.py
@@ -1,5 +1,8 @@
import labcomm.LabComm
+from labcomm.StreamReader import StreamReader
+from labcomm.StreamWriter import StreamWriter
+
Decoder = labcomm.LabComm.Decoder
Encoder = labcomm.LabComm.Encoder
diff --git a/test/test_encoder_decoder.py b/test/test_encoder_decoder.py
index 6d8d4bc..acd08e5 100755
--- a/test/test_encoder_decoder.py
+++ b/test/test_encoder_decoder.py
@@ -127,18 +127,7 @@ class Test:
self.next = threading.Semaphore(0)
decoder = threading.Thread(target=self.decode, args=(p.stdout,))
decoder.start()
- class Writer:
- def start(self, encoder, version):
- encoder.encode_string(version)
- pass
- def write(self, data):
- p.stdin.write(data)
- pass
- def mark(self):
- p.stdin.flush()
- pass
- pass
- encoder = labcomm.Encoder(Writer())
+ encoder = labcomm.Encoder(labcomm.StreamWriter(p.stdin))
for name,signature in self.signatures:
encoder.add_decl(signature)
pass
@@ -164,22 +153,7 @@ class Test:
pass
def decode(self, f):
- class Reader:
- def start(self, decoder, version):
- other_version = decoder.decode_string()
- if version != other_version:
- raise Exception("LabComm version mismatch %s != %s" %
- (version, other_version))
- pass
- def read(self, count):
- result = f.read(count)
- if len(result) == 0:
- raise EOFError()
- return result
- def mark(self, value, decl):
- pass
- pass
- decoder = labcomm.Decoder(Reader())
+ decoder = labcomm.Decoder(labcomm.StreamReader(f))
try:
while True:
value,decl = decoder.decode()
--
GitLab