Package com.taobao.top.analysis.node.connect

Source Code of com.taobao.top.analysis.node.connect.MemMasterConnector

/**
*
*/
package com.taobao.top.analysis.node.connect;


import java.util.concurrent.TimeUnit;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.taobao.top.analysis.exception.AnalysisException;
import com.taobao.top.analysis.node.event.GetTaskResponseEvent;
import com.taobao.top.analysis.node.event.MasterEventCode;
import com.taobao.top.analysis.node.event.MasterNodeEvent;
import com.taobao.top.analysis.node.event.SendMonitorInfoResponseEvent;
import com.taobao.top.analysis.node.event.SendResultsResponseEvent;

/**
* 用于单机的分布式模拟,采用内存作为通信的服务端实现
* @author fangweng
* @Email fangweng@taobao.com
* 2011-11-29
*
*/
public class MemMasterConnector extends AbstractMasterConnector implements Runnable {

  private static final Log logger = LogFactory.getLog(MemMasterConnector.class);
 
  MemTunnel tunnel;
  boolean running;
  Thread innerThread;
 
 
  @Override
  public void init() throws AnalysisException {
    running = true;
    innerThread = new Thread(this);
    innerThread.start();
  }

 
  @Override
  public void releaseResource() {
    running = false;
    innerThread.interrupt();
  }

  public MemTunnel getTunnel() {
    return tunnel;
  }


  public void setTunnel(MemTunnel tunnel) {
    this.tunnel = tunnel;
  }


  @Override
  public void run() {
   
    while(running)
    {
      try
      {
        MasterNodeEvent nodeEvent = tunnel.getMasterSide().poll(1, TimeUnit.SECONDS);
       
        if (nodeEvent != null)
        {
          if (nodeEvent.getEventCode().equals(MasterEventCode.GET_TASK) ||
              nodeEvent.getEventCode().equals(MasterEventCode.SEND_RESULT))
          {
            masterNode.addEvent(nodeEvent);
          }
        }
       
      }
      catch (InterruptedException e)
      {
        //do nothing
      }
      catch(Exception ex)
      {
        logger.error(ex,ex);
      }
    }
  }


  @Override
  public void echoGetJobTasks(GetTaskResponseEvent event) {
    tunnel.getSlaveSide().offer(event);
  }


  @Override
  public void echoSendJobTaskResults(SendResultsResponseEvent event) {
    tunnel.getSlaveSide().offer(event);
  }
 
  @Override
  public void echoSendMonitorInfo(SendMonitorInfoResponseEvent event) {
    tunnel.getSlaveSide().offer(event);
  }

    /* (non-Javadoc)
     * @see com.taobao.top.analysis.node.connect.IMasterConnector#openServer()
     */
    @Override
    public void openServer() {
    }

}
TOP

Related Classes of com.taobao.top.analysis.node.connect.MemMasterConnector

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.