package com.taobao.zeus.socket.master.reqresp;
import java.util.Date;
import org.jboss.netty.channel.Channel;
import com.google.protobuf.InvalidProtocolBufferException;
import com.taobao.zeus.socket.master.MasterContext;
import com.taobao.zeus.socket.master.MasterWorkerHolder;
import com.taobao.zeus.socket.master.MasterWorkerHolder.HeartBeatInfo;
import com.taobao.zeus.socket.protocol.Protocol.HeartBeatMessage;
import com.taobao.zeus.socket.protocol.Protocol.Request;
public class MasterBeHeartBeat {
public void beHeartBeat(MasterContext context,Channel channel,Request request) {
MasterWorkerHolder worker=context.getWorkers().get(channel);
HeartBeatInfo newbeat=worker.new HeartBeatInfo();
HeartBeatMessage hbm;
try {
hbm = HeartBeatMessage.newBuilder().mergeFrom(request.getBody()).build();
newbeat.memRate=hbm.getMemRate();
newbeat.runnings=hbm.getRunningsList();
newbeat.debugRunnings=hbm.getDebugRunningsList();
newbeat.manualRunnings=hbm.getManualRunningsList();
newbeat.timestamp=new Date(hbm.getTimestamp());
if(worker.heart==null || newbeat.timestamp.getTime()>worker.heart.timestamp.getTime()){
worker.heart=newbeat;
}
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}