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
36
37
38 public class BusinessRequestPacket extends AbstractLocalPacket {
39 private static final byte ASKVALIDATE = 0;
40
41 private static final byte ANSWERVALIDATE = 1;
42 private static final byte ANSWERINVALIDATE = 2;
43
44 private String sheader;
45
46 private int delay = 0;
47
48 private byte way;
49
50 public static BusinessRequestPacket createFromBuffer(int headerLength,
51 int middleLength, int endLength, ChannelBuffer buf) throws OpenR66ProtocolPacketException {
52 final byte[] bheader = new byte[headerLength - 1];
53 if (headerLength - 1 > 0) {
54 buf.readBytes(bheader);
55 }
56 if (middleLength != 4) {
57 throw new OpenR66ProtocolPacketException("Packet not correct");
58 }
59 int delay = buf.readInt();
60 if (endLength != 1) {
61 throw new OpenR66ProtocolPacketException("Packet not correct");
62 }
63 byte valid = buf.readByte();
64 return new BusinessRequestPacket(new String(bheader), delay, valid);
65 }
66
67 public BusinessRequestPacket(String header, int delay, byte way) {
68 this.sheader = header;
69 this.delay = delay;
70 this.way = way;
71 }
72
73 public BusinessRequestPacket(String header, int delay) {
74 this.sheader = header;
75 this.delay = delay;
76 this.way = ASKVALIDATE;
77 }
78
79
80
81
82
83
84 @Override
85 public void createEnd() throws OpenR66ProtocolPacketException {
86 end = ChannelBuffers.buffer(1);
87 end.writeByte(way);
88 }
89
90
91
92
93
94
95
96 @Override
97 public void createHeader() throws OpenR66ProtocolPacketException {
98 header = ChannelBuffers.wrappedBuffer(sheader.getBytes());
99 }
100
101
102
103
104
105
106
107 @Override
108 public void createMiddle() throws OpenR66ProtocolPacketException {
109 middle = ChannelBuffers.buffer(4);
110 middle.writeInt(delay);
111 }
112
113 @Override
114 public byte getType() {
115 return LocalPacketFactory.BUSINESSREQUESTPACKET;
116 }
117
118
119
120
121
122
123 @Override
124 public String toString() {
125 return "BusinessRequestPacket: " + sheader + ":" + delay+":"+way;
126 }
127
128
129
130
131 public boolean isToValidate() {
132 return way == ASKVALIDATE;
133 }
134
135
136
137
138 public void validate() {
139 way = ANSWERVALIDATE;
140 header = null;
141 middle = null;
142 end = null;
143 }
144
145
146
147 public void invalidate() {
148 way = ANSWERINVALIDATE;
149 header = null;
150 middle = null;
151 end = null;
152 }
153
154
155
156
157 public String getSheader() {
158 return sheader;
159 }
160
161
162
163
164 public int getDelay() {
165 return delay;
166 }
167
168
169
170 public void setDelay(int delay) {
171 this.delay = delay;
172 middle = null;
173 }
174 }