github.com/badrootd/celestia-core@v0.0.0-20240305091328-aa4207a4b25d/proto/tendermint/mempool/message.go (about) 1 package mempool 2 3 import ( 4 "fmt" 5 6 "github.com/badrootd/celestia-core/p2p" 7 "github.com/gogo/protobuf/proto" 8 ) 9 10 var ( 11 _ p2p.Wrapper = &Txs{} 12 _ p2p.Wrapper = &SeenTx{} 13 _ p2p.Wrapper = &WantTx{} 14 _ p2p.Unwrapper = &Message{} 15 ) 16 17 // Wrap implements the p2p Wrapper interface and wraps a mempool message. 18 func (m *Txs) Wrap() proto.Message { 19 mm := &Message{} 20 mm.Sum = &Message_Txs{Txs: m} 21 return mm 22 } 23 24 // Wrap implements the p2p Wrapper interface and wraps a mempool seen tx message. 25 func (m *SeenTx) Wrap() proto.Message { 26 mm := &Message{} 27 mm.Sum = &Message_SeenTx{SeenTx: m} 28 return mm 29 } 30 31 // Wrap implements the p2p Wrapper interface and wraps a mempool want tx message. 32 func (m *WantTx) Wrap() proto.Message { 33 mm := &Message{} 34 mm.Sum = &Message_WantTx{WantTx: m} 35 return mm 36 } 37 38 // Unwrap implements the p2p Wrapper interface and unwraps a wrapped mempool 39 // message. 40 func (m *Message) Unwrap() (proto.Message, error) { 41 switch msg := m.Sum.(type) { 42 case *Message_Txs: 43 return m.GetTxs(), nil 44 45 case *Message_SeenTx: 46 return m.GetSeenTx(), nil 47 48 case *Message_WantTx: 49 return m.GetWantTx(), nil 50 51 default: 52 return nil, fmt.Errorf("unknown message: %T", msg) 53 } 54 }