mirror of
https://github.com/luxfi/evm.git
synced 2026-09-24 00:27:44 +00:00
70 lines
2.6 KiB
Go
70 lines
2.6 KiB
Go
// Copyright (C) 2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package network
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/luxfi/ids"
|
|
"github.com/luxfi/node/v2/quasar/engine/core"
|
|
"github.com/luxfi/node/v2/quasar/engine/core/appsender"
|
|
"github.com/luxfi/node/v2/utils/set"
|
|
)
|
|
|
|
// appSenderAdapter adapts core.AppSender to appsender.AppSender
|
|
type appSenderAdapter struct {
|
|
sender core.AppSender
|
|
}
|
|
|
|
// NewAppSenderAdapter creates a new adapter
|
|
func NewAppSenderAdapter(sender core.AppSender) appsender.AppSender {
|
|
return &appSenderAdapter{sender: sender}
|
|
}
|
|
|
|
// SendAppRequest implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendAppRequest(ctx context.Context, nodeIDs set.Set[ids.NodeID], requestID uint32, request []byte) error {
|
|
// Convert set to slice
|
|
nodes := make([]ids.NodeID, 0, nodeIDs.Len())
|
|
for nodeID := range nodeIDs {
|
|
nodes = append(nodes, nodeID)
|
|
}
|
|
return a.sender.SendAppRequest(ctx, nodes, requestID, request)
|
|
}
|
|
|
|
// SendAppResponse implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendAppResponse(ctx context.Context, nodeID ids.NodeID, requestID uint32, response []byte) error {
|
|
return a.sender.SendAppResponse(ctx, nodeID, requestID, response)
|
|
}
|
|
|
|
// SendAppGossip implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendAppGossip(ctx context.Context, config appsender.SendConfig, gossip []byte) error {
|
|
// For now, ignore the config and just send the gossip
|
|
return a.sender.SendAppGossip(ctx, gossip)
|
|
}
|
|
|
|
// SendAppError implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendAppError(ctx context.Context, nodeID ids.NodeID, requestID uint32, errorCode int32, errorMessage string) error {
|
|
return a.sender.SendAppError(ctx, nodeID, requestID, errorCode, errorMessage)
|
|
}
|
|
|
|
// SendCrossChainAppRequest implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendCrossChainAppRequest(ctx context.Context, chainID ids.ID, requestID uint32, request []byte) error {
|
|
return a.sender.SendCrossChainAppRequest(ctx, chainID, requestID, request)
|
|
}
|
|
|
|
// SendCrossChainAppResponse implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendCrossChainAppResponse(ctx context.Context, chainID ids.ID, requestID uint32, response []byte) error {
|
|
return a.sender.SendCrossChainAppResponse(ctx, chainID, requestID, response)
|
|
}
|
|
|
|
// SendAppGossipSpecific implements appsender.AppSender
|
|
func (a *appSenderAdapter) SendAppGossipSpecific(ctx context.Context, nodeIDs set.Set[ids.NodeID], gossip []byte) error {
|
|
// Convert set to slice and send to each node
|
|
for range nodeIDs {
|
|
if err := a.sender.SendAppGossip(ctx, gossip); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
} |