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