View Javadoc
1   package ch.hslu.exercises.sw06.ex4;
2   
3   /**
4    * Puffer (First In First Out) mit einer begrenzten Kapazität. Der Puffer ist thread sicher.
5    *
6    * @param <T> Element Typ.
7    */
8   public interface Buffer<T> {
9   
10      /**
11       * Ein Element T speichern. Falls der Puffer voll ist, warten bis ein Platz frei wird.
12       *
13       * @param elem zu speicherndes Element.
14       * @throws InterruptedException wenn das Warten unterbrochen wird.
15       */
16      void add(final T elem) throws InterruptedException;
17  
18      /**
19       * Ein Element T speichern oder nach einem Timeout abbrechen. Falls der Puffer voll ist, warten
20       * bis ein Platz frei wird.
21       *
22       * @param elem   zu speicherndes Element.
23       * @param millis Timeout bis zum Abbruch.
24       * @return true, wenn Element gespeichert wurde, false, wenn Timeout eingetreten ist.
25       * @throws InterruptedException wenn das Warten unterbrochen wird.
26       */
27      boolean add(final T elem, final long millis) throws InterruptedException;
28  
29      /**
30       * Liest und entfernt ein Element. Falls der Puffer leer ist, warten bis ein Platz belegt wird.
31       *
32       * @return gelesenes Element.
33       * @throws InterruptedException falls das Warten unterbrochen wird.
34       */
35      T remove() throws InterruptedException;
36  
37      /**
38       * Liest und entfernt ein Element oder nach einem Timeout abbrechen. Falls der Puffer leer ist,
39       * warten bis ein Platz belegt wird.
40       *
41       * @param millis Timeout bis zum Abbruch.
42       * @return gelesenes Element.
43       * @throws InterruptedException falls das Warten unterbrochen wird.
44       */
45      T remove(final long millis) throws InterruptedException;
46  
47      /**
48       * Gibt, ob der Puffer leer ist.
49       *
50       * @return true wenn der Puffer leer ist, sonst false.
51       */
52      boolean empty();
53  
54      /**
55       * Gibt, ob der Puffer voll ist.
56       *
57       * @return true wenn der Puffer voll ist, sonst false.
58       */
59      boolean full();
60  
61      /**
62       * Gibt die Anzahl im Puffer gespeicherten Elemente zurück.
63       *
64       * @return Anzahl Elemente.
65       */
66      int size();
67  }