Package com.dianping.cat.agent.monitor.paas

Source Code of com.dianping.cat.agent.monitor.paas.PaasTask

package com.dianping.cat.agent.monitor.paas;

import java.util.List;

import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.helper.Threads;
import org.unidal.helper.Threads.Task;
import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.Cat;
import com.dianping.cat.agent.monitor.DataEntity;
import com.dianping.cat.agent.monitor.DataSender;
import com.dianping.cat.message.Transaction;

public class PaasTask implements Task, Initializable {

  @Inject
  private DataSender m_dataSender;

  @Inject
  private DataBuilder m_dataBuilder;

  private static final int DURATION = 5 * 1000;

  @Override
  public String getName() {
    return "paas-task";
  }

  @Override
  public void initialize() throws InitializationException {
    String agent = System.getProperty("agent", "executors");

    if ("paas".equalsIgnoreCase(agent)) {
      Threads.forGroup("cat").start(this);
    }
  }

  @Override
  public void run() {
    boolean active = true;

    while (active) {
      long current = System.currentTimeMillis();
      Transaction t = Cat.newTransaction("Agent", "Paas");

      try {
        List<String> instances = m_dataBuilder.queryInstances();
        for (String instance : instances) {
          List<DataEntity> entities = m_dataBuilder.buildData(instance);

          m_dataSender.put(entities);
        }
        t.setStatus(Transaction.SUCCESS);
      } catch (Exception e) {
        t.setStatus(e);
        Cat.logError(e);
      } finally {
        t.complete();
      }

      long duration = System.currentTimeMillis() - current;

      try {
        if (duration < DURATION) {
          Thread.sleep(DURATION - duration);
        }
      } catch (InterruptedException e) {
        active = false;
      }
    }
  }

  @Override
  public void shutdown() {

  }

}
TOP

Related Classes of com.dianping.cat.agent.monitor.paas.PaasTask

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.