//Process to send packets to other Servers. func processOutbox(server cluster.Server, sm *State_Machine, msg Send) { //broadcaste messagess. if msg.PeerId == 0 { switch msg.Event.(type) { case AppEntrReq: AppReq := msg.Event.(AppEntrReq) server.Outbox() <- &cluster.Envelope{Pid: cluster.BROADCAST, MsgId: 11, Msg: AppReq} case VoteReq: VotReq := msg.Event.(VoteReq) server.Outbox() <- &cluster.Envelope{Pid: cluster.BROADCAST, MsgId: 1, Msg: VotReq} } } else { //send to particular node. switch msg.Event.(type) { case AppEntrReq: AppReq := msg.Event.(AppEntrReq) server.Outbox() <- &cluster.Envelope{Pid: int(msg.PeerId), MsgId: 11, Msg: AppReq} case AppEntrResp: AppResp := msg.Event.(AppEntrResp) AppResp.Peer = int32(server.Pid()) server.Outbox() <- &cluster.Envelope{Pid: int(msg.PeerId), MsgId: 22, Msg: AppResp} case VoteResp: VotResp := msg.Event.(VoteResp) server.Outbox() <- &cluster.Envelope{Pid: int(msg.PeerId), MsgId: 2, Msg: VotResp} } } }