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  }