github.com/number571/tendermint@v0.34.11-gost/proto/tendermint/p2p/pex.go (about)

     1  package p2p
     2  
     3  import (
     4  	fmt "fmt"
     5  
     6  	proto "github.com/gogo/protobuf/proto"
     7  )
     8  
     9  // Wrap implements the p2p Wrapper interface and wraps a PEX message.
    10  func (m *PexMessage) Wrap(pb proto.Message) error {
    11  	switch msg := pb.(type) {
    12  	case *PexRequest:
    13  		m.Sum = &PexMessage_PexRequest{PexRequest: msg}
    14  	case *PexResponse:
    15  		m.Sum = &PexMessage_PexResponse{PexResponse: msg}
    16  	case *PexRequestV2:
    17  		m.Sum = &PexMessage_PexRequestV2{PexRequestV2: msg}
    18  	case *PexResponseV2:
    19  		m.Sum = &PexMessage_PexResponseV2{PexResponseV2: msg}
    20  	default:
    21  		return fmt.Errorf("unknown pex message: %T", msg)
    22  	}
    23  	return nil
    24  }
    25  
    26  // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX
    27  // message.
    28  func (m *PexMessage) Unwrap() (proto.Message, error) {
    29  	switch msg := m.Sum.(type) {
    30  	case *PexMessage_PexRequest:
    31  		return msg.PexRequest, nil
    32  	case *PexMessage_PexResponse:
    33  		return msg.PexResponse, nil
    34  	case *PexMessage_PexRequestV2:
    35  		return msg.PexRequestV2, nil
    36  	case *PexMessage_PexResponseV2:
    37  		return msg.PexResponseV2, nil
    38  	default:
    39  		return nil, fmt.Errorf("unknown pex message: %T", msg)
    40  	}
    41  }