github.com/Oyster-zx/tendermint@v0.34.24-fork/proto/tendermint/p2p/pex.go (about)

     1  package p2p
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gogo/protobuf/proto"
     7  )
     8  
     9  func (m *PexAddrs) Wrap() proto.Message {
    10  	pm := &Message{}
    11  	pm.Sum = &Message_PexAddrs{PexAddrs: m}
    12  	return pm
    13  }
    14  
    15  func (m *PexRequest) Wrap() proto.Message {
    16  	pm := &Message{}
    17  	pm.Sum = &Message_PexRequest{PexRequest: m}
    18  	return pm
    19  }
    20  
    21  // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX
    22  // message.
    23  func (m *Message) Unwrap() (proto.Message, error) {
    24  	switch msg := m.Sum.(type) {
    25  	case *Message_PexRequest:
    26  		return msg.PexRequest, nil
    27  	case *Message_PexAddrs:
    28  		return msg.PexAddrs, nil
    29  	default:
    30  		return nil, fmt.Errorf("unknown pex message: %T", msg)
    31  	}
    32  }