source: protocol/src/main/java/geniusweb/protocol/session/mopac/phase/OfferPhase.java@ 21

Last change on this file since 21 was 21, checked in by bart, 4 years ago

Version 1.5.

File size: 1.7 KB
Line 
1package geniusweb.protocol.session.mopac.phase;
2
3import java.util.Arrays;
4import java.util.List;
5import java.util.stream.Collectors;
6
7import geniusweb.actions.Action;
8import geniusweb.actions.EndNegotiation;
9import geniusweb.actions.Offer;
10import geniusweb.actions.PartyId;
11import geniusweb.inform.Inform;
12import geniusweb.inform.YourTurn;
13import geniusweb.issuevalue.Bid;
14import geniusweb.protocol.ProtocolException;
15import geniusweb.protocol.session.mopac.PartyStates;
16import geniusweb.voting.VotingEvaluator;
17
18public class OfferPhase extends DefaultPhase {
19
20 public OfferPhase(Phase prevPhase, PartyStates partyStates, Long deadlinems,
21 VotingEvaluator evaluator) {
22 super(prevPhase, partyStates,
23 Arrays.asList(Offer.class, EndNegotiation.class), deadlinems,
24 evaluator);
25 }
26
27 @Override
28 public OfferPhase with(PartyId actor, Action action, long timems) {
29 try {
30 checkAction(actor, action, timems);
31 } catch (ProtocolException ex) {
32 return this.with(ex);
33 }
34 return new OfferPhase(prevPhase, partyStates.with(action), deadline,
35 evaluator);
36 }
37
38 @Override
39 public Inform getInform() {
40 return new YourTurn();
41 }
42
43 @Override
44 public OfferPhase with(ProtocolException e) {
45 System.out.println("Party kicked because of protocol exception:" + e);
46 return new OfferPhase(prevPhase, partyStates.with(e), deadline,
47 evaluator);
48 }
49
50 @Override
51 public Phase finish() {
52 return new OfferPhase(prevPhase, partyStates.finish(), deadline,
53 evaluator);
54 }
55
56 @Override
57 public VotingPhase checkedNext(long deadln) {
58 return new VotingPhase(this, partyStates.flush(), deadln, evaluator);
59 }
60
61 public List<Bid> getOffers() {
62 return partyStates.getActions(Offer.class).stream()
63 .map(offer -> offer.getBid()).collect(Collectors.toList());
64 }
65
66}
Note: See TracBrowser for help on using the repository browser.