0
|
1 //
|
|
2 // MessagePack for Java
|
|
3 //
|
|
4 // Copyright (C) 2009 - 2013 FURUHASHI Sadayuki
|
|
5 //
|
|
6 // Licensed under the Apache License, Version 2.0 (the "License");
|
|
7 // you may not use this file except in compliance with the License.
|
|
8 // You may obtain a copy of the License at
|
|
9 //
|
|
10 // http://www.apache.org/licenses/LICENSE-2.0
|
|
11 //
|
|
12 // Unless required by applicable law or agreed to in writing, software
|
|
13 // distributed under the License is distributed on an "AS IS" BASIS,
|
|
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15 // See the License for the specific language governing permissions and
|
|
16 // limitations under the License.
|
|
17 //
|
|
18 package org.msgpack.unpacker;
|
|
19
|
4
|
20 import java.io.IOException;
|
0
|
21 import java.nio.ByteBuffer;
|
|
22
|
|
23 import org.msgpack.MessagePack;
|
|
24 import org.msgpack.io.LinkedBufferInput;
|
|
25
|
|
26 public class MessagePackBufferUnpacker extends MessagePackUnpacker implements BufferUnpacker {
|
|
27 private static final int DEFAULT_BUFFER_SIZE = 512; // TODO default buffer
|
|
28 // size
|
|
29
|
|
30 public MessagePackBufferUnpacker(MessagePack msgpack) {
|
|
31 this(msgpack, DEFAULT_BUFFER_SIZE);
|
|
32 }
|
|
33
|
|
34 public MessagePackBufferUnpacker(MessagePack msgpack, int bufferSize) {
|
|
35 super(msgpack, new LinkedBufferInput(bufferSize));
|
|
36 }
|
|
37
|
|
38 @Override
|
|
39 public MessagePackBufferUnpacker wrap(byte[] b) {
|
|
40 return wrap(b, 0, b.length);
|
|
41 }
|
|
42
|
|
43 @Override
|
|
44 public MessagePackBufferUnpacker wrap(byte[] b, int off, int len) {
|
|
45 ((LinkedBufferInput) in).clear();
|
|
46 ((LinkedBufferInput) in).feed(b, off, len, true);
|
|
47 return this;
|
|
48 }
|
|
49
|
|
50 @Override
|
|
51 public MessagePackBufferUnpacker wrap(ByteBuffer buf) {
|
|
52 ((LinkedBufferInput) in).clear();
|
|
53 ((LinkedBufferInput) in).feed(buf, true);
|
|
54 return this;
|
|
55 }
|
|
56
|
|
57 @Override
|
|
58 public MessagePackBufferUnpacker feed(byte[] b) {
|
|
59 ((LinkedBufferInput) in).feed(b);
|
|
60 return this;
|
|
61 }
|
|
62
|
|
63 @Override
|
|
64 public MessagePackBufferUnpacker feed(byte[] b, boolean reference) {
|
|
65 ((LinkedBufferInput) in).feed(b, reference);
|
|
66 return this;
|
|
67 }
|
|
68
|
|
69 @Override
|
|
70 public MessagePackBufferUnpacker feed(byte[] b, int off, int len) {
|
|
71 ((LinkedBufferInput) in).feed(b, off, len);
|
|
72 return this;
|
|
73 }
|
|
74
|
|
75 @Override
|
|
76 public MessagePackBufferUnpacker feed(byte[] b, int off, int len, boolean reference) {
|
|
77 ((LinkedBufferInput) in).feed(b, off, len, reference);
|
|
78 return this;
|
|
79 }
|
|
80
|
|
81 @Override
|
|
82 public MessagePackBufferUnpacker feed(ByteBuffer b) {
|
|
83 ((LinkedBufferInput) in).feed(b);
|
|
84 return this;
|
|
85 }
|
|
86
|
|
87 @Override
|
|
88 public MessagePackBufferUnpacker feed(ByteBuffer buf, boolean reference) {
|
|
89 ((LinkedBufferInput) in).feed(buf, reference);
|
|
90 return this;
|
|
91 }
|
|
92
|
|
93 @Override
|
|
94 public int getBufferSize() {
|
|
95 return ((LinkedBufferInput) in).getSize();
|
|
96 }
|
|
97
|
|
98 @Override
|
|
99 public void copyReferencedBuffer() {
|
|
100 ((LinkedBufferInput) in).copyReferencedBuffer();
|
|
101 }
|
|
102
|
|
103 @Override
|
|
104 public void clear() {
|
|
105 ((LinkedBufferInput) in).clear();
|
|
106 reset();
|
|
107 }
|
4
|
108
|
7
|
109 public byte[] getSerializedByteArray(int len) {
|
6
|
110 byte[] b = new byte[len];
|
7
|
111 try {
|
|
112 in.read(b, 0, b.length);
|
|
113 } catch (IOException e) {
|
|
114 e.printStackTrace();
|
|
115 }
|
6
|
116 return b;
|
4
|
117 }
|
0
|
118 }
|