package edu.harvard.econcs.turkserver.server; import java.util.Map; import com.google.common.collect.ImmutableMap; import com.google.inject.Inject; import edu.harvard.econcs.turkserver.api.*; /** * Sample experiment demonstrating the API. * (For screenshots) * @author mao * */ @ExperimentServer("chat") public class ChatExperiment { HITWorkerGroup group; ExperimentLog log; ExperimentController controller; @Inject public ChatExperiment( HITWorkerGroup group, ExperimentLog log, ExperimentController controller) { this.group = group; this.log = log; this.controller = controller; } @StartExperiment void start() throws MessageException { log.printf("Starting chat with %d people", group.groupSize()); Map<String, Object> data = ImmutableMap.of( "msg", (Object) "Please start chatting!"); controller.sendExperimentBroadcast(data); } @BroadcastMessage boolean chatMessage(HITWorker worker, Map<String, Object> data) { log.printf("Worker %s said: %s", worker.getUsername(), data.get("msg")); return true; } @TimeLimit void timedOut() throws MessageException { Map<String, Object> data = ImmutableMap.of( "msg", (Object) "No more chatting for you!"); controller.sendExperimentBroadcast(data); } }