package dgm.streaming.requestmapper.handlers;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.handler.codec.http.HttpRequest;
import dgm.streaming.blueprints.GraphCommandListener;
import dgm.streaming.blueprints.StreamingGraph;
import dgm.streaming.command.GraphCommand;
import dgm.streaming.requestmapper.HttpRequestMapper;
import dgm.streaming.requestmapper.RequestHandlerException;
/**
* @author Ernst Bunders
*/
public class GlobalCommandStreamRequestHandler implements HttpRequestMapper.RequestHandler {
public static final String PATH_REGEX = "^/global";
private final StreamingGraph streamingGraph;
public GlobalCommandStreamRequestHandler(StreamingGraph streamingGraph) {
this.streamingGraph = streamingGraph;
}
@Override
public final void handleRequest(HttpRequest request, Channel channel) throws RequestHandlerException {
streamingGraph.addGraphCommandListener(new ChannelpushingGraphCommandListener(channel));
}
@Override
public final String getPathMatchingExpression() {
return PATH_REGEX;
}
public final class ChannelpushingGraphCommandListener implements GraphCommandListener {
private final Channel channel;
private ChannelpushingGraphCommandListener(Channel channel) {
this.channel = channel;
}
@Override
public void commandCreated(GraphCommand graphCommand) {
channel.write(graphCommand);
}
public Channel getChannel(){
return channel;
}
}
}