github.com/elastos/Elastos.ELA.SideChain.ETH@v0.2.2/chainbridge-core/dpos_msg/requirearbiter.go (about) 1 package dpos_msg 2 3 import ( 4 "io" 5 6 "github.com/elastos/Elastos.ELA/common" 7 "github.com/elastos/Elastos.ELA/p2p" 8 ) 9 10 // Ensure RequireArbiter implement p2p.Message interface. 11 var _ p2p.Message = (*RequireArbiter)(nil) 12 13 type RequireArbiter struct { 14 PID [33]byte 15 IsCurrent bool 16 } 17 18 func (msg *RequireArbiter) CMD() string { 19 return CmdRequireArbiters 20 } 21 22 func (msg *RequireArbiter) MaxLength() uint32 { 23 return 35 24 } 25 26 func (msg *RequireArbiter) Serialize(w io.Writer) error { 27 _, err := w.Write(msg.PID[:]) 28 if err != nil { 29 return err 30 } 31 if msg.IsCurrent == true { 32 err = common.WriteUint8(w, 1) 33 } else { 34 err = common.WriteUint8(w, 0) 35 } 36 return err 37 } 38 39 func (msg *RequireArbiter) Deserialize(r io.Reader) error { 40 pid := make([]byte, 33) 41 _, err := r.Read(pid) 42 if err != nil { 43 return err 44 } 45 copy(msg.PID[:], pid) 46 47 res, err := common.ReadUint8(r) 48 if err != nil { 49 return err 50 } 51 if res == 1 { 52 msg.IsCurrent = true 53 } else { 54 msg.IsCurrent = false 55 } 56 return nil 57 }