1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.handler.codec.serialization;
17
18 import java.io.IOException;
19 import java.io.ObjectOutputStream;
20 import java.io.ObjectStreamClass;
21 import java.io.OutputStream;
22
23
24
25
26
27
28
29
30 class CompactObjectOutputStream extends ObjectOutputStream {
31
32 static final int TYPE_FAT_DESCRIPTOR = 0;
33 static final int TYPE_THIN_DESCRIPTOR = 1;
34
35 CompactObjectOutputStream(OutputStream out) throws IOException {
36 super(out);
37 }
38
39 @Override
40 protected void writeStreamHeader() throws IOException {
41 writeByte(STREAM_VERSION);
42 }
43
44 @Override
45 protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException {
46 Class<?> clazz = desc.forClass();
47 if (clazz.isPrimitive() || clazz.isArray()) {
48 write(TYPE_FAT_DESCRIPTOR);
49 super.writeClassDescriptor(desc);
50 } else {
51 write(TYPE_THIN_DESCRIPTOR);
52 writeUTF(desc.getName());
53 }
54 }
55 }