package org.mobicents.tools.heartbeat;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
import java.nio.charset.Charset;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelFutureListener;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.handler.codec.http.DefaultHttpResponse;
import org.jboss.netty.handler.codec.http.HttpHeaders;
import org.jboss.netty.handler.codec.http.HttpResponse;
import org.jboss.netty.handler.codec.http.HttpResponseStatus;
import org.jboss.netty.handler.codec.http.HttpVersion;
import org.mobicents.tools.heartbeat.api.IServerListener;
import org.mobicents.tools.heartbeat.api.Packet;
import org.mobicents.tools.heartbeat.api.Protocol;
import org.mobicents.tools.heartbeat.packets.HeartbeatResponsePacket;
import org.mobicents.tools.heartbeat.packets.ShutdownResponsePacket;
import org.mobicents.tools.heartbeat.packets.StartResponsePacket;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class TestNodeRegister implements IServerListener {
private Gson gson = new Gson();
@Override
public void responseReceived(JsonObject json)
{
}
@Override
public void startRequestReceived(MessageEvent e, JsonObject json)
{
writeResponse(e, HttpResponseStatus.OK, Protocol.START);
}
@Override
public void heartbeatRequestReceived(MessageEvent e, JsonObject json)
{
writeResponse(e, HttpResponseStatus.OK, Protocol.HEARTBEAT);
}
@Override
public void shutdownRequestReceived(MessageEvent e, JsonObject json)
{
writeResponse(e, HttpResponseStatus.OK, Protocol.SHUTDOWN);
}
private void writeResponse(MessageEvent e, HttpResponseStatus status, String command)
{
Packet packet = null;
switch(command)
{
case Protocol.HEARTBEAT:
packet = new HeartbeatResponsePacket(Protocol.OK);
break;
case Protocol.START:
packet = new StartResponsePacket(Protocol.OK);
break;
case Protocol.SHUTDOWN:
packet = new ShutdownResponsePacket(Protocol.OK);
break;
}
ChannelBuffer buf = ChannelBuffers.copiedBuffer(gson.toJson(packet), Charset.forName("UTF-8"));
HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, status);
response.setHeader(HttpHeaders.Names.CONTENT_TYPE, APPLICATION_JSON);
response.setHeader(HttpHeaders.Names.CONTENT_LENGTH, buf.readableBytes());
response.setContent(buf);
ChannelFuture future = e.getChannel().write(response);
future.addListener(ChannelFutureListener.CLOSE);
}
@Override
public void stopRequestReceived(MessageEvent e, JsonObject json) {
// TODO Auto-generated method stub
}
@Override
public void switchoverRequestReceived(MessageEvent e, JsonObject asJsonObject) {
// TODO Auto-generated method stub
}
}