Example #1
0
func (s *Slave) PullSignal(msg *message.Message, reply *message.Reply) (err error) {
	Log.Print("PullSignal")
	if msg.Action == message.NEXTSTEP {
		ns := msg.UnmarshalToNextstep()
		MasterHost = ns.Host
		Log.Print(MasterHost, " ", ns.Step)
		go s.processor.Run(ns.Step, s.MessageContainer)
		// reply = &message.Reply{
		// Value: nil,
		// State: 200,
		// }
		reply.State = 200
		reply.Value = nil
	}
	if msg.Action == message.SYNC {
		//active nodes
		//vote to active
		Log.Print("SYNC REQUEST")
		s.MessageContainer.Nextstep()

		net := s.Net
		for k, _ := range s.MessageContainer.CurMsgMap {
			Log.Print(k.String())
			index, _ := k.Unmarshal()
			net.GetNodeByIndex(index).VoteToActive()
		}
		size, _ := s.MessageContainer.Size()
		// reply = &message.Reply{
		// 	Value: size,
		// 	State: 200,
		// }
		reply.State = 200
		reply.Value, _ = json.Marshal(size)
	}
	return nil
}