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