Package org.jgroups.demo.tankwar.jgroups.threads

Source Code of org.jgroups.demo.tankwar.jgroups.threads.AsychOtherThread

package org.jgroups.demo.tankwar.jgroups.threads;

import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;

import org.apache.log4j.Logger;
import org.jgroups.Message;
import org.jgroups.demo.tankwar.core.Session;
import org.jgroups.demo.tankwar.core.Type;
import org.jgroups.demo.tankwar.model.Blood;
import org.jgroups.demo.tankwar.model.Explode;


public class AsychOtherThread extends ThreadBase implements Runnable {
 
  private static final Logger logger = Logger.getLogger(AsychOtherThread.class);
 
  private ArrayBlockingQueue<Session> queue ;
 
  private List<Explode> explodes ;
 
  private List<Blood> bloods;
 
  public AsychOtherThread(ArrayBlockingQueue<Session> queue, List<Explode> explodes, List<Blood> bloods, String name, String cluster, String jgroupsProps) {
    super(name, cluster, jgroupsProps);
    this.queue = queue;
    this.explodes = explodes ;
    this.bloods = bloods;
  }

  public void receive(Message msg) {
   
    if(logger.isDebugEnabled()) {
      logger.debug("handle message, " + msg.printHeaders() + " | " + msg.getSrc()  + " | "  + msg.getObject()) ;
    }
       
    Session session = (Session) msg.getObject();
   
    if(session.type().equals(Type.B) ) {
      bloods.get(0).updateBlood(session.bloodView());
    } else if(session.type().equals(Type.E)) {
      explodes.add(new Explode(session.explodeView()));
    }
   
  }

  public void run() {
   
    Thread.currentThread().setName("TankWar-Asych-Other");
   
    logger.info("Start Running");
   
    while(true) {
     
      try {
        Session session = queue.take();
       
        if(logger.isDebugEnabled()){
          logger.debug("send message " + session + ", queue size =" + queue.size() );
        }
               
        channel.send(null, session);
       
//        if(session.type().equals(Type.B) && isCoordinator()){
//          channel.send(null, session);
//        } else {
//          channel.send(null, session);
//        }
      } catch (Exception e) {
        throw new TankWarThreadException("OtherThread Error", e);
      }
    }
  }

}
TOP

Related Classes of org.jgroups.demo.tankwar.jgroups.threads.AsychOtherThread

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.