View Javadoc

1   /*
2    * Created on 2004-12-04
3    *
4    * Klasa posrednicząca pomiędzy NetworkReceiverem, a obiektami które są zainteresowane
5    * otrzymywaniem informacji o nadchodzących pakietach
6    * 
7    */
8   package org.sourceforge.jvb3d.Network;
9   
10  import java.util.Observable;
11  import java.util.Queue;
12  import java.util.LinkedList;
13  import java.util.NoSuchElementException;
14  
15  /***
16   * @author Łukasz Krzyżak
17   *
18   * Klasa pośredniczy pomiędzy NetworkReceiverem, a obiektemi które chcą wiedziec o
19   * nadchodzących pakietach
20   */
21  public class ReceivedPacketBuffer extends Observable {
22  	private Queue<Packet> packetQueue = new LinkedList<Packet>();
23  	private int count = 0;
24  	
25  	/***
26  	 * Dodaje pakiet do kolejki, zwiększa ilość pakietów i ustawia flagę changed
27  	 * @param packet pakiet do dodania
28  	 */
29  	void addPacket(Packet packet) {
30  		count++;
31  		packetQueue.add(packet);
32  		this.setChanged();
33  	}
34  	
35  	/***
36  	 * zwraca ilość pakietów w buforze
37  	 * @return ilość pakietów w buforze
38  	 */
39  	int getPacketCount() {
40  		return count;
41  	}
42  	
43  	/***
44  	 * zwraca pakiet z bufora, i zmniejsza ilość elementów
45  	 * @return pakiet z kolejki
46  	 * @throws NoSuchElementException rzucany, jeśli nie było żadnego pakietu w kolejce
47  	 */
48  	Packet getNextPacket() throws NoSuchElementException {
49  		count--;
50  		return packetQueue.remove();
51  	}
52  	
53  	/***
54  	 * "podgląda" pakiet na początku kolejki - zwraca go nie usuwając
55  	 * @return pierwszy pakiet z kolejki
56  	 * @throws NoSuchElementException rzucany, jesli nie ma żadnego elementu w kolejce
57  	 */
58  	Packet peekNextPacket() throws NoSuchElementException {
59  		return packetQueue.peek();
60  	}
61  }