DomainI {{ }} InstanceI {{ double valid(SolutionI solution); double quality(SolutionI solution); }} SolutionI {{ }} InstanceSetI {{ Option belongsTo(InstanceI instance); }} ProtocolI {{ double getResult(Claim claim, List replies); ProtocolSpec getProtocolSpec(); }} Claim {{ public Claim(InstanceSetI instanceSet, ProtocolI protocol, double quality){ this(new RWrap(instanceSet), new RWrap(protocol), quality); } public ProtocolI getProtocol(){ return getProtocolWrapper().getWrapee(); } public InstanceSetI getInstanceSet(){ return getInstanceSetWrapper().getWrapee(); } }} SolveRequest {{ public SolveRequest(InstanceI instance, Option claim){ this(new RWrap(instance), claim); } public InstanceI getInstance(){ return getInstanceWrapper().getWrapee(); } }} ProvideResponse {{ public ProvideResponse(InstanceI instance){ this(new RWrap(instance)); } public InstanceI getInstance(){ return getInstanceWrapper().getWrapee(); } }} SolveResponse {{ public SolveResponse(SolutionI solution){ this(new RWrap(solution)); } public SolutionI getSolution(){ return getSolutionWrapper().getWrapee(); } }} Config {{ public Config(SCGConfig scgConfig, DomainConfigI domainConfig){ this(scgConfig, new RWrap(domainConfig)); } public DomainConfigI getDomainConfig(){ return getDomainConfigWrapper().getWrapee(); } }} SCGConfig {{ private static SCGConfig DEFAULT_SCG_CONFIG; static{ try{ DEFAULT_SCG_CONFIG = SCGConfig.parse( "scg_config[\n" + "tournamentStyle: full round-robin\n" + "turnDuration: 60 //seconds\n" + "maxNumAvatars: 20\n" + "minStrengthening: 0.01\n" + "initialReputation: 100.0\n" + "maxReputation: 1000.0\n" + "reputationFactor: 0.4\n" + "minProposals: 2\n" + "maxProposals: 5\n" + "numRounds: 9\n" + "proposedClaimMustBeNew: true\n" + "]\n" ); }catch(Exception ex){ ex.printStackTrace(); } } public static SCGConfig getDefaultSCGConfig(){ return SCGConfig.DEFAULT_SCG_CONFIG; } }} Action {{ Request getRequest(Claim claim, List responses); }} ProvideAction {{ public Request getRequest(Claim claim, List responses){ return new ProvideRequest(claim); } }} SolveAction {{ public Request getRequest(Claim claim, List responses){ int instanceStepNo = getStepNo(); Response response = responses.lookup(instanceStepNo); if(response == null) return null; ProvideResponse provideResponse = (ProvideResponse) response; InstanceI instance = provideResponse.getInstance(); return new SolveRequest(instance, Option.some(claim)); } }} Role {{ /* Role is an enumeration*/ public static final int ALICE = 0; public static final int BOB = 1; int ordingal(); }} Alice {{ public int ordingal(){ return Role.ALICE; } }} Bob {{ public int ordingal(){ return Role.BOB; } }} /** * @author: Rashmi, Anush */ AvatarI{{ public ProposeResponse propose(ProposeRequest request); public OpposeResponse oppose(OpposeRequest request); public ProvideResponse provide(ProvideRequest request); public SolveResponse solve(SolveRequest request); }}