1 // Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
2 // Licensed under the MIT License:
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a copy
5 // of this software and associated documentation files (the "Software"), to deal
6 // in the Software without restriction, including without limitation the rights
7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 // copies of the Software, and to permit persons to whom the Software is
9 // furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be included in
12 // all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 // THE SOFTWARE.
21 
22 module capnproto.SerializePacked;
23 
24 import java.nio.channels.ReadableByteChannel;
25 import java.nio.channels.WritableByteChannel;
26 
27 import capnproto.BufferedInputStream;
28 import capnproto.BufferedInputStreamWrapper;
29 import capnproto.BufferedOutputStream;
30 import capnproto.BufferedOutputStreamWrapper;
31 import capnproto.MessageBuilder;
32 import capnproto.MessageReader;
33 import capnproto.PackedInputStream;
34 import capnproto.PackedOutputStream;
35 import capnproto.ReaderOptions;
36 import capnproto.Serialize;
37 
38 struct SerializePacked
39 {
40 	static MessageReader read(BufferedInputStream input)
41 	{
42 		return read(input, cast(ReaderOptions)ReaderOptions.DEFAULT_READER_OPTIONS);
43 	}
44 	
45 	static MessageReader read(BufferedInputStream input, ReaderOptions options)
46 	{
47 		auto packedInput = new PackedInputStream(input);
48 		return Serialize.read(packedInput, options);
49 	}
50 	
51 	static MessageReader readFromUnbuffered(ReadableByteChannel input)
52 	{
53 		return readFromUnbuffered(input, cast(ReaderOptions)ReaderOptions.DEFAULT_READER_OPTIONS);
54 	}
55 	
56 	static MessageReader readFromUnbuffered(ReadableByteChannel input, ReaderOptions options)
57 	{
58 		auto packedInput = new PackedInputStream(new BufferedInputStreamWrapper(input));
59 		return Serialize.read(packedInput, options);
60 	}
61 	
62 	static void write(BufferedOutputStream output, MessageBuilder message)
63 	{
64 		auto packedOutputStream = new PackedOutputStream(output);
65 		Serialize.write(packedOutputStream, message);
66 	}
67 	
68 	static void writeToUnbuffered(WritableByteChannel output, MessageBuilder message)
69 	{
70 		auto buffered = new BufferedOutputStreamWrapper(output);
71 		write(buffered, message);
72 		buffered.flush();
73 	}
74 }