1
2
3
4
5
6
7 package org.sourceforge.jvb3d.Network;
8
9 import java.util.zip.CRC32;
10
11 /***
12 * @author Łukasz Krzyżak
13 *
14 * Pakiet przekazujący dane o update
15 *
16 */
17 public class UpdatePacket extends Packet {
18 /***
19 * wersja do serializacji
20 */
21 public static final long serialVersionUID = 3;
22
23 private byte[] updateData;
24 private long seqNumber;
25 private long crc;
26
27 private static CRC32 crcCounter = new CRC32();
28
29 /***
30 * zwraca dane o update przechowywane w pakiecie. Dodatkowo sprawdza ich CRC.
31 * @return date dane update
32 * @throws ChecksumErrorException gdy dane mają błedna sumę kontrolną
33 */
34 public byte[] getUpdateData() throws ChecksumErrorException {
35 crcCounter.reset();
36 crcCounter.update(updateData);
37 if(crc != crcCounter.getValue()) throw new ChecksumErrorException();
38 return updateData;
39 }
40
41 /***
42 * umieszcza dane do przesłania w pakiecie, i oblicza ich CRC
43 * @param data
44 */
45 public void setUpdateData(byte[] data) {
46 updateData = data;
47 crcCounter.reset();
48 crcCounter.update(data);
49 crc = crcCounter.getValue();
50 }
51
52 /***
53 * ustawia numer SEQ pakietu
54 * @param number numer sekwencji
55 */
56 public void setSeqNumber(long number) {
57 seqNumber = number;
58 }
59
60 /***
61 * zwraca numer SEQ
62 * @return numer SEQ
63 */
64 public long getSeqNumber() {
65 return seqNumber;
66 }
67 }