Package org.menacheri.zombie

Source Code of org.menacheri.zombie.TimerCanceller

package org.menacheri.zombie;

import java.util.concurrent.ScheduledExecutorService;

import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
import org.menacheri.jetserver.event.Events;
import org.menacheri.jetserver.event.Event;
import org.menacheri.zombie.domain.ZombieCommands;


public class TimerCanceller extends SimpleChannelUpstreamHandler
{
  String type = null;
  ScheduledExecutorService service = null;
  public TimerCanceller(String type,ScheduledExecutorService service)
  {
    this.type = type;
    this.service = service;
  }
 
  @Override
  public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
      throws Exception
  {
    Object message = e.getMessage();
    if(message instanceof Event)
    {
      Event event = (Event)message;
      if(Events.NETWORK_MESSAGE == event.getType())
      {
        ChannelBuffer apocalypse = (ChannelBuffer) event.getSource();
        if(apocalypse.readableBytes()>=4)
        {
          int cmd = apocalypse.readInt();
          ZombieCommands command = ZombieCommands.CommandsEnum.fromInt(cmd);
          if(command == ZombieCommands.APOCALYPSE)
          {
            System.out.println("Cancelling " + type +  " timer due to apocalypse");
            service.shutdown();
            e.getChannel().close();
          }
        }
      }
    }
    if(message instanceof ChannelBuffer)
    {
      ChannelBuffer apocalypse = (ChannelBuffer) message;
      if(apocalypse.readableBytes()>=4)
      {
        int cmd = apocalypse.readInt();
        ZombieCommands command = ZombieCommands.CommandsEnum.fromInt(cmd);
        if(command == ZombieCommands.APOCALYPSE)
        {
          System.out.println("Cancelling " + type +  " timer");
          service.shutdown();
          e.getChannel().close();
        }
      }
    }
    super.messageReceived(ctx, e);
  }
 
  @Override
  public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
      throws Exception
  {
    System.out.println("Going to close channel in timer canceller handler");
    e.getChannel().close();
  }
}
TOP

Related Classes of org.menacheri.zombie.TimerCanceller

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.