package com.alipay.bluewhale.core.task.heartbeat; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import com.alipay.bluewhale.core.stats.BaseStatsData; /** * task��zk���͵����� * timeSecs: д��������ʱ�� * uptimeSecs���������е�ʱ�� * stats�� �����״̬��emitted��transfered��complete latency/process latency��acked��failed�� * @author yannian * */ public class TaskHeartbeat implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer timeSecs; private Integer uptimeSecs; private BaseStatsData stats; // BoltTaskStats or SpoutTaskStats public TaskHeartbeat(int timeSecs, int uptimeSecs, BaseStatsData stats ){ this.timeSecs = timeSecs; this.uptimeSecs = uptimeSecs; this.stats = stats; } public int getTimeSecs() { return timeSecs; } @Override public String toString() { SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String yyyymmmddd=fmt.format(new Date(1000l*timeSecs)); StringBuffer buff=new StringBuffer(); buff.append("{"); buff.append("timeSecs:\""+yyyymmmddd+"\""); buff.append(","); buff.append("uptimeSecs:\""+uptimeSecs+"\""); buff.append(","); buff.append("nodeHost:"+stats.getTaskStats().toString()); buff.append("}"); return buff.toString(); } public void setTimeSecs(int timeSecs) { this.timeSecs = timeSecs; } public int getUptimeSecs() { return uptimeSecs; } public void setUptimeSecs(int uptimeSecs) { this.uptimeSecs = uptimeSecs; } public BaseStatsData getStats() { return stats; } public void setStats(BaseStatsData stats) { this.stats = stats; } @Override public boolean equals(Object hb){ if (hb instanceof TaskHeartbeat && ((TaskHeartbeat)hb).timeSecs.equals(timeSecs) && ((TaskHeartbeat)hb).uptimeSecs.equals(uptimeSecs) && ((TaskHeartbeat)hb).stats.equals(stats) ){ return true; } return false; } @Override public int hashCode() { return timeSecs.hashCode()+uptimeSecs.hashCode()+ stats.hashCode(); } }