Package com.zhangwoo.spider.server

Source Code of com.zhangwoo.spider.server.TaskStateHandler

package com.zhangwoo.spider.server;

import java.net.InetSocketAddress;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.session.IoSessionConfig;
import org.apache.mina.transport.socket.SocketSessionConfig;

import com.meiya.common.DateUtil;
import com.zhangwoo.spider.po.UrlState;
import com.zhangwoo.spider.server.dao.LogDao;

public class TaskStateHandler extends IoHandlerAdapter {
  private Logger logger = Logger.getLogger(TaskStateHandler.class
      .getName());

  @Override
  public void sessionCreated(IoSession session) throws Exception {
    IoSessionConfig cfg = session.getConfig();
      if (cfg instanceof SocketSessionConfig) {
       ((SocketSessionConfig) cfg).setKeepAlive(true);
       ((SocketSessionConfig) cfg).setSoLinger(0);
       ((SocketSessionConfig) cfg).setTcpNoDelay(true);
       ((SocketSessionConfig) cfg).setWriteTimeout(1000 * 5);
      }
  }
  @Override
  public void exceptionCaught(IoSession session, Throwable cause)
      throws Exception {
    logger.error("TaskStateHandler error ",cause);
    if(cause instanceof java.io.IOException)
      session.close(true);
  }

  @Override
  public void messageReceived(IoSession session, Object message)
      throws Exception {
    UrlState state=(UrlState) message;
    int index=TaskCenter.urlState.indexOf(state);
    if(index!=-1){
      UrlState oldState=TaskCenter.urlState.remove(index);
      state.setBeginTime(oldState.getBeginTime());
      state.setEndTime(DateUtil.formatDateTime());
      state.setRuninfo(((InetSocketAddress) session.getRemoteAddress()).getAddress().getHostAddress());
      TaskCenter.taskState.get(state.getUrlReq().getTask()).add(state);
      TaskCenter.taskCount.put(state.getUrlReq().getTask(),
          TaskCenter.taskCount.get(state.getUrlReq().getTask())-1);
     
      new LogDao().saveLogs(state);
    }
  }
}
TOP

Related Classes of com.zhangwoo.spider.server.TaskStateHandler

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.