1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package openr66.protocol.localhandler.packet;
22
23 import openr66.protocol.exception.OpenR66ProtocolPacketException;
24
25 import org.jboss.netty.buffer.ChannelBuffer;
26 import org.jboss.netty.buffer.ChannelBuffers;
27
28
29
30
31
32
33
34
35 public class ValidPacket extends AbstractLocalPacket {
36 private final String sheader;
37
38 private String smiddle;
39
40 private final byte send;
41
42
43
44
45
46
47
48
49 public static ValidPacket createFromBuffer(int headerLength,
50 int middleLength, int endLength, ChannelBuffer buf) {
51 final byte[] bheader = new byte[headerLength - 1];
52 final byte[] bmiddle = new byte[middleLength];
53 final byte bend;
54 if (headerLength - 1 > 0) {
55 buf.readBytes(bheader);
56 }
57 if (middleLength > 0) {
58 buf.readBytes(bmiddle);
59 }
60 bend = buf.readByte();
61 return new ValidPacket(new String(bheader), new String(bmiddle), bend);
62 }
63
64
65
66
67
68
69 public ValidPacket(String header, String middle, byte end) {
70 sheader = header;
71 smiddle = middle;
72 send = end;
73 }
74
75
76
77
78
79
80 @Override
81 public void createEnd() throws OpenR66ProtocolPacketException {
82 end = ChannelBuffers.buffer(1);
83 end.writeByte(send);
84 }
85
86
87
88
89
90
91
92 @Override
93 public void createHeader() throws OpenR66ProtocolPacketException {
94 if (sheader != null) {
95 header = ChannelBuffers.wrappedBuffer(sheader.getBytes());
96 }
97 }
98
99
100
101
102
103
104
105 @Override
106 public void createMiddle() throws OpenR66ProtocolPacketException {
107 if (smiddle != null) {
108 middle = ChannelBuffers.wrappedBuffer(smiddle.getBytes());
109 }
110 }
111
112
113
114
115
116
117 @Override
118 public String toString() {
119 return "ValidPacket: " + sheader + ":" + smiddle + ":" + send;
120 }
121
122 @Override
123 public byte getType() {
124 return LocalPacketFactory.VALIDPACKET;
125 }
126
127
128
129
130 public String getSheader() {
131 return sheader;
132 }
133
134
135
136
137 public String getSmiddle() {
138 return smiddle;
139 }
140
141
142
143
144
145 public void setSmiddle(String smiddle) {
146 this.smiddle = smiddle;
147 middle = null;
148 }
149
150
151
152
153 public byte getTypeValid() {
154 return send;
155 }
156
157 }