github.com/status-im/status-go@v1.1.0/eth-node/bridge/geth/envelope_event.go (about)

     1  package gethbridge
     2  
     3  import (
     4  	"github.com/status-im/status-go/eth-node/types"
     5  	"github.com/status-im/status-go/waku"
     6  
     7  	wakucommon "github.com/status-im/status-go/waku/common"
     8  	wakuv2common "github.com/status-im/status-go/wakuv2/common"
     9  )
    10  
    11  // NewWakuEnvelopeEventWrapper returns a types.EnvelopeEvent object that mimics Geth's EnvelopeEvent
    12  func NewWakuEnvelopeEventWrapper(envelopeEvent *wakucommon.EnvelopeEvent) *types.EnvelopeEvent {
    13  	if envelopeEvent == nil {
    14  		panic("envelopeEvent should not be nil")
    15  	}
    16  
    17  	wrappedData := envelopeEvent.Data
    18  	switch data := envelopeEvent.Data.(type) {
    19  	case []wakucommon.EnvelopeError:
    20  		wrappedData := make([]types.EnvelopeError, len(data))
    21  		for index := range data {
    22  			wrappedData[index] = *NewWakuEnvelopeErrorWrapper(&data[index])
    23  		}
    24  	case *waku.MailServerResponse:
    25  		wrappedData = NewWakuMailServerResponseWrapper(data)
    26  	}
    27  	return &types.EnvelopeEvent{
    28  		Event: types.EventType(envelopeEvent.Event),
    29  		Hash:  types.Hash(envelopeEvent.Hash),
    30  		Batch: types.Hash(envelopeEvent.Batch),
    31  		Peer:  types.EnodeID(envelopeEvent.Peer),
    32  		Data:  wrappedData,
    33  	}
    34  }
    35  
    36  // NewWakuV2EnvelopeEventWrapper returns a types.EnvelopeEvent object that mimics Geth's EnvelopeEvent
    37  func NewWakuV2EnvelopeEventWrapper(envelopeEvent *wakuv2common.EnvelopeEvent) *types.EnvelopeEvent {
    38  	if envelopeEvent == nil {
    39  		panic("envelopeEvent should not be nil")
    40  	}
    41  
    42  	wrappedData := envelopeEvent.Data
    43  	switch data := envelopeEvent.Data.(type) {
    44  	case []wakuv2common.EnvelopeError:
    45  		wrappedData := make([]types.EnvelopeError, len(data))
    46  		for index := range data {
    47  			wrappedData[index] = *NewWakuV2EnvelopeErrorWrapper(&data[index])
    48  		}
    49  	}
    50  	return &types.EnvelopeEvent{
    51  		Event: types.EventType(envelopeEvent.Event),
    52  		Hash:  types.Hash(envelopeEvent.Hash),
    53  		Batch: types.Hash(envelopeEvent.Batch),
    54  		Peer:  types.EnodeID(envelopeEvent.Peer),
    55  		Data:  wrappedData,
    56  	}
    57  }