package edu.harvard.econcs.turkserver.server;
import java.util.Map;
import javax.servlet.ServletException;
import org.cometd.annotation.*;
import org.cometd.bayeux.server.ConfigurableServerChannel;
import org.cometd.bayeux.server.ServerMessage;
import org.cometd.bayeux.server.ServerSession;
import org.cometd.server.authorizer.GrantAuthorizer;
import org.eclipse.jetty.util.log.Log;
public class DemoServlet extends SessionServlet {
private static final long serialVersionUID = 3128535146982507267L;
@Override
public void init() throws ServletException {
super.init();
processor.process(new EchoRPC());
processor.process(new ChatService());
bayeux.createIfAbsent("/foo/bar/baz", new ConfigurableServerChannel.Initializer()
{
public void configureChannel(ConfigurableServerChannel channel)
{
channel.setPersistent(true);
}
});
if (bayeux.getLogger().isDebugEnabled())
System.err.println(bayeux.dump());
}
@Service("echo")
public static class EchoRPC
{
@Session
private ServerSession _session;
@Configure("/service/echo")
public void configureEcho(ConfigurableServerChannel channel)
{
channel.addAuthorizer(GrantAuthorizer.GRANT_SUBSCRIBE_PUBLISH);
}
@Listener("/service/echo")
public void doEcho(ServerSession session, ServerMessage message)
{
Map<String,Object> data = message.getDataAsMap();
Log.getRootLogger().info("ECHO from "+session+" "+data);
session.deliver(_session, message.getChannel(), data, null);
}
}
}