package onetomany.bargainingchipsgame.players; import java.util.concurrent.BlockingQueue; import onetomany.bargainingchipsgame.Bundle; import onetomany.bargainingchipsgame.interactions.Offer; import onetomany.bargainingchipsgame.interactions.SampleOffer; public abstract class BilateralAgent implements Runnable { String name; BlockingQueue in; BlockingQueue out; public BilateralAgent(String name, BlockingQueue in, BlockingQueue out) { super(); this.name = name; this.in = in; this.out = out; } @Override public void run() { while (true) { Offer o; try { o = in.take(); Bundle bundle = o.getBundle(); System.out.println("Received " + bundle); receiveOffer(bundle); out.put(new SampleOffer(10)); System.out.println("Sent " + out); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } protected abstract void receiveOffer(Bundle bundle); protected abstract Offer sendOffer(); }