package p2p import ( "fmt" "github.com/gogo/protobuf/proto" ) // Wrap implements the p2p Wrapper interface and wraps a PEX message. func (m *PexMessage) Wrap(pb proto.Message) error { switch msg := pb.(type) { case *PexRequest: m.Sum = &PexMessage_PexRequest{PexRequest: msg} case *PexResponse: m.Sum = &PexMessage_PexResponse{PexResponse: msg} default: return fmt.Errorf("unknown pex message: %T", msg) } return nil } // Unwrap implements the p2p Wrapper interface and unwraps a wrapped PEX // message. func (m *PexMessage) Unwrap() (proto.Message, error) { switch msg := m.Sum.(type) { case *PexMessage_PexRequest: return msg.PexRequest, nil case *PexMessage_PexResponse: return msg.PexResponse, nil default: return nil, fmt.Errorf("unknown pex message: %T", msg) } }