mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-22 15:33:08 +00:00
adding envelope module
This commit is contained in:
parent
494018937d
commit
faad089d7d
79
waku/common/envelope.go
Normal file
79
waku/common/envelope.go
Normal file
@ -0,0 +1,79 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
||||
)
|
||||
|
||||
// Envelope contains information about the pubsub topic of a WakuMessage
|
||||
// and a hash used to identify a message based on the bytes of a WakuMessage
|
||||
// protobuffer
|
||||
type Envelope interface {
|
||||
Message() *pb.WakuMessage
|
||||
PubsubTopic() string
|
||||
Hash() pb.MessageHash
|
||||
}
|
||||
|
||||
type envelopeImpl struct {
|
||||
msg *pb.WakuMessage
|
||||
topic string
|
||||
hash pb.MessageHash
|
||||
}
|
||||
|
||||
type tmpWakuMessageJson struct {
|
||||
Payload []byte `json:"payload,omitempty"`
|
||||
ContentTopic string `json:"contentTopic,omitempty"`
|
||||
Version *uint32 `json:"version,omitempty"`
|
||||
Timestamp *int64 `json:"timestamp,omitempty"`
|
||||
Meta []byte `json:"meta,omitempty"`
|
||||
Ephemeral *bool `json:"ephemeral,omitempty"`
|
||||
RateLimitProof []byte `json:"proof,omitempty"`
|
||||
}
|
||||
|
||||
type tmpEnvelopeStruct struct {
|
||||
WakuMessage tmpWakuMessageJson `json:"wakuMessage"`
|
||||
PubsubTopic string `json:"pubsubTopic"`
|
||||
MessageHash string `json:"messageHash"`
|
||||
}
|
||||
|
||||
// NewEnvelope creates a new Envelope from a json string generated in nwaku
|
||||
func NewEnvelope(jsonEventStr string) (Envelope, error) {
|
||||
tmpEnvelopeStruct := tmpEnvelopeStruct{}
|
||||
err := json.Unmarshal([]byte(jsonEventStr), &tmpEnvelopeStruct)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
hash, err := hexutil.Decode(tmpEnvelopeStruct.MessageHash)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &envelopeImpl{
|
||||
msg: &pb.WakuMessage{
|
||||
Payload: tmpEnvelopeStruct.WakuMessage.Payload,
|
||||
ContentTopic: tmpEnvelopeStruct.WakuMessage.ContentTopic,
|
||||
Version: tmpEnvelopeStruct.WakuMessage.Version,
|
||||
Timestamp: tmpEnvelopeStruct.WakuMessage.Timestamp,
|
||||
Meta: tmpEnvelopeStruct.WakuMessage.Meta,
|
||||
Ephemeral: tmpEnvelopeStruct.WakuMessage.Ephemeral,
|
||||
RateLimitProof: tmpEnvelopeStruct.WakuMessage.RateLimitProof,
|
||||
},
|
||||
topic: tmpEnvelopeStruct.PubsubTopic,
|
||||
hash: pb.ToMessageHash(hash),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (e *envelopeImpl) Message() *pb.WakuMessage {
|
||||
return e.msg
|
||||
}
|
||||
|
||||
func (e *envelopeImpl) PubsubTopic() string {
|
||||
return e.topic
|
||||
}
|
||||
|
||||
func (e *envelopeImpl) Hash() pb.MessageHash {
|
||||
return e.hash
|
||||
}
|
||||
@ -322,6 +322,7 @@ import (
|
||||
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
||||
storepb "github.com/waku-org/go-waku/waku/v2/protocol/store/pb"
|
||||
"github.com/waku-org/go-waku/waku/v2/utils"
|
||||
"github.com/waku-org/waku-go-bindings/waku/common"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
@ -444,17 +445,12 @@ func GoCallback(ret C.int, msg *C.char, len C.size_t, resp unsafe.Pointer) {
|
||||
}
|
||||
}
|
||||
|
||||
type MessageData struct {
|
||||
Msg pb.WakuMessage
|
||||
PubsubTopic string
|
||||
}
|
||||
|
||||
// WakuNode represents an instance of an nwaku node
|
||||
type WakuNode struct {
|
||||
wakuCtx unsafe.Pointer
|
||||
logger *zap.Logger
|
||||
cancel context.CancelFunc
|
||||
MsgChan chan MessageData
|
||||
MsgChan chan common.Envelope
|
||||
}
|
||||
|
||||
func newWakuNode(ctx context.Context, config *WakuConfig, logger *zap.Logger) (*WakuNode, error) {
|
||||
@ -498,7 +494,7 @@ func newWakuNode(ctx context.Context, config *WakuConfig, logger *zap.Logger) (*
|
||||
|
||||
wg.Add(1)
|
||||
n.wakuCtx = C.cGoWakuNew(cJsonConfig, resp)
|
||||
n.MsgChan = make(chan MessageData, 100)
|
||||
n.MsgChan = make(chan common.Envelope, 100)
|
||||
n.logger = logger.Named("nwaku")
|
||||
wg.Wait()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user