View Javadoc
1   /*
2    * Created on 2004-12-09
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
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  }