package carafe_énoncé_v3;

public class ConcurrentCarafe implements Carafe {

	private SimpleCarafe c;
	
	public ConcurrentCarafe(SimpleCarafe c) {
		super();
		this.c = c;
	}

	@Override
	public void remplir() {
		synchronized(c) {
			c.remplir();
			c.notifyAll();
		}
	}

	@Override
	public void retirer(int q) throws InterruptedException {
		synchronized(c){
			c.retirer(q);
			while(c.estVide()) {
				c.wait();
			}
		}
	}

	@Override
	public boolean estVide() {		
		return c.estVide();
	}
	
	@Override
	public String toString() {
		return c.toString();
	}
}
