status-im/status-go

View on GitHub
eth-node/bridge/geth/envelope_event.go

Summary

Maintainability
A
0 mins
Test Coverage
D
63%
package gethbridge

import (
    "github.com/status-im/status-go/eth-node/types"
    "github.com/status-im/status-go/waku"
    "github.com/status-im/status-go/wakuv2"

    wakucommon "github.com/status-im/status-go/waku/common"
    wakuv2common "github.com/status-im/status-go/wakuv2/common"
)

// NewWakuEnvelopeEventWrapper returns a types.EnvelopeEvent object that mimics Geth's EnvelopeEvent
func NewWakuEnvelopeEventWrapper(envelopeEvent *wakucommon.EnvelopeEvent) *types.EnvelopeEvent {
    if envelopeEvent == nil {
        panic("envelopeEvent should not be nil")
    }

    wrappedData := envelopeEvent.Data
    switch data := envelopeEvent.Data.(type) {
    case []wakucommon.EnvelopeError:
        wrappedData := make([]types.EnvelopeError, len(data))
        for index := range data {
            wrappedData[index] = *NewWakuEnvelopeErrorWrapper(&data[index])
        }
    case *waku.MailServerResponse:
        wrappedData = NewWakuMailServerResponseWrapper(data)
    }
    return &types.EnvelopeEvent{
        Event: types.EventType(envelopeEvent.Event),
        Hash:  types.Hash(envelopeEvent.Hash),
        Batch: types.Hash(envelopeEvent.Batch),
        Peer:  types.EnodeID(envelopeEvent.Peer),
        Data:  wrappedData,
    }
}

// NewWakuV2EnvelopeEventWrapper returns a types.EnvelopeEvent object that mimics Geth's EnvelopeEvent
func NewWakuV2EnvelopeEventWrapper(envelopeEvent *wakuv2common.EnvelopeEvent) *types.EnvelopeEvent {
    if envelopeEvent == nil {
        panic("envelopeEvent should not be nil")
    }

    wrappedData := envelopeEvent.Data
    switch data := envelopeEvent.Data.(type) {
    case []wakuv2common.EnvelopeError:
        wrappedData := make([]types.EnvelopeError, len(data))
        for index := range data {
            wrappedData[index] = *NewWakuV2EnvelopeErrorWrapper(&data[index])
        }
    case *wakuv2.MailServerResponse:
        wrappedData = NewWakuV2MailServerResponseWrapper(data)
    }
    return &types.EnvelopeEvent{
        Event: types.EventType(envelopeEvent.Event),
        Hash:  types.Hash(envelopeEvent.Hash),
        Batch: types.Hash(envelopeEvent.Batch),
        Peer:  types.EnodeID(envelopeEvent.Peer),
        Data:  wrappedData,
    }
}