1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.serialization;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.buffer.ByteBufOutputStream;
20 import io.netty.buffer.Unpooled;
21 import io.netty.util.internal.ObjectUtil;
22
23 import java.io.DataOutputStream;
24 import java.io.IOException;
25 import java.io.ObjectOutput;
26 import java.io.ObjectOutputStream;
27 import java.io.OutputStream;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 @Deprecated
44 public class ObjectEncoderOutputStream extends OutputStream implements
45 ObjectOutput {
46
47 private final DataOutputStream out;
48 private final int estimatedLength;
49
50
51
52
53
54
55
56
57
58 public ObjectEncoderOutputStream(OutputStream out) {
59 this(out, 512);
60 }
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 public ObjectEncoderOutputStream(OutputStream out, int estimatedLength) {
78 ObjectUtil.checkNotNull(out, "out");
79 ObjectUtil.checkPositiveOrZero(estimatedLength, "estimatedLength");
80
81 if (out instanceof DataOutputStream) {
82 this.out = (DataOutputStream) out;
83 } else {
84 this.out = new DataOutputStream(out);
85 }
86 this.estimatedLength = estimatedLength;
87 }
88
89 @Override
90 public void writeObject(Object obj) throws IOException {
91 ByteBuf buf = Unpooled.buffer(estimatedLength);
92 try {
93
94 ObjectOutputStream oout = new CompactObjectOutputStream(
95 new ByteBufOutputStream(buf));
96 try {
97 oout.writeObject(obj);
98 oout.flush();
99 } finally {
100 oout.close();
101 }
102
103 int objectSize = buf.readableBytes();
104 writeInt(objectSize);
105 buf.getBytes(0, this, objectSize);
106 } finally {
107 buf.release();
108 }
109 }
110
111 @Override
112 public void write(int b) throws IOException {
113 out.write(b);
114 }
115
116 @Override
117 public void close() throws IOException {
118 out.close();
119 }
120
121 @Override
122 public void flush() throws IOException {
123 out.flush();
124 }
125
126 public final int size() {
127 return out.size();
128 }
129
130 @Override
131 public void write(byte[] b, int off, int len) throws IOException {
132 out.write(b, off, len);
133 }
134
135 @Override
136 public void write(byte[] b) throws IOException {
137 out.write(b);
138 }
139
140 @Override
141 public final void writeBoolean(boolean v) throws IOException {
142 out.writeBoolean(v);
143 }
144
145 @Override
146 public final void writeByte(int v) throws IOException {
147 out.writeByte(v);
148 }
149
150 @Override
151 public final void writeBytes(String s) throws IOException {
152 out.writeBytes(s);
153 }
154
155 @Override
156 public final void writeChar(int v) throws IOException {
157 out.writeChar(v);
158 }
159
160 @Override
161 public final void writeChars(String s) throws IOException {
162 out.writeChars(s);
163 }
164
165 @Override
166 public final void writeDouble(double v) throws IOException {
167 out.writeDouble(v);
168 }
169
170 @Override
171 public final void writeFloat(float v) throws IOException {
172 out.writeFloat(v);
173 }
174
175 @Override
176 public final void writeInt(int v) throws IOException {
177 out.writeInt(v);
178 }
179
180 @Override
181 public final void writeLong(long v) throws IOException {
182 out.writeLong(v);
183 }
184
185 @Override
186 public final void writeShort(int v) throws IOException {
187 out.writeShort(v);
188 }
189
190 @Override
191 public final void writeUTF(String str) throws IOException {
192 out.writeUTF(str);
193 }
194 }