diff options
author | frsyuki <frsyuki@users.sourceforge.jp> | 2009-10-25 02:41:55 +0900 |
---|---|---|
committer | frsyuki <frsyuki@users.sourceforge.jp> | 2009-10-25 02:41:55 +0900 |
commit | d39c016e1d84765a50ae3c7cbfc3d6869faa9c07 (patch) | |
tree | 169ca4fb6fcfb6c40d33ae9bf4afa7e9e46209ec /java-plan1/test.java | |
parent | 5393a0df16f3bbdf296222b6337db5d57fe7c3a6 (diff) | |
download | msgpack-python-d39c016e1d84765a50ae3c7cbfc3d6869faa9c07.tar.gz |
java: fix streaming de/serializer
Diffstat (limited to 'java-plan1/test.java')
-rw-r--r-- | java-plan1/test.java | 75 |
1 files changed, 71 insertions, 4 deletions
diff --git a/java-plan1/test.java b/java-plan1/test.java index 938a687..5b2349f 100644 --- a/java-plan1/test.java +++ b/java-plan1/test.java @@ -6,21 +6,88 @@ class OpenByteArrayOutputStream extends ByteArrayOutputStream { byte[] getBuffer() { return buf; } } + public class test { + public static void main(String[] args) throws IOException { + testSimple(); + testStreaming(); + } + + + public static void testSimple() throws IOException + { OpenByteArrayOutputStream out = new OpenByteArrayOutputStream(); Packer pk = new Packer(out); pk.packArray(3) - .packInt(0) - .packByte((byte)1) - .packDouble(0.1); + .packInt(1) + .packByte((byte)2) + .packDouble(0.3); Unpacker pac = new Unpacker(); int nlen = pac.execute(out.getBuffer(), 0, out.getCount()); + if(pac.isFinished()) { - System.out.println(pac.getData()); + System.out.println("testSimple: "+pac.getData()); + } + } + + + public static void testStreaming() throws IOException + { + OpenByteArrayOutputStream out = new OpenByteArrayOutputStream(); + + //// + // sender + // + // initialize the streaming serializer + Packer pk = new Packer(out); + + // serialize 2 objects + pk.packArray(3) + .packInt(0) + .packByte((byte)1) + .packDouble(0.2); + pk.packArray(3) + .packInt(3) + .packByte((byte)4) + .packDouble(0.5); + + // send it through the network + InputStream sock = new ByteArrayInputStream(out.getBuffer(), 0, out.getCount()); + + + //// + // receiver + // + // initialize the streaming deserializer + Unpacker pac = new Unpacker(); + int parsed = 0; + + byte[] buf = new byte[1024]; + int buflen = 0; + + while(true) { + // receive data from the network + int c = sock.read(); + if(c < 0) { return; } + + buf[buflen++] = (byte)c; + + // deserialize + parsed = pac.execute(buf, parsed, buflen); + if(pac.isFinished()) { + // get an object + Object msg = pac.getData(); + System.out.println("testStreaming: "+msg); + + // reset the streaming deserializer + pac.reset(); + buflen = 0; + parsed = 0; + } } } } |