github.com/vipernet-xyz/tm@v0.34.24/proto/tendermint/statesync/message.go (about)

     1  package statesync
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/gogo/protobuf/proto"
     7  	"github.com/vipernet-xyz/tm/p2p"
     8  )
     9  
    10  var _ p2p.Wrapper = &ChunkRequest{}
    11  var _ p2p.Wrapper = &ChunkResponse{}
    12  var _ p2p.Wrapper = &SnapshotsRequest{}
    13  var _ p2p.Wrapper = &SnapshotsResponse{}
    14  
    15  func (m *SnapshotsResponse) Wrap() proto.Message {
    16  	sm := &Message{}
    17  	sm.Sum = &Message_SnapshotsResponse{SnapshotsResponse: m}
    18  	return sm
    19  }
    20  
    21  func (m *SnapshotsRequest) Wrap() proto.Message {
    22  	sm := &Message{}
    23  	sm.Sum = &Message_SnapshotsRequest{SnapshotsRequest: m}
    24  	return sm
    25  }
    26  
    27  func (m *ChunkResponse) Wrap() proto.Message {
    28  	sm := &Message{}
    29  	sm.Sum = &Message_ChunkResponse{ChunkResponse: m}
    30  	return sm
    31  }
    32  
    33  func (m *ChunkRequest) Wrap() proto.Message {
    34  	sm := &Message{}
    35  	sm.Sum = &Message_ChunkRequest{ChunkRequest: m}
    36  	return sm
    37  }
    38  
    39  // Unwrap implements the p2p Wrapper interface and unwraps a wrapped state sync
    40  // proto message.
    41  func (m *Message) Unwrap() (proto.Message, error) {
    42  	switch msg := m.Sum.(type) {
    43  	case *Message_ChunkRequest:
    44  		return m.GetChunkRequest(), nil
    45  
    46  	case *Message_ChunkResponse:
    47  		return m.GetChunkResponse(), nil
    48  
    49  	case *Message_SnapshotsRequest:
    50  		return m.GetSnapshotsRequest(), nil
    51  
    52  	case *Message_SnapshotsResponse:
    53  		return m.GetSnapshotsResponse(), nil
    54  
    55  	default:
    56  		return nil, fmt.Errorf("unknown message: %T", msg)
    57  	}
    58  }