Skip to content

Commit 792ed6f

Browse files
authored
Merge pull request #58 from LumeraProtocol/cascadeSupernodeCleanup
refactor and cleans up supernode code
2 parents d518183 + 0800dab commit 792ed6f

File tree

18 files changed

+635
-118
lines changed

18 files changed

+635
-118
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module github.com/LumeraProtocol/supernode
22

33
go 1.24.1
44

5+
replace "github.com/LumeraProtocol/supernode/supernode" => ./supernode
56
require (
67
cosmossdk.io/math v1.5.3
78
github.com/LumeraProtocol/lumera v0.4.5

pkg/logtrace/fields.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ const (
1616
FieldRequest = "request"
1717
FieldStackTrace = "stack_trace"
1818
FieldTxHash = "tx_hash"
19+
FieldTaskID = "task_id"
20+
FieldActionID = "action_id"
1921
)

supernode/node/action/server/cascade/cascade_action_server.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ import (
1111
"google.golang.org/grpc"
1212
)
1313

14-
type CascadeActionServer struct {
14+
type ActionServer struct {
1515
pb.UnimplementedCascadeServiceServer
16-
service *cascadeService.CascadeService
16+
factory cascadeService.TaskFactory
1717
}
1818

19-
func NewCascadeActionServer(service *cascadeService.CascadeService) *CascadeActionServer {
20-
return &CascadeActionServer{
21-
service: service,
22-
}
19+
// NewCascadeActionServer creates a new CascadeActionServer with injected service
20+
func NewCascadeActionServer(factory cascadeService.TaskFactory) *ActionServer {
21+
return &ActionServer{factory: factory}
2322
}
2423

25-
func (server *CascadeActionServer) Desc() *grpc.ServiceDesc {
24+
func (server *ActionServer) Desc() *grpc.ServiceDesc {
2625
return &pb.CascadeService_ServiceDesc
2726
}
28-
func (server *CascadeActionServer) Register(stream pb.CascadeService_RegisterServer) error {
27+
28+
func (server *ActionServer) Register(stream pb.CascadeService_RegisterServer) error {
2929
fields := logtrace.Fields{
3030
logtrace.FieldMethod: "Register",
3131
logtrace.FieldModule: "CascadeActionServer",
@@ -77,9 +77,12 @@ func (server *CascadeActionServer) Register(stream pb.CascadeService_RegisterSer
7777
logtrace.Error(ctx, "no metadata received in stream", fields)
7878
return fmt.Errorf("no metadata received")
7979
}
80+
fields[logtrace.FieldTaskID] = metadata.GetTaskId()
81+
fields[logtrace.FieldActionID] = metadata.GetActionId()
82+
logtrace.Info(ctx, "metadata received from action-sdk", fields)
8083

8184
// Process the complete data
82-
task := server.service.NewCascadeRegistrationTask()
85+
task := server.factory.NewCascadeRegistrationTask()
8386
err := task.Register(ctx, &cascadeService.RegisterRequest{
8487
TaskID: metadata.TaskId,
8588
ActionID: metadata.ActionId,
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package adaptors
2+
3+
import (
4+
"context"
5+
actiontypes "github.com/LumeraProtocol/lumera/x/action/types"
6+
sntypes "github.com/LumeraProtocol/lumera/x/supernode/types"
7+
"github.com/LumeraProtocol/supernode/pkg/lumera"
8+
"github.com/LumeraProtocol/supernode/pkg/lumera/modules/action_msg"
9+
)
10+
11+
//go:generate mockgen -destination=mocks/lumera_mock.go -package=cascadeadaptormocks -source=lumera.go
12+
13+
// LumeraClient defines the interface for interacting with Lumera chain data during cascade registration.
14+
type LumeraClient interface {
15+
// SupernodeModule
16+
GetTopSupernodes(ctx context.Context, height uint64) (*sntypes.QueryGetTopSuperNodesForBlockResponse, error)
17+
18+
// Action Module
19+
GetAction(ctx context.Context, actionID string) (*actiontypes.QueryGetActionResponse, error)
20+
GetActionParams(ctx context.Context) (*actiontypes.QueryParamsResponse, error)
21+
FinalizeAction(ctx context.Context, actionID string, rqids []string) (*action_msg.FinalizeActionResult, error)
22+
23+
// Auth
24+
Verify(ctx context.Context, creator string, file []byte, sigBytes []byte) error
25+
}
26+
27+
// Client is the concrete implementation used in production.
28+
type Client struct {
29+
lc lumera.Client
30+
}
31+
32+
func NewLumeraClient(client lumera.Client) LumeraClient {
33+
return &Client{
34+
lc: client,
35+
}
36+
}
37+
38+
func (c *Client) GetAction(ctx context.Context, actionID string) (*actiontypes.QueryGetActionResponse, error) {
39+
return c.lc.Action().GetAction(ctx, actionID)
40+
}
41+
42+
func (c *Client) GetActionParams(ctx context.Context) (*actiontypes.QueryParamsResponse, error) {
43+
return c.lc.Action().GetParams(ctx)
44+
}
45+
46+
func (c *Client) FinalizeAction(ctx context.Context, actionID string, rqids []string) (*action_msg.FinalizeActionResult, error) {
47+
return c.lc.ActionMsg().FinalizeCascadeAction(ctx, actionID, rqids)
48+
}
49+
50+
func (c *Client) GetTopSupernodes(ctx context.Context, height uint64) (*sntypes.QueryGetTopSuperNodesForBlockResponse, error) {
51+
return c.lc.SuperNode().GetTopSuperNodesForBlock(ctx, height)
52+
}
53+
54+
func (c *Client) Verify(ctx context.Context, creator string, file []byte, sigBytes []byte) error {
55+
return c.lc.Auth().Verify(ctx, creator, file, sigBytes)
56+
}

supernode/services/cascade/adaptors/mocks/lumera_mock.go

Lines changed: 112 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

supernode/services/cascade/adaptors/mocks/p2p_mock.go

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

supernode/services/cascade/adaptors/mocks/rq_mock.go

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)