From 85685fa45c72f7859b38e11aee9f50cf599e5aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Breda?= Date: Thu, 24 Aug 2023 19:13:16 +0100 Subject: [PATCH 1/4] threshcrypto: Remove handcrafted DSL An automatically-generated DSL exists and works. No need to maintain this one. --- pkg/threshcrypto/dsl/dsl.go | 174 ------------------------------------ 1 file changed, 174 deletions(-) delete mode 100644 pkg/threshcrypto/dsl/dsl.go diff --git a/pkg/threshcrypto/dsl/dsl.go b/pkg/threshcrypto/dsl/dsl.go deleted file mode 100644 index f4f9e15d7..000000000 --- a/pkg/threshcrypto/dsl/dsl.go +++ /dev/null @@ -1,174 +0,0 @@ -package dsl - -import ( - "github.com/filecoin-project/mir/pkg/dsl" - "github.com/filecoin-project/mir/pkg/pb/dslpb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - pb "github.com/filecoin-project/mir/pkg/pb/threshcryptopb" - - tce "github.com/filecoin-project/mir/pkg/threshcrypto/events" - t "github.com/filecoin-project/mir/pkg/types" -) - -// DSL functions for emitting events. - -// SignShare emits a request event to (threshold-)sign the given message. -// The response should be processed using UponSignShareResult with the same context type C. -// C can be an arbitrary type and does not have to be serializable. -func SignShare[C any](m dsl.Module, dest t.ModuleID, data [][]byte, context *C) { - contextID := m.DslHandle().StoreContext(context) - - origin := &pb.SignShareOrigin{ - Module: m.ModuleID().Pb(), - Type: &pb.SignShareOrigin_Dsl{ - Dsl: &dslpb.Origin{ - ContextID: contextID.Pb(), - }, - }, - } - - dsl.EmitEvent(m, tce.SignShare(dest, data, origin)) -} - -// VerifyShare emits a signature share verification request event. -// The response should be processed using UponVerifyShareResult with the same context type C. -// C can be an arbitrary type and does not have to be serializable. -func VerifyShare[C any](m dsl.Module, dest t.ModuleID, data [][]byte, sigShare []byte, nodeID t.NodeID, context *C) { - contextID := m.DslHandle().StoreContext(context) - - origin := &pb.VerifyShareOrigin{ - Module: m.ModuleID().Pb(), - Type: &pb.VerifyShareOrigin_Dsl{ - Dsl: &dslpb.Origin{ - ContextID: contextID.Pb(), - }, - }, - } - - dsl.EmitEvent(m, tce.VerifyShare(dest, data, sigShare, nodeID, origin)) -} - -// VerifyFull emits a (full) (threshold) signature verification request event. -// The response should be processed using UponVerifyFullResult with the same context type C. -// C can be an arbitrary type and does not have to be serializable. -func VerifyFull[C any](m dsl.Module, dest t.ModuleID, data [][]byte, sigFull []byte, context *C) { - contextID := m.DslHandle().StoreContext(context) - - origin := &pb.VerifyFullOrigin{ - Module: m.ModuleID().Pb(), - Type: &pb.VerifyFullOrigin_Dsl{ - Dsl: &dslpb.Origin{ - ContextID: contextID.Pb(), - }, - }, - } - - dsl.EmitEvent(m, tce.VerifyFull(dest, data, sigFull, origin)) -} - -// Recover emits a signature recovery request event. -// The response should be processed using UponRecoverResult with the same context type C. -// C can be an arbitrary type and does not have to be serializable. -func Recover[C any](m dsl.Module, dest t.ModuleID, data [][]byte, sigShares [][]byte, context *C) { - contextID := m.DslHandle().StoreContext(context) - - origin := &pb.RecoverOrigin{ - Module: m.ModuleID().Pb(), - Type: &pb.RecoverOrigin_Dsl{ - Dsl: &dslpb.Origin{ - ContextID: contextID.Pb(), - }, - }, - } - - dsl.EmitEvent(m, tce.Recover(dest, data, sigShares, origin)) -} - -// DSL functions for processing events. - -// UponSignShareResult invokes handler when the module receives a response to -// a request made by SignShare with the same context type C. -func UponSignShareResult[C any](m dsl.Module, handler func(sigShare []byte, context *C) error) { - UponEvent[*pb.Event_SignShareResult](m, func(ev *pb.SignShareResult) error { - OriginWrapper, ok := ev.Origin.Type.(*pb.SignShareOrigin_Dsl) - if !ok { - return nil - } - - contextRaw := m.DslHandle().RecoverAndCleanupContext(dsl.ContextID(OriginWrapper.Dsl.ContextID)) - context, ok := contextRaw.(*C) - if !ok { - return nil - } - - return handler(ev.SignatureShare, context) - }) -} - -// UponVerifyShareResult invokes handler when the module receives a response to -// a request made by VerifyShare with the same context type C. -func UponVerifyShareResult[C any](m dsl.Module, handler func(ok bool, err string, context *C) error) { - UponEvent[*pb.Event_VerifyShareResult](m, func(ev *pb.VerifyShareResult) error { - OriginWrapper, ok := ev.Origin.Type.(*pb.VerifyShareOrigin_Dsl) - if !ok { - return nil - } - - contextRaw := m.DslHandle().RecoverAndCleanupContext(dsl.ContextID(OriginWrapper.Dsl.ContextID)) - context, ok := contextRaw.(*C) - if !ok { - return nil - } - - return handler(ev.Ok, ev.Error, context) - }) -} - -// UponVerifyFullResult invokes handler when the module receives a response to -// a request made by VerifyFull with the same context type C. -func UponVerifyFullResult[C any](m dsl.Module, handler func(ok bool, err string, context *C) error) { - UponEvent[*pb.Event_VerifyFullResult](m, func(ev *pb.VerifyFullResult) error { - OriginWrapper, ok := ev.Origin.Type.(*pb.VerifyFullOrigin_Dsl) - if !ok { - return nil - } - - contextRaw := m.DslHandle().RecoverAndCleanupContext(dsl.ContextID(OriginWrapper.Dsl.ContextID)) - context, ok := contextRaw.(*C) - if !ok { - return nil - } - - return handler(ev.Ok, ev.Error, context) - }) -} - -// UponRecoverResult invokes handler when the module receives a response to a request made by Recover -// with the same context type C. -func UponRecoverResult[C any](m dsl.Module, handler func(ok bool, fullSig []byte, err string, context *C) error) { - UponEvent[*pb.Event_RecoverResult](m, func(ev *pb.RecoverResult) error { - OriginWrapper, ok := ev.Origin.Type.(*pb.RecoverOrigin_Dsl) - if !ok { - return nil - } - - contextRaw := m.DslHandle().RecoverAndCleanupContext(dsl.ContextID(OriginWrapper.Dsl.ContextID)) - context, ok := contextRaw.(*C) - if !ok { - return nil - } - - return handler(ev.Ok, ev.FullSignature, ev.Error, context) - }) -} - -// UponEvent registers a handler for the given threshcrypto event type. -func UponEvent[EvWrapper pb.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponEvent[*eventpb.Event_ThreshCrypto](m, func(ev *pb.Event) error { - evWrapper, ok := ev.Type.(EvWrapper) - if !ok { - return nil - } - return handler(evWrapper.Unwrap()) - }) -} From a90db9ffe539aeab3c8174fe4b4e24efdb7cd5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Breda?= Date: Thu, 24 Aug 2023 19:19:24 +0100 Subject: [PATCH 2/4] chore: make generate && make format --- .../internal/mock_internal/impl.mock.go | 3 ++- pkg/net/grpc/grpctransport.pb.go | 12 ++++++----- pkg/net/grpc/grpctransport_grpc.pb.go | 16 +++++++++++++- pkg/pb/apppb/apppb.pb.go | 15 +++++++------ pkg/pb/availabilitypb/availabilitypb.pb.go | 19 +++++++++++------ .../availabilitypb/batchdbpb/batchdbpb.pb.go | 17 +++++++++------ pkg/pb/availabilitypb/mscpb/mscpb.pb.go | 15 +++++++------ pkg/pb/batchfetcherpb/batchfetcherpb.pb.go | 15 +++++++------ pkg/pb/bcbpb/bcbpb.pb.go | 16 ++++++++------ pkg/pb/checkpointpb/checkpointpb.pb.go | 16 ++++++++------ .../chkpvalidatorpb/chkpvalidatorpb.pb.go | 16 ++++++++------ pkg/pb/contextstorepb/contextstorepb.pb.go | 12 ++++++----- pkg/pb/cryptopb/cryptopb.pb.go | 17 +++++++++------ pkg/pb/dslpb/dslpb.pb.go | 12 ++++++----- pkg/pb/eventpb/eventpb.pb.go | 21 ++++++++++++------- pkg/pb/eventpb/oneof_interfaces.mir.go | 3 ++- pkg/pb/eventpb/types/types.mir.go | 3 ++- pkg/pb/factorypb/factorypb.pb.go | 16 ++++++++------ pkg/pb/hasherpb/hasherpb.pb.go | 16 ++++++++------ pkg/pb/isspb/isspb.pb.go | 16 ++++++++------ pkg/pb/mempoolpb/mempoolpb.pb.go | 19 +++++++++++------ pkg/pb/messagepb/messagepb.pb.go | 15 +++++++------ pkg/pb/mir/codegen_extensions.pb.go | 7 ++++--- pkg/pb/net/codegen_extensions.pb.go | 7 ++++--- pkg/pb/ordererpb/ordererpb.pb.go | 16 ++++++++------ .../pprepvalidatorpb/pprepvalidatorpb.pb.go | 16 ++++++++------ pkg/pb/pbftpb/pbftpb.pb.go | 16 ++++++++------ pkg/pb/pingpongpb/pingpongpb.pb.go | 16 ++++++++------ pkg/pb/recordingpb/recordingpb.pb.go | 12 ++++++----- pkg/pb/testerpb/testerpb.pb.go | 12 ++++++----- pkg/pb/threshcryptopb/threshcryptopb.pb.go | 19 +++++++++++------ pkg/pb/transportpb/transportpb.pb.go | 15 +++++++------ pkg/pb/trantorpb/trantorpb.pb.go | 12 ++++++----- .../transactionreceiver.pb.go | 12 ++++++----- .../transactionreceiver_grpc.pb.go | 19 +++++++++++++++-- 35 files changed, 314 insertions(+), 175 deletions(-) diff --git a/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go b/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go index 273734019..1ceedfc10 100644 --- a/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go +++ b/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go @@ -7,9 +7,10 @@ package mock_internal import ( reflect "reflect" + gomock "github.com/golang/mock/gomock" + events "github.com/filecoin-project/mir/pkg/events" eventpb "github.com/filecoin-project/mir/pkg/pb/eventpb" - gomock "github.com/golang/mock/gomock" ) // MockModuleImpl is a mock of ModuleImpl interface. diff --git a/pkg/net/grpc/grpctransport.pb.go b/pkg/net/grpc/grpctransport.pb.go index 4d1221563..0d0edbc87 100644 --- a/pkg/net/grpc/grpctransport.pb.go +++ b/pkg/net/grpc/grpctransport.pb.go @@ -5,18 +5,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: net/grpc/grpctransport.proto package grpc import ( - messagepb "github.com/filecoin-project/mir/pkg/pb/messagepb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + messagepb "github.com/filecoin-project/mir/pkg/pb/messagepb" ) const ( diff --git a/pkg/net/grpc/grpctransport_grpc.pb.go b/pkg/net/grpc/grpctransport_grpc.pb.go index ba59dbbbe..6fc34fe99 100644 --- a/pkg/net/grpc/grpctransport_grpc.pb.go +++ b/pkg/net/grpc/grpctransport_grpc.pb.go @@ -1,9 +1,19 @@ +// +//Copyright IBM Corp. All Rights Reserved. +// +//SPDX-License-Identifier: Apache-2.0 + // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.21.12 +// source: net/grpc/grpctransport.proto package grpc import ( context "context" + grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -14,6 +24,10 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + GrpcTransport_Listen_FullMethodName = "/grpctransport.GrpcTransport/Listen" +) + // GrpcTransportClient is the client API for GrpcTransport service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -30,7 +44,7 @@ func NewGrpcTransportClient(cc grpc.ClientConnInterface) GrpcTransportClient { } func (c *grpcTransportClient) Listen(ctx context.Context, opts ...grpc.CallOption) (GrpcTransport_ListenClient, error) { - stream, err := c.cc.NewStream(ctx, &GrpcTransport_ServiceDesc.Streams[0], "/grpctransport.GrpcTransport/Listen", opts...) + stream, err := c.cc.NewStream(ctx, &GrpcTransport_ServiceDesc.Streams[0], GrpcTransport_Listen_FullMethodName, opts...) if err != nil { return nil, err } diff --git a/pkg/pb/apppb/apppb.pb.go b/pkg/pb/apppb/apppb.pb.go index e06601992..de006d60d 100644 --- a/pkg/pb/apppb/apppb.pb.go +++ b/pkg/pb/apppb/apppb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: apppb/apppb.proto package apppb import ( - checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( @@ -28,6 +30,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_SnapshotRequest // *Event_Snapshot // *Event_RestoreState diff --git a/pkg/pb/availabilitypb/availabilitypb.pb.go b/pkg/pb/availabilitypb/availabilitypb.pb.go index 28985f452..331ee7869 100644 --- a/pkg/pb/availabilitypb/availabilitypb.pb.go +++ b/pkg/pb/availabilitypb/availabilitypb.pb.go @@ -1,21 +1,23 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: availabilitypb/availabilitypb.proto package availabilitypb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + mscpb "github.com/filecoin-project/mir/pkg/pb/availabilitypb/mscpb" contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -31,6 +33,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_RequestCert // *Event_NewCert // *Event_VerifyCert @@ -521,6 +524,7 @@ type RequestCertOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestCertOrigin_ContextStore // *RequestCertOrigin_Dsl Type isRequestCertOrigin_Type `protobuf_oneof:"type"` @@ -609,6 +613,7 @@ type RequestTransactionsOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestTransactionsOrigin_ContextStore // *RequestTransactionsOrigin_Dsl Type isRequestTransactionsOrigin_Type `protobuf_oneof:"type"` @@ -697,6 +702,7 @@ type VerifyCertOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *VerifyCertOrigin_ContextStore // *VerifyCertOrigin_Dsl Type isVerifyCertOrigin_Type `protobuf_oneof:"type"` @@ -784,6 +790,7 @@ type Cert struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Cert_Mscs Type isCert_Type `protobuf_oneof:"type"` } diff --git a/pkg/pb/availabilitypb/batchdbpb/batchdbpb.pb.go b/pkg/pb/availabilitypb/batchdbpb/batchdbpb.pb.go index 1aeb34ad7..190c0431e 100644 --- a/pkg/pb/availabilitypb/batchdbpb/batchdbpb.pb.go +++ b/pkg/pb/availabilitypb/batchdbpb/batchdbpb.pb.go @@ -1,20 +1,22 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: availabilitypb/batchdbpb/batchdbpb.proto package batchdbpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -30,6 +32,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_Lookup // *Event_LookupResponse // *Event_Store @@ -440,6 +443,7 @@ type LookupBatchOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *LookupBatchOrigin_ContextStore // *LookupBatchOrigin_Dsl Type isLookupBatchOrigin_Type `protobuf_oneof:"Type"` @@ -528,6 +532,7 @@ type StoreBatchOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *StoreBatchOrigin_ContextStore // *StoreBatchOrigin_Dsl Type isStoreBatchOrigin_Type `protobuf_oneof:"Type"` diff --git a/pkg/pb/availabilitypb/mscpb/mscpb.pb.go b/pkg/pb/availabilitypb/mscpb/mscpb.pb.go index b12d59ada..8309dc0a8 100644 --- a/pkg/pb/availabilitypb/mscpb/mscpb.pb.go +++ b/pkg/pb/availabilitypb/mscpb/mscpb.pb.go @@ -1,19 +1,21 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: availabilitypb/mscpb/mscpb.proto package mscpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "github.com/filecoin-project/mir/pkg/pb/mir" _ "github.com/filecoin-project/mir/pkg/pb/net" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -29,6 +31,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_RequestSig // *Message_Sig // *Message_RequestBatch diff --git a/pkg/pb/batchfetcherpb/batchfetcherpb.pb.go b/pkg/pb/batchfetcherpb/batchfetcherpb.pb.go index f67eaeecf..8fdc53860 100644 --- a/pkg/pb/batchfetcherpb/batchfetcherpb.pb.go +++ b/pkg/pb/batchfetcherpb/batchfetcherpb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: batchfetcherpb/batchfetcherpb.proto package batchfetcherpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" + trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" ) const ( @@ -28,6 +30,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_NewOrderedBatch // *Event_ClientProgress Type isEvent_Type `protobuf_oneof:"Type"` diff --git a/pkg/pb/bcbpb/bcbpb.pb.go b/pkg/pb/bcbpb/bcbpb.pb.go index 67620e1e8..1338e4df7 100644 --- a/pkg/pb/bcbpb/bcbpb.pb.go +++ b/pkg/pb/bcbpb/bcbpb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: bcbpb/bcbpb.proto package bcbpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - _ "github.com/filecoin-project/mir/pkg/pb/net" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" + _ "github.com/filecoin-project/mir/pkg/pb/net" ) const ( @@ -28,6 +30,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_Request // *Event_Deliver Type isEvent_Type `protobuf_oneof:"type"` @@ -202,6 +205,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_StartMessage // *Message_EchoMessage // *Message_FinalMessage diff --git a/pkg/pb/checkpointpb/checkpointpb.pb.go b/pkg/pb/checkpointpb/checkpointpb.pb.go index c3e6da9de..abef2664e 100644 --- a/pkg/pb/checkpointpb/checkpointpb.pb.go +++ b/pkg/pb/checkpointpb/checkpointpb.pb.go @@ -1,19 +1,21 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: checkpointpb/checkpointpb.proto package checkpointpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "github.com/filecoin-project/mir/pkg/pb/mir" _ "github.com/filecoin-project/mir/pkg/pb/net" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -29,6 +31,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_Checkpoint Type isMessage_Type `protobuf_oneof:"type"` } @@ -166,6 +169,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_EpochConfig // *Event_StableCheckpoint // *Event_EpochProgress diff --git a/pkg/pb/checkpointpb/chkpvalidatorpb/chkpvalidatorpb.pb.go b/pkg/pb/checkpointpb/chkpvalidatorpb/chkpvalidatorpb.pb.go index a3347588f..7fed0864d 100644 --- a/pkg/pb/checkpointpb/chkpvalidatorpb/chkpvalidatorpb.pb.go +++ b/pkg/pb/checkpointpb/chkpvalidatorpb/chkpvalidatorpb.pb.go @@ -1,21 +1,23 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: checkpointpb/chkpvalidatorpb/chkpvalidatorpb.proto package chkpvalidatorpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -31,6 +33,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_ValidateCheckpoint // *Event_CheckpointValidated Type isEvent_Type `protobuf_oneof:"type"` @@ -238,6 +241,7 @@ type ValidateChkpOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *ValidateChkpOrigin_ContextStore // *ValidateChkpOrigin_Dsl Type isValidateChkpOrigin_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/contextstorepb/contextstorepb.pb.go b/pkg/pb/contextstorepb/contextstorepb.pb.go index 91d4deb90..ed06b1e2d 100644 --- a/pkg/pb/contextstorepb/contextstorepb.pb.go +++ b/pkg/pb/contextstorepb/contextstorepb.pb.go @@ -1,17 +1,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: contextstorepb/contextstorepb.proto package contextstorepb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( diff --git a/pkg/pb/cryptopb/cryptopb.pb.go b/pkg/pb/cryptopb/cryptopb.pb.go index 8c1406f2f..403464c9d 100644 --- a/pkg/pb/cryptopb/cryptopb.pb.go +++ b/pkg/pb/cryptopb/cryptopb.pb.go @@ -1,19 +1,21 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: cryptopb/cryptopb.proto package cryptopb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -29,6 +31,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_SignRequest // *Event_SignResult // *Event_VerifySig @@ -552,6 +555,7 @@ type SignOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *SignOrigin_ContextStore // *SignOrigin_Dsl Type isSignOrigin_Type `protobuf_oneof:"type"` @@ -640,6 +644,7 @@ type SigVerOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *SigVerOrigin_ContextStore // *SigVerOrigin_Dsl Type isSigVerOrigin_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/dslpb/dslpb.pb.go b/pkg/pb/dslpb/dslpb.pb.go index 9080eddbb..c26175309 100644 --- a/pkg/pb/dslpb/dslpb.pb.go +++ b/pkg/pb/dslpb/dslpb.pb.go @@ -1,17 +1,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: dslpb/dslpb.proto package dslpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( diff --git a/pkg/pb/eventpb/eventpb.pb.go b/pkg/pb/eventpb/eventpb.pb.go index 4fbd16948..dfde06e0c 100644 --- a/pkg/pb/eventpb/eventpb.pb.go +++ b/pkg/pb/eventpb/eventpb.pb.go @@ -1,12 +1,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: eventpb/eventpb.proto package eventpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + apppb "github.com/filecoin-project/mir/pkg/pb/apppb" availabilitypb "github.com/filecoin-project/mir/pkg/pb/availabilitypb" batchdbpb "github.com/filecoin-project/mir/pkg/pb/availabilitypb/batchdbpb" @@ -26,11 +33,6 @@ import ( testerpb "github.com/filecoin-project/mir/pkg/pb/testerpb" threshcryptopb "github.com/filecoin-project/mir/pkg/pb/threshcryptopb" transportpb "github.com/filecoin-project/mir/pkg/pb/transportpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" - reflect "reflect" - sync "sync" ) const ( @@ -48,6 +50,7 @@ type Event struct { DestModule string `protobuf:"bytes,1,opt,name=dest_module,json=destModule,proto3" json:"dest_module,omitempty"` // Types that are assignable to Type: + // // *Event_Init // *Event_Timer // *Event_Hasher @@ -473,6 +476,7 @@ type TimerEvent struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *TimerEvent_Delay // *TimerEvent_Repeat // *TimerEvent_GarbageCollect @@ -567,7 +571,8 @@ type TimerDelay struct { unknownFields protoimpl.UnknownFields // TODO: The field name must not be `events`, since it conflicts with a package name in the generated code. - // This is a bug in the Mir code generator that should be fixed. + // + // This is a bug in the Mir code generator that should be fixed. EventsToDelay []*Event `protobuf:"bytes,1,rep,name=events_to_delay,json=eventsToDelay,proto3" json:"events_to_delay,omitempty"` Delay uint64 `protobuf:"varint,2,opt,name=delay,proto3" json:"delay,omitempty"` } diff --git a/pkg/pb/eventpb/oneof_interfaces.mir.go b/pkg/pb/eventpb/oneof_interfaces.mir.go index 2baab82b9..c33cd9e75 100644 --- a/pkg/pb/eventpb/oneof_interfaces.mir.go +++ b/pkg/pb/eventpb/oneof_interfaces.mir.go @@ -3,6 +3,8 @@ package eventpb import ( + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + apppb "github.com/filecoin-project/mir/pkg/pb/apppb" availabilitypb "github.com/filecoin-project/mir/pkg/pb/availabilitypb" batchdbpb "github.com/filecoin-project/mir/pkg/pb/availabilitypb/batchdbpb" @@ -21,7 +23,6 @@ import ( testerpb "github.com/filecoin-project/mir/pkg/pb/testerpb" threshcryptopb "github.com/filecoin-project/mir/pkg/pb/threshcryptopb" transportpb "github.com/filecoin-project/mir/pkg/pb/transportpb" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) type Event_Type = isEvent_Type diff --git a/pkg/pb/eventpb/types/types.mir.go b/pkg/pb/eventpb/types/types.mir.go index 119300d27..37c95a225 100644 --- a/pkg/pb/eventpb/types/types.mir.go +++ b/pkg/pb/eventpb/types/types.mir.go @@ -3,6 +3,8 @@ package eventpbtypes import ( + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + mirreflect "github.com/filecoin-project/mir/codegen/mirreflect" types19 "github.com/filecoin-project/mir/codegen/model/types" types13 "github.com/filecoin-project/mir/pkg/pb/apppb/types" @@ -28,7 +30,6 @@ import ( types21 "github.com/filecoin-project/mir/pkg/trantor/types" types "github.com/filecoin-project/mir/pkg/types" reflectutil "github.com/filecoin-project/mir/pkg/util/reflectutil" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) type Event struct { diff --git a/pkg/pb/factorypb/factorypb.pb.go b/pkg/pb/factorypb/factorypb.pb.go index a0bed354d..d2e6d7157 100644 --- a/pkg/pb/factorypb/factorypb.pb.go +++ b/pkg/pb/factorypb/factorypb.pb.go @@ -1,21 +1,23 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: factorypb/factorypb.proto package factorypb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + mscpb "github.com/filecoin-project/mir/pkg/pb/availabilitypb/mscpb" checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" ordererpb "github.com/filecoin-project/mir/pkg/pb/ordererpb" pprepvalidatorpb "github.com/filecoin-project/mir/pkg/pb/ordererpb/pprepvalidatorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -31,6 +33,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_NewModule // *Event_GarbageCollect Type isEvent_Type `protobuf_oneof:"type"` @@ -227,6 +230,7 @@ type GeneratorParams struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *GeneratorParams_MultisigCollector // *GeneratorParams_Checkpoint // *GeneratorParams_EchoTestModule diff --git a/pkg/pb/hasherpb/hasherpb.pb.go b/pkg/pb/hasherpb/hasherpb.pb.go index cdc0413ee..9bc6df34f 100644 --- a/pkg/pb/hasherpb/hasherpb.pb.go +++ b/pkg/pb/hasherpb/hasherpb.pb.go @@ -1,19 +1,21 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: hasherpb/hasherpb.proto package hasherpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -29,6 +31,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_Request // *Event_Result // *Event_RequestOne @@ -358,6 +361,7 @@ type HashOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *HashOrigin_ContextStore // *HashOrigin_Dsl Type isHashOrigin_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/isspb/isspb.pb.go b/pkg/pb/isspb/isspb.pb.go index 825142a0a..3640d44d3 100644 --- a/pkg/pb/isspb/isspb.pb.go +++ b/pkg/pb/isspb/isspb.pb.go @@ -5,22 +5,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: isspb/isspb.proto package isspb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + availabilitypb "github.com/filecoin-project/mir/pkg/pb/availabilitypb" checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" _ "github.com/filecoin-project/mir/pkg/pb/net" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -36,6 +38,7 @@ type ISSMessage struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *ISSMessage_StableCheckpoint Type isISSMessage_Type `protobuf_oneof:"type"` } @@ -102,6 +105,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_PushCheckpoint // *Event_SbDeliver // *Event_DeliverCert diff --git a/pkg/pb/mempoolpb/mempoolpb.pb.go b/pkg/pb/mempoolpb/mempoolpb.pb.go index 2bfc92bc6..2fb195d9b 100644 --- a/pkg/pb/mempoolpb/mempoolpb.pb.go +++ b/pkg/pb/mempoolpb/mempoolpb.pb.go @@ -1,20 +1,22 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: mempoolpb/mempoolpb.proto package mempoolpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -30,6 +32,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_RequestBatch // *Event_NewBatch // *Event_RequestTransactions @@ -862,6 +865,7 @@ type RequestBatchOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestBatchOrigin_ContextStore // *RequestBatchOrigin_Dsl Type isRequestBatchOrigin_Type `protobuf_oneof:"Type"` @@ -950,6 +954,7 @@ type RequestTransactionsOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestTransactionsOrigin_ContextStore // *RequestTransactionsOrigin_Dsl Type isRequestTransactionsOrigin_Type `protobuf_oneof:"Type"` @@ -1038,6 +1043,7 @@ type RequestTransactionIDsOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestTransactionIDsOrigin_ContextStore // *RequestTransactionIDsOrigin_Dsl Type isRequestTransactionIDsOrigin_Type `protobuf_oneof:"Type"` @@ -1126,6 +1132,7 @@ type RequestBatchIDOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RequestBatchIDOrigin_ContextStore // *RequestBatchIDOrigin_Dsl Type isRequestBatchIDOrigin_Type `protobuf_oneof:"Type"` diff --git a/pkg/pb/messagepb/messagepb.pb.go b/pkg/pb/messagepb/messagepb.pb.go index f642796cf..31bfad93a 100644 --- a/pkg/pb/messagepb/messagepb.pb.go +++ b/pkg/pb/messagepb/messagepb.pb.go @@ -5,13 +5,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: messagepb/messagepb.proto package messagepb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + mscpb "github.com/filecoin-project/mir/pkg/pb/availabilitypb/mscpb" bcbpb "github.com/filecoin-project/mir/pkg/pb/bcbpb" checkpointpb "github.com/filecoin-project/mir/pkg/pb/checkpointpb" @@ -20,10 +26,6 @@ import ( _ "github.com/filecoin-project/mir/pkg/pb/net" ordererpb "github.com/filecoin-project/mir/pkg/pb/ordererpb" pingpongpb "github.com/filecoin-project/mir/pkg/pb/pingpongpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -40,6 +42,7 @@ type Message struct { DestModule string `protobuf:"bytes,1,opt,name=dest_module,json=destModule,proto3" json:"dest_module,omitempty"` // Types that are assignable to Type: + // // *Message_Iss // *Message_Bcb // *Message_MultisigCollector diff --git a/pkg/pb/mir/codegen_extensions.pb.go b/pkg/pb/mir/codegen_extensions.pb.go index 7e20985ec..3d6102b09 100644 --- a/pkg/pb/mir/codegen_extensions.pb.go +++ b/pkg/pb/mir/codegen_extensions.pb.go @@ -1,16 +1,17 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: mir/codegen_extensions.proto package mir import ( + reflect "reflect" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" descriptorpb "google.golang.org/protobuf/types/descriptorpb" - reflect "reflect" ) const ( diff --git a/pkg/pb/net/codegen_extensions.pb.go b/pkg/pb/net/codegen_extensions.pb.go index 8175c8679..c2b6d2f85 100644 --- a/pkg/pb/net/codegen_extensions.pb.go +++ b/pkg/pb/net/codegen_extensions.pb.go @@ -1,16 +1,17 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: net/codegen_extensions.proto package net import ( + reflect "reflect" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" descriptorpb "google.golang.org/protobuf/types/descriptorpb" - reflect "reflect" ) const ( diff --git a/pkg/pb/ordererpb/ordererpb.pb.go b/pkg/pb/ordererpb/ordererpb.pb.go index 6be8f8e28..7fd67a899 100644 --- a/pkg/pb/ordererpb/ordererpb.pb.go +++ b/pkg/pb/ordererpb/ordererpb.pb.go @@ -1,20 +1,22 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: ordererpb/ordererpb.proto package ordererpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "github.com/filecoin-project/mir/pkg/pb/mir" _ "github.com/filecoin-project/mir/pkg/pb/net" pbftpb "github.com/filecoin-project/mir/pkg/pb/pbftpb" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -30,6 +32,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_Pbft Type isEvent_Type `protobuf_oneof:"type"` } @@ -96,6 +99,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_Pbft Type isMessage_Type `protobuf_oneof:"type"` } diff --git a/pkg/pb/ordererpb/pprepvalidatorpb/pprepvalidatorpb.pb.go b/pkg/pb/ordererpb/pprepvalidatorpb/pprepvalidatorpb.pb.go index 40f6d4855..1c13bd8e9 100644 --- a/pkg/pb/ordererpb/pprepvalidatorpb/pprepvalidatorpb.pb.go +++ b/pkg/pb/ordererpb/pprepvalidatorpb/pprepvalidatorpb.pb.go @@ -1,21 +1,23 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: ordererpb/pprepvalidatorpb/pprepvalidatorpb.proto package pprepvalidatorpb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" pbftpb "github.com/filecoin-project/mir/pkg/pb/pbftpb" trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -31,6 +33,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_ValidatePreprepare // *Event_PreprepareValidated Type isEvent_Type `protobuf_oneof:"type"` @@ -222,6 +225,7 @@ type ValidatePreprepareOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *ValidatePreprepareOrigin_ContextStore // *ValidatePreprepareOrigin_Dsl Type isValidatePreprepareOrigin_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/pbftpb/pbftpb.pb.go b/pkg/pb/pbftpb/pbftpb.pb.go index 62b472a49..7acf97f33 100644 --- a/pkg/pb/pbftpb/pbftpb.pb.go +++ b/pkg/pb/pbftpb/pbftpb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: pbftpb/pbftpb.proto package pbftpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - _ "github.com/filecoin-project/mir/pkg/pb/net" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" + _ "github.com/filecoin-project/mir/pkg/pb/net" ) const ( @@ -28,6 +30,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_Preprepare // *Message_Prepare // *Message_Commit @@ -994,6 +997,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_ProposeTimeout // *Event_ViewChangeSnTimeout // *Event_ViewChangeSegTimeout diff --git a/pkg/pb/pingpongpb/pingpongpb.pb.go b/pkg/pb/pingpongpb/pingpongpb.pb.go index 2f88aec7c..94e33b870 100644 --- a/pkg/pb/pingpongpb/pingpongpb.pb.go +++ b/pkg/pb/pingpongpb/pingpongpb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: pingpongpb/pingpongpb.proto package pingpongpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - _ "github.com/filecoin-project/mir/pkg/pb/net" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" + _ "github.com/filecoin-project/mir/pkg/pb/net" ) const ( @@ -28,6 +30,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_PingTime Type isEvent_Type `protobuf_oneof:"type"` } @@ -132,6 +135,7 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Message_Ping // *Message_Pong Type isMessage_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/recordingpb/recordingpb.pb.go b/pkg/pb/recordingpb/recordingpb.pb.go index 2585b98fa..55cedd3ef 100644 --- a/pkg/pb/recordingpb/recordingpb.pb.go +++ b/pkg/pb/recordingpb/recordingpb.pb.go @@ -5,18 +5,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: recordingpb/recordingpb.proto package recordingpb import ( - eventpb "github.com/filecoin-project/mir/pkg/pb/eventpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + eventpb "github.com/filecoin-project/mir/pkg/pb/eventpb" ) const ( diff --git a/pkg/pb/testerpb/testerpb.pb.go b/pkg/pb/testerpb/testerpb.pb.go index 7dedd89c7..955a7e9d6 100644 --- a/pkg/pb/testerpb/testerpb.pb.go +++ b/pkg/pb/testerpb/testerpb.pb.go @@ -1,17 +1,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: testerpb/testerpb.proto package testerpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( diff --git a/pkg/pb/threshcryptopb/threshcryptopb.pb.go b/pkg/pb/threshcryptopb/threshcryptopb.pb.go index 739438330..f640418e0 100644 --- a/pkg/pb/threshcryptopb/threshcryptopb.pb.go +++ b/pkg/pb/threshcryptopb/threshcryptopb.pb.go @@ -1,19 +1,21 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: threshcryptopb/threshcryptopb.proto package threshcryptopb import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + contextstorepb "github.com/filecoin-project/mir/pkg/pb/contextstorepb" dslpb "github.com/filecoin-project/mir/pkg/pb/dslpb" _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" ) const ( @@ -29,6 +31,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_SignShare // *Event_SignShareResult // *Event_VerifyShare @@ -304,6 +307,7 @@ type SignShareOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *SignShareOrigin_ContextStore // *SignShareOrigin_Dsl Type isSignShareOrigin_Type `protobuf_oneof:"type"` @@ -526,6 +530,7 @@ type VerifyShareOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *VerifyShareOrigin_ContextStore // *VerifyShareOrigin_Dsl Type isVerifyShareOrigin_Type `protobuf_oneof:"type"` @@ -740,6 +745,7 @@ type VerifyFullOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *VerifyFullOrigin_ContextStore // *VerifyFullOrigin_Dsl Type isVerifyFullOrigin_Type `protobuf_oneof:"type"` @@ -962,6 +968,7 @@ type RecoverOrigin struct { Module string `protobuf:"bytes,1,opt,name=module,proto3" json:"module,omitempty"` // Types that are assignable to Type: + // // *RecoverOrigin_ContextStore // *RecoverOrigin_Dsl Type isRecoverOrigin_Type `protobuf_oneof:"type"` diff --git a/pkg/pb/transportpb/transportpb.pb.go b/pkg/pb/transportpb/transportpb.pb.go index ef42d1f2b..280b5a29c 100644 --- a/pkg/pb/transportpb/transportpb.pb.go +++ b/pkg/pb/transportpb/transportpb.pb.go @@ -1,18 +1,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: transportpb/transportpb.proto package transportpb import ( - messagepb "github.com/filecoin-project/mir/pkg/pb/messagepb" - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + messagepb "github.com/filecoin-project/mir/pkg/pb/messagepb" + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( @@ -28,6 +30,7 @@ type Event struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Event_SendMessage // *Event_MessageReceived Type isEvent_Type `protobuf_oneof:"Type"` diff --git a/pkg/pb/trantorpb/trantorpb.pb.go b/pkg/pb/trantorpb/trantorpb.pb.go index ad414366b..32f9fb69e 100644 --- a/pkg/pb/trantorpb/trantorpb.pb.go +++ b/pkg/pb/trantorpb/trantorpb.pb.go @@ -1,17 +1,19 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: trantorpb/trantorpb.proto package trantorpb import ( - _ "github.com/filecoin-project/mir/pkg/pb/mir" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + _ "github.com/filecoin-project/mir/pkg/pb/mir" ) const ( diff --git a/pkg/transactionreceiver/transactionreceiver.pb.go b/pkg/transactionreceiver/transactionreceiver.pb.go index c67b5b369..ec9881da5 100644 --- a/pkg/transactionreceiver/transactionreceiver.pb.go +++ b/pkg/transactionreceiver/transactionreceiver.pb.go @@ -5,18 +5,20 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel -// protoc v3.14.0 +// protoc-gen-go v1.29.1 +// protoc v3.21.12 // source: transactionreceiver/transactionreceiver.proto package transactionreceiver import ( - trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + + trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" ) const ( diff --git a/pkg/transactionreceiver/transactionreceiver_grpc.pb.go b/pkg/transactionreceiver/transactionreceiver_grpc.pb.go index c088751b1..7e4c6ca28 100644 --- a/pkg/transactionreceiver/transactionreceiver_grpc.pb.go +++ b/pkg/transactionreceiver/transactionreceiver_grpc.pb.go @@ -1,13 +1,24 @@ +// +//Copyright IBM Corp. All Rights Reserved. +// +//SPDX-License-Identifier: Apache-2.0 + // Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.21.12 +// source: transactionreceiver/transactionreceiver.proto package transactionreceiver import ( context "context" - trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" + grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" + + trantorpb "github.com/filecoin-project/mir/pkg/pb/trantorpb" ) // This is a compile-time assertion to ensure that this generated file @@ -15,6 +26,10 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + TransactionReceiver_Listen_FullMethodName = "/receiver.TransactionReceiver/Listen" +) + // TransactionReceiverClient is the client API for TransactionReceiver service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -31,7 +46,7 @@ func NewTransactionReceiverClient(cc grpc.ClientConnInterface) TransactionReceiv } func (c *transactionReceiverClient) Listen(ctx context.Context, opts ...grpc.CallOption) (TransactionReceiver_ListenClient, error) { - stream, err := c.cc.NewStream(ctx, &TransactionReceiver_ServiceDesc.Streams[0], "/receiver.TransactionReceiver/Listen", opts...) + stream, err := c.cc.NewStream(ctx, &TransactionReceiver_ServiceDesc.Streams[0], TransactionReceiver_Listen_FullMethodName, opts...) if err != nil { return nil, err } From d01b3d0fdd865e4267b27866dde36c44079a1a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Breda?= Date: Wed, 5 Jul 2023 17:59:32 +0100 Subject: [PATCH 3/4] Only use protobuf structs for serialization Also removes trivial data-type conversions that were made redundant. --- cmd/bench/cmd/node.go | 16 +++--- cmd/bench/stats/stat-interceptor.go | 16 +++--- cmd/bench/stats/stats.go | 12 +++-- cmd/mircat/customtransform.go | 6 ++- cmd/mircat/debug.go | 9 ++-- cmd/mircat/display.go | 16 +++--- cmd/mircat/eventloader.go | 35 +++++-------- cmd/mircat/main.go | 26 ++++++---- cmd/mircat/nulltransport.go | 4 +- .../generators/dsl-gen/generator/events.go | 6 +-- .../generators/dsl-gen/generator/generator.go | 10 ++-- eventbuffer.go | 10 ++-- node_test.go | 4 +- pkg/batchfetcher/batchfetcher.go | 38 ++++++-------- pkg/batchfetcher/events/events.go | 25 ---------- pkg/batchfetcher/outputqueue.go | 6 +-- pkg/crypto/crypto.go | 42 ++++++++-------- pkg/crypto/hasher.go | 30 ++++++----- pkg/deploytest/faketransport.go | 22 ++++---- pkg/deploytest/simtimer.go | 26 ++++------ pkg/deploytest/simtransport.go | 37 +++++++------- pkg/deploytest/simulation.go | 6 +-- pkg/deploytest/testreplica.go | 2 +- pkg/dsl/dslmodule.go | 50 +++++-------------- pkg/dsl/events.go | 8 +-- pkg/dsl/test/dslmodule_test.go | 49 +++++++++--------- pkg/eventlog/eventwritergzip.go | 5 +- pkg/eventlog/eventwritersqlite.go | 2 +- pkg/eventlog/newfilepolicy.go | 14 +++--- pkg/eventlog/recorder.go | 10 ++-- pkg/eventlog/recorderopts.go | 6 +-- pkg/eventmangler/eventmangler.go | 7 ++- pkg/events/eventlist.go | 16 +++--- pkg/events/eventlist_test.go | 8 +-- pkg/events/events.go | 27 +++++----- pkg/factorymodule/factory.go | 34 +++++++------ pkg/factorymodule/factory_test.go | 42 ++++++++-------- pkg/modules/eventprocessing.go | 12 ++--- pkg/modules/mockmodules/internal/impl.go | 4 +- .../internal/mock_internal/impl.mock.go | 4 +- pkg/net/grpc/grpctransport.go | 19 ++++--- pkg/net/libp2p/connection.go | 4 +- pkg/net/libp2p/remoteconnection.go | 12 ++--- pkg/net/libp2p/selfconnection.go | 13 +++-- pkg/net/libp2p/transport.go | 14 +++--- pkg/net/libp2p/transport_test.go | 37 +++++++------- pkg/net/transport.go | 4 +- pkg/pb/apppb/dsl/emit.mir.go | 8 +-- pkg/pb/apppb/dsl/upon.mir.go | 2 +- .../availabilitypb/batchdbpb/dsl/emit.mir.go | 10 ++-- .../availabilitypb/batchdbpb/dsl/upon.mir.go | 2 +- pkg/pb/availabilitypb/dsl/emit.mir.go | 14 +++--- pkg/pb/availabilitypb/dsl/upon.mir.go | 2 +- pkg/pb/batchfetcherpb/dsl/emit.mir.go | 2 +- pkg/pb/batchfetcherpb/dsl/upon.mir.go | 2 +- pkg/pb/bcbpb/dsl/emit.mir.go | 4 +- pkg/pb/bcbpb/dsl/upon.mir.go | 2 +- .../chkpvalidatorpb/dsl/emit.mir.go | 4 +- .../chkpvalidatorpb/dsl/upon.mir.go | 2 +- pkg/pb/checkpointpb/dsl/emit.mir.go | 4 +- pkg/pb/checkpointpb/dsl/upon.mir.go | 2 +- pkg/pb/cryptopb/dsl/emit.mir.go | 12 ++--- pkg/pb/cryptopb/dsl/upon.mir.go | 2 +- pkg/pb/eventpb/dsl/emit.mir.go | 8 +-- pkg/pb/eventpb/dsl/upon.mir.go | 4 +- pkg/pb/factorypb/dsl/emit.mir.go | 4 +- pkg/pb/factorypb/dsl/upon.mir.go | 2 +- pkg/pb/hasherpb/dsl/emit.mir.go | 8 +-- pkg/pb/hasherpb/dsl/upon.mir.go | 2 +- pkg/pb/isspb/dsl/emit.mir.go | 8 +-- pkg/pb/isspb/dsl/upon.mir.go | 2 +- pkg/pb/mempoolpb/dsl/emit.mir.go | 22 ++++---- pkg/pb/mempoolpb/dsl/upon.mir.go | 2 +- pkg/pb/ordererpb/dsl/upon.mir.go | 2 +- .../pprepvalidatorpb/dsl/emit.mir.go | 4 +- .../pprepvalidatorpb/dsl/upon.mir.go | 2 +- pkg/pb/pbftpb/dsl/emit.mir.go | 6 +-- pkg/pb/pingpongpb/dsl/emit.mir.go | 2 +- pkg/pb/pingpongpb/dsl/upon.mir.go | 2 +- pkg/pb/testerpb/dsl/emit.mir.go | 2 +- pkg/pb/testerpb/dsl/upon.mir.go | 2 +- pkg/pb/threshcryptopb/dsl/emit.mir.go | 16 +++--- pkg/pb/threshcryptopb/dsl/upon.mir.go | 2 +- pkg/pb/transportpb/dsl/emit.mir.go | 4 +- pkg/pb/transportpb/dsl/upon.mir.go | 2 +- pkg/pb/trantorpb/dsl/emit.mir.go | 4 +- pkg/threshcrypto/threshcrypto.go | 39 ++++++++------- pkg/timer/timer.go | 20 ++++---- .../transactionreceiver.go | 2 +- pkg/trantor/testing/smr_test.go | 4 +- .../availability-layer-demo/control-module.go | 30 +++++------ samples/bcb-demo/control-module.go | 24 ++++----- samples/chat-demo/main.go | 2 +- samples/pingpong/lowlevel/pingpong.go | 48 +++++++++--------- samples/pingpong/lowlevel/protobufs.go | 40 +++++++-------- 95 files changed, 573 insertions(+), 627 deletions(-) delete mode 100644 pkg/batchfetcher/events/events.go diff --git a/cmd/bench/cmd/node.go b/cmd/bench/cmd/node.go index f03050f66..49b34bc7d 100644 --- a/cmd/bench/cmd/node.go +++ b/cmd/bench/cmd/node.go @@ -25,9 +25,9 @@ import ( "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/membership" libp2p2 "github.com/filecoin-project/mir/pkg/net/libp2p" - "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/mempoolpb" + batchfetcherpbtypes "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + mempoolpbtypes "github.com/filecoin-project/mir/pkg/pb/mempoolpb/types" "github.com/filecoin-project/mir/pkg/transactionreceiver" "github.com/filecoin-project/mir/pkg/trantor" t "github.com/filecoin-project/mir/pkg/types" @@ -141,16 +141,16 @@ func runNode() error { ownID, "bench-output", logging.Decorate(logger, "EVTLOG: "), - eventlog.EventFilterOpt(func(e *eventpb.Event) bool { + eventlog.EventFilterOpt(func(e *eventpbtypes.Event) bool { switch e := e.Type.(type) { - case *eventpb.Event_Mempool: + case *eventpbtypes.Event_Mempool: switch e.Mempool.Type.(type) { - case *mempoolpb.Event_NewTransactions: + case *mempoolpbtypes.Event_NewTransactions: return true } - case *eventpb.Event_BatchFetcher: + case *eventpbtypes.Event_BatchFetcher: switch e.BatchFetcher.Type.(type) { - case *batchfetcherpb.Event_NewOrderedBatch: + case *batchfetcherpbtypes.Event_NewOrderedBatch: return true } } diff --git a/cmd/bench/stats/stat-interceptor.go b/cmd/bench/stats/stat-interceptor.go index 8f20a08d3..dd3067252 100644 --- a/cmd/bench/stats/stat-interceptor.go +++ b/cmd/bench/stats/stat-interceptor.go @@ -6,9 +6,9 @@ package stats import ( "github.com/filecoin-project/mir/pkg/events" - bfpb "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/mempoolpb" + batchfetcherpbtypes "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + mempoolpbtypes "github.com/filecoin-project/mir/pkg/pb/mempoolpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -39,22 +39,22 @@ func (i *StatInterceptor) Intercept(events *events.EventList) error { for evt := it.Next(); evt != nil; evt = it.Next() { switch e := evt.Type.(type) { - case *eventpb.Event_Mempool: + case *eventpbtypes.Event_Mempool: switch e := e.Mempool.Type.(type) { - case *mempoolpb.Event_NewTransactions: + case *mempoolpbtypes.Event_NewTransactions: for _, tx := range e.NewTransactions.Transactions { i.Stats.NewTX(tx) } } - case *eventpb.Event_BatchFetcher: + case *eventpbtypes.Event_BatchFetcher: // Skip events destined to other modules than the one consuming the transactions. - if t.ModuleID(evt.DestModule) != i.txConsumerModule { + if evt.DestModule != i.txConsumerModule { continue } switch e := e.BatchFetcher.Type.(type) { - case *bfpb.Event_NewOrderedBatch: + case *batchfetcherpbtypes.Event_NewOrderedBatch: for _, tx := range e.NewOrderedBatch.Txs { i.Stats.Delivered(tx) } diff --git a/cmd/bench/stats/stats.go b/cmd/bench/stats/stats.go index d622a4e72..148f86698 100644 --- a/cmd/bench/stats/stats.go +++ b/cmd/bench/stats/stats.go @@ -11,7 +11,9 @@ import ( "sync" "time" - "github.com/filecoin-project/mir/pkg/pb/trantorpb" + trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" + + tt "github.com/filecoin-project/mir/pkg/trantor/types" ) type Stats struct { @@ -23,8 +25,8 @@ type Stats struct { } type txKey struct { - ClientID string - TxNo uint64 + ClientID tt.ClientID + TxNo tt.TxNo } func NewStats() *Stats { @@ -33,14 +35,14 @@ func NewStats() *Stats { } } -func (s *Stats) NewTX(tx *trantorpb.Transaction) { +func (s *Stats) NewTX(tx *trantorpbtypes.Transaction) { s.lock.Lock() k := txKey{tx.ClientId, tx.TxNo} s.txTimestamps[k] = time.Now() s.lock.Unlock() } -func (s *Stats) Delivered(tx *trantorpb.Transaction) { +func (s *Stats) Delivered(tx *trantorpbtypes.Transaction) { s.lock.Lock() s.deliveredTransactions++ k := txKey{tx.ClientId, tx.TxNo} diff --git a/cmd/mircat/customtransform.go b/cmd/mircat/customtransform.go index 5d6f0409d..00e977315 100644 --- a/cmd/mircat/customtransform.go +++ b/cmd/mircat/customtransform.go @@ -1,12 +1,14 @@ package main -import "github.com/filecoin-project/mir/pkg/pb/eventpb" +import ( + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" +) // This function is applied to every event loaded from the event log // and its return value is used instead of the original event. // If customEventFilter returns nil, the event is ignored (this can be used for additional event filtering). // It is meant for ad-hoc editing while debugging, to be able to select events in a fine-grained way. -func customTransform(e *eventpb.Event) *eventpb.Event { +func customTransform(e *eventpbtypes.Event) *eventpbtypes.Event { //moduleID := "" //if e.DestModule == moduleID { diff --git a/cmd/mircat/debug.go b/cmd/mircat/debug.go index 79a339f3c..f44f85f8f 100644 --- a/cmd/mircat/debug.go +++ b/cmd/mircat/debug.go @@ -26,7 +26,7 @@ import ( issconfig "github.com/filecoin-project/mir/pkg/iss/config" "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/pb/recordingpb" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" t "github.com/filecoin-project/mir/pkg/types" @@ -111,7 +111,8 @@ func debug(args *arguments) error { } // Process each event in the entry. - for _, event := range entry.Events { + for _, eventPb := range entry.Events { + event := eventpbtypes.EventFromPb(eventPb) // Set the index of the event in the event log. metadata.index = uint64(index) @@ -217,7 +218,7 @@ func debuggerNode(id t.NodeID, membership *trantorpbtypes.Membership) (*mir.Node // stopBeforeNext waits for two confirmations of the user, a confirmation being a new line on the standard input. // After the first one, event is displayed and after the second one, the function returns. -func stopBeforeNext(event *eventpb.Event, metadata eventMetadata) { +func stopBeforeNext(event *eventpbtypes.Event, metadata eventMetadata) { bufio.NewScanner(os.Stdin).Scan() fmt.Printf("========================================\n") fmt.Printf("Next step (%d):\n", metadata.index) @@ -233,7 +234,7 @@ func printNodeOutput(eventChan chan *events.EventList) { fmt.Printf("========================================\n") fmt.Printf("Node produced the following events:\n\n") for _, event := range receivedEvents.Slice() { - fmt.Println(protojson.Format(event)) + fmt.Println(protojson.Format(event.Pb())) } } } diff --git a/cmd/mircat/display.go b/cmd/mircat/display.go index eedfc223b..8f1177685 100644 --- a/cmd/mircat/display.go +++ b/cmd/mircat/display.go @@ -16,7 +16,7 @@ import ( "github.com/filecoin-project/mir/pkg/eventlog" "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/pb/recordingpb" t "github.com/filecoin-project/mir/pkg/types" ) @@ -68,7 +68,9 @@ func displayEvents(args *arguments) error { //nolint:gocognit time: entry.Time, } // getting events from entry - for _, event := range entry.Events { + for _, eventPb := range entry.Events { + event := eventpbtypes.EventFromPb(eventPb) + metadata.index = uint64(index) _, validEvent := args.selectedEventNames[eventName(event)] @@ -79,7 +81,7 @@ func displayEvents(args *arguments) error { //nolint:gocognit // If event type has been selected for displaying switch e := event.Type.(type) { - case *eventpb.Event_Iss: + case *eventpbtypes.Event_Iss: // Only display selected sub-types of the ISS Event if _, validIssEvent := args.selectedIssEventNames[issEventName(e.Iss)]; validIssEvent { displayEvent(event, metadata) @@ -111,13 +113,13 @@ func displayEvents(args *arguments) error { //nolint:gocognit } // Displays one event according to its type. -func displayEvent(event *eventpb.Event, metadata eventMetadata) { +func displayEvent(event *eventpbtypes.Event, metadata eventMetadata) { switch e := event.Type.(type) { - case *eventpb.Event_Iss: - display(fmt.Sprintf("%s : %s", eventName(event), issEventName(e.Iss)), protojson.Format(event), metadata) + case *eventpbtypes.Event_Iss: + display(fmt.Sprintf("%s : %s", eventName(event), issEventName(e.Iss)), protojson.Format(event.Pb()), metadata) default: - display(eventName(event), protojson.Format(event), metadata) + display(eventName(event), protojson.Format(event.Pb()), metadata) } } diff --git a/cmd/mircat/eventloader.go b/cmd/mircat/eventloader.go index e212e8753..e99fdc9eb 100644 --- a/cmd/mircat/eventloader.go +++ b/cmd/mircat/eventloader.go @@ -6,14 +6,13 @@ import ( "io" "os" "reflect" - "sort" "strings" "gopkg.in/alecthomas/kingpin.v2" "github.com/filecoin-project/mir/pkg/eventlog" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/isspb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + isspbtypes "github.com/filecoin-project/mir/pkg/pb/isspb/types" "github.com/filecoin-project/mir/pkg/pb/recordingpb" t "github.com/filecoin-project/mir/pkg/types" ) @@ -26,10 +25,10 @@ type eventMetadata struct { // Returns the list of event names and destinations present in the given eventlog file, // along with the total number of events present in the file. -func getEventList(filenames *[]string) (map[string]struct{}, map[string]struct{}, map[string]struct{}, int, error) { +func getEventList(filenames *[]string) (map[string]struct{}, map[string]struct{}, map[t.ModuleID]struct{}, int, error) { events := make(map[string]struct{}) issEvents := make(map[string]struct{}) - eventDests := make(map[string]struct{}) + eventDests := make(map[t.ModuleID]struct{}) totalCount := 0 for _, filename := range *filenames { @@ -60,7 +59,9 @@ func getEventList(filenames *[]string) (map[string]struct{}, map[string]struct{} for entry, err = reader.ReadEntry(); err == nil; entry, err = reader.ReadEntry() { // For each entry of the event log - for _, event := range entry.Events { + for _, eventPb := range entry.Events { + event := eventpbtypes.EventFromPb(eventPb) + // For each Event in the entry cnt++ @@ -68,7 +69,7 @@ func getEventList(filenames *[]string) (map[string]struct{}, map[string]struct{} events[eventName(event)] = struct{}{} eventDests[event.DestModule] = struct{}{} switch e := event.Type.(type) { - case *eventpb.Event_Iss: + case *eventpbtypes.Event_Iss: // For ISS Events, also add the type of the ISS event to a set of known ISS events. issEvents[issEventName(e.Iss)] = struct{}{} } @@ -85,21 +86,21 @@ func getEventList(filenames *[]string) (map[string]struct{}, map[string]struct{} } // eventName returns a string name of an Event. -func eventName(event *eventpb.Event) string { +func eventName(event *eventpbtypes.Event) string { return strings.ReplaceAll( reflect.TypeOf(event.Type).Elem().Name(), // gets the type's name i.e. Event_Tick , Event_Iss,etc "Event_", "") } // issEventName returns a string name of an ISS event. -func issEventName(issEvent *isspb.Event) string { +func issEventName(issEvent *isspbtypes.Event) string { return strings.ReplaceAll( reflect.TypeOf(issEvent.Type).Elem().Name(), // gets the type's name i.e. ISSEvent_sb , ISSEvent_PersistCheckpoint,etc "ISSEvent_", "") // replaces the given substring from the name } // selected returns true if the given event has been selected by the user according to the given criteria. -func selected(event *eventpb.Event, selectedEvents map[string]struct{}, selectedIssEvents map[string]struct{}) bool { +func selected(event *eventpbtypes.Event, selectedEvents map[string]struct{}, selectedIssEvents map[string]struct{}) bool { if _, ok := selectedEvents[eventName(event)]; !ok { // If the basic type of the event has not been selected, return false. return false @@ -108,7 +109,7 @@ func selected(event *eventpb.Event, selectedEvents map[string]struct{}, selected // If the basic type of the event has been selected, // check whether the sub-type has been selected as well for ISS events. switch e := event.Type.(type) { - case *eventpb.Event_Iss: + case *eventpbtypes.Event_Iss: _, ok := selectedIssEvents[issEventName(e.Iss)] return ok default: @@ -116,18 +117,6 @@ func selected(event *eventpb.Event, selectedEvents map[string]struct{}, selected } } -// Converts a set of strings (represented as a map) to a list. -// Returns a slice containing all the keys present in the given set. -// toList is used to convert sets to a format used by the survey library. -func toList(set map[string]struct{}) []string { - list := make([]string, 0, len(set)) - for item := range set { - list = append(list, item) - } - sort.Strings(list) - return list -} - // Converts a list of strings to a set (represented as a map). // Returns a map of empty structs with one entry for each unique item of the given list (the item being the map key). // toSet is used to convert lists produced by the survey library to sets for easier lookup. diff --git a/cmd/mircat/main.go b/cmd/mircat/main.go index 8bdfd2ff7..65443eabb 100644 --- a/cmd/mircat/main.go +++ b/cmd/mircat/main.go @@ -10,6 +10,7 @@ import ( "gopkg.in/alecthomas/kingpin.v2" t "github.com/filecoin-project/mir/pkg/types" + "github.com/filecoin-project/mir/pkg/util/maputil" ) // mircat is a tool for reviewing Mir state machine recordings. @@ -38,7 +39,7 @@ type arguments struct { selectedIssEventNames map[string]struct{} // Events with specific destination modules selected by the user for displaying - selectedEventDests map[string]struct{} + selectedEventDests map[t.ModuleID]struct{} // If set to true, start a Node in debug mode with the given event log. debug bool @@ -99,8 +100,12 @@ func main() { // // have the user interactively select the event destinations' to include in the output. if len(args.selectedEventDests) == 0 { + allDestsStr := maputil.Transform(allDests, func(k t.ModuleID, v struct{}) (string, struct{}) { return string(k), v }) // Select top-level events - args.selectedEventDests = checkboxes("Please select the event destinations", allDests) + args.selectedEventDests = maputil.Transform( + checkboxes("Please select the event destinations", allDestsStr), + func(k string, v struct{}) (t.ModuleID, struct{}) { return t.ModuleID(k), v }, + ) } @@ -161,7 +166,10 @@ func parseArgs(args []string) (*arguments, error) { limit: *limit, selectedEventNames: toSet(*events), selectedIssEventNames: toSet(*issEvents), - selectedEventDests: toSet(*eventDests), + selectedEventDests: maputil.Transform( + toSet(*eventDests), + func(k string, v struct{}) (t.ModuleID, struct{}) { return t.ModuleID(k), v }, + ), }, nil } @@ -173,7 +181,7 @@ func checkboxes(label string, opts map[string]struct{}) map[string]struct{} { selected := make([]string, 0) prompt := &survey.MultiSelect{ Message: label, - Options: toList(opts), + Options: maputil.GetSortedKeys(opts), } if err := survey.AskOne(prompt, &selected); err != nil { fmt.Printf("Error selecting event types: %v", err) @@ -182,19 +190,19 @@ func checkboxes(label string, opts map[string]struct{}) map[string]struct{} { return toSet(selected) } -func selectionArgs(events map[string]struct{}, issEvents map[string]struct{}, dests map[string]struct{}) string { +func selectionArgs(events map[string]struct{}, issEvents map[string]struct{}, dests map[t.ModuleID]struct{}) string { argStr := "" - for _, eventName := range toList(events) { + for _, eventName := range maputil.GetSortedKeys(events) { argStr += " --event " + eventName } - for _, issEventName := range toList(issEvents) { + for _, issEventName := range maputil.GetSortedKeys(issEvents) { argStr += " --iss-event " + issEventName } - for _, dest := range toList(dests) { - argStr += " --event-dest " + dest + for _, dest := range maputil.GetSortedKeys(dests) { + argStr += " --event-dest " + string(dest) } return argStr diff --git a/cmd/mircat/nulltransport.go b/cmd/mircat/nulltransport.go index f59289043..0e85eda86 100644 --- a/cmd/mircat/nulltransport.go +++ b/cmd/mircat/nulltransport.go @@ -4,7 +4,7 @@ import ( "context" "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -27,7 +27,7 @@ func (n *NullTransport) Start() error { func (n *NullTransport) Stop() {} -func (n *NullTransport) Send(_ t.NodeID, _ *messagepb.Message) error { +func (n *NullTransport) Send(_ t.NodeID, _ *messagepbtypes.Message) error { return nil } diff --git a/codegen/generators/dsl-gen/generator/events.go b/codegen/generators/dsl-gen/generator/events.go index 91644b393..de1bfd5ad 100644 --- a/codegen/generators/dsl-gen/generator/events.go +++ b/codegen/generators/dsl-gen/generator/events.go @@ -111,7 +111,7 @@ func generateDslFunctionForEmittingRequestWithOrigin(eventNode *events.EventNode }), }), jen.Line(), // empty line - jen.Add(dslEmitMirEvent).Call( + jen.Add(dslEmitEvent).Call( jen.Id("m"), eventNode.Constructor().Call(eventNode.AllConstructorParameters().IDs()...), ), @@ -125,7 +125,7 @@ func generateDslFunctionForEmittingSimpleEvent(eventNode *events.EventNode, jenF funcParams = append(funcParams, eventNode.AllConstructorParameters().MirCode()...) jenFile.Func().Id(eventNode.Name()).Params(funcParams...).Block( - jen.Add(dslEmitMirEvent).Call( + jen.Add(dslEmitEvent).Call( jen.Id("m"), eventNode.Constructor().Call(eventNode.AllConstructorParameters().IDs()...), ), @@ -138,7 +138,7 @@ func generateDslFunctionForHandlingEvents(eventRoot *events.EventNode) error { for _, child := range eventRoot.Children() { err := generateRecursivelyDslFunctionsForHandlingEvents( /*eventNode*/ child, - /*uponEvent*/ dslUponMirEvent, + /*uponEvent*/ dslUponEvent, jenFileBySourcePackagePath, ) diff --git a/codegen/generators/dsl-gen/generator/generator.go b/codegen/generators/dsl-gen/generator/generator.go index 82a3401fb..a017d30d6 100644 --- a/codegen/generators/dsl-gen/generator/generator.go +++ b/codegen/generators/dsl-gen/generator/generator.go @@ -74,9 +74,9 @@ var ( // Note: using reflection to determine this package path would cause a build dependency cycle. dslPackagePath = "github.com/filecoin-project/mir/pkg/dsl" - dslModule jen.Code = jen.Qual(dslPackagePath, "Module") - dslContextID jen.Code = jen.Qual(dslPackagePath, "ContextID") - dslMirOrigin jen.Code = jen.Qual(dslPackagePath, "MirOrigin") - dslEmitMirEvent jen.Code = jen.Qual(dslPackagePath, "EmitMirEvent") - dslUponMirEvent jen.Code = jen.Qual(dslPackagePath, "UponMirEvent") + dslModule jen.Code = jen.Qual(dslPackagePath, "Module") + dslContextID jen.Code = jen.Qual(dslPackagePath, "ContextID") + dslMirOrigin jen.Code = jen.Qual(dslPackagePath, "MirOrigin") + dslEmitEvent jen.Code = jen.Qual(dslPackagePath, "EmitEvent") + dslUponEvent jen.Code = jen.Qual(dslPackagePath, "UponEvent") ) diff --git a/eventbuffer.go b/eventbuffer.go index 6c40245d4..1be94b5f6 100644 --- a/eventbuffer.go +++ b/eventbuffer.go @@ -5,8 +5,8 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/transportpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -44,16 +44,16 @@ func (eb *eventBuffer) Add(events *events.EventList) error { for event := iter.Next(); event != nil; event = iter.Next() { // Look up the corresponding module's buffer and add the event to it. - if buffer, ok := eb.buffers[t.ModuleID(event.DestModule).Top()]; ok { + if buffer, ok := eb.buffers[event.DestModule.Top()]; ok { buffer.PushBack(event) eb.totalEvents++ } else { // If there is no buffer for the event, check if it is a MessgeReceived event. isMessageReceivedEvent := false - e, isTransportEvent := event.Type.(*eventpb.Event_Transport) + e, isTransportEvent := event.Type.(*eventpbtypes.Event_Transport) if isTransportEvent { - _, isMessageReceivedEvent = e.Transport.Type.(*transportpb.Event_MessageReceived) + _, isMessageReceivedEvent = e.Transport.Type.(*transportpbtypes.Event_MessageReceived) } // If there is no buffer but the event is a MessageReceived event, diff --git a/node_test.go b/node_test.go index 0fab234a1..ef5ac50af 100644 --- a/node_test.go +++ b/node_test.go @@ -17,7 +17,7 @@ import ( "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/modules" "github.com/filecoin-project/mir/pkg/modules/mockmodules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/types" "github.com/filecoin-project/mir/pkg/util/sliceutil" ) @@ -270,7 +270,7 @@ func (c *consumer) ImplementsModule() {} // ApplyEvents increments a counter and sleeps for a given duration (set at module instantiation) // for each event in the given list. func (c *consumer) ApplyEvents(evts *events.EventList) (*events.EventList, error) { - evtsOut, err := modules.ApplyEventsSequentially(evts, func(event *eventpb.Event) (*events.EventList, error) { + evtsOut, err := modules.ApplyEventsSequentially(evts, func(event *eventpbtypes.Event) (*events.EventList, error) { atomic.AddUint64(&c.numProcessed, 1) time.Sleep(c.delay) return events.EmptyList(), nil diff --git a/pkg/batchfetcher/batchfetcher.go b/pkg/batchfetcher/batchfetcher.go index 58cde88f7..17ba12e03 100644 --- a/pkg/batchfetcher/batchfetcher.go +++ b/pkg/batchfetcher/batchfetcher.go @@ -13,15 +13,13 @@ import ( apppbevents "github.com/filecoin-project/mir/pkg/pb/apppb/events" availabilitypbdsl "github.com/filecoin-project/mir/pkg/pb/availabilitypb/dsl" apbtypes "github.com/filecoin-project/mir/pkg/pb/availabilitypb/types" - "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb" bfeventstypes "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb/events" + batchfetcherpbtypes "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb/types" checkpointpbtypes "github.com/filecoin-project/mir/pkg/pb/checkpointpb/types" - "github.com/filecoin-project/mir/pkg/pb/eventpb" eventpbdsl "github.com/filecoin-project/mir/pkg/pb/eventpb/dsl" eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" isspbdsl "github.com/filecoin-project/mir/pkg/pb/isspb/dsl" mppbdsl "github.com/filecoin-project/mir/pkg/pb/mempoolpb/dsl" - "github.com/filecoin-project/mir/pkg/pb/trantorpb" trantorpbdsl "github.com/filecoin-project/mir/pkg/pb/trantorpb/dsl" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" @@ -53,18 +51,13 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre // that have already been added to the clientProgress, i.e., that have already been delivered. // filterDuplicates modification performs the modification in-place, on the provided batch. // It is applied to each transaction batch immediately before delivering it to the application. - filterDuplicates := func(newOrderedBatch *batchfetcherpb.NewOrderedBatch) { + filterDuplicates := func(newOrderedBatch *batchfetcherpbtypes.NewOrderedBatch) { - newTxs := make([]*trantorpb.Transaction, 0, len(newOrderedBatch.Txs)) + newTxs := make([]*trantorpbtypes.Transaction, 0, len(newOrderedBatch.Txs)) for _, tx := range newOrderedBatch.Txs { - - // Convenience variables - clID := tt.ClientID(tx.ClientId) - txNo := tt.TxNo(tx.TxNo) - // Only keep transaction if it has not yet been delivered. - if clientProgress.Add(clID, txNo) { + if clientProgress.Add(tx.ClientId, tx.TxNo) { newTxs = append(newTxs, tx) } } @@ -77,8 +70,8 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre apppbdsl.UponNewEpoch(m, func(newEpochNr tt.EpochNr, protocolModule t.ModuleID) error { epochNr = newEpochNr output.Enqueue(&outputItem{ - event: apppbevents.NewEpoch(mc.Destination, epochNr, protocolModule).Pb(), - f: func(_ *eventpb.Event) { + event: apppbevents.NewEpoch(mc.Destination, epochNr, protocolModule), + f: func(_ *eventpbtypes.Event) { clientProgress.GarbageCollect() mppbdsl.NewEpoch(m, mc.Mempool, epochNr, trantorpbtypes.ClientProgressFromPb(clientProgress.Pb())) }, @@ -102,12 +95,12 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre // NOT on reception of the transaction payloads. // (Otherwise, delivering the transaction payloads from the availability module // in different order at different nodes would lead to inconsistencies). - f: func(e *eventpb.Event) { + f: func(e *eventpbtypes.Event) { // Casting event to the NewOrderedBatch type is safe, // because no other event type is ever saved in an output item created at certificate delivery. filterDuplicates(e. - Type.(*eventpb.Event_BatchFetcher).BatchFetcher. - Type.(*batchfetcherpb.Event_NewOrderedBatch).NewOrderedBatch) + Type.(*eventpbtypes.Event_BatchFetcher).BatchFetcher. + Type.(*batchfetcherpbtypes.Event_NewOrderedBatch).NewOrderedBatch) }, } output.Enqueue(&item) @@ -115,7 +108,7 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre if empty { // Skip fetching transactions for padding certificates. // Directly deliver an empty batch instead. - item.event = bfeventstypes.NewOrderedBatch(mc.Destination, []*trantorpbtypes.Transaction{}).Pb() + item.event = bfeventstypes.NewOrderedBatch(mc.Destination, []*trantorpbtypes.Transaction{}) output.Flush(m) } else { // If this is a proper certificate, request transactions from the availability layer. @@ -138,10 +131,10 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre // by the time the AppSnapshotRequest event is output and the hook function (added below) executed. // Forward the original event to the output. output.Enqueue(&outputItem{ - event: apppbevents.SnapshotRequest(mc.Destination, replyTo).Pb(), + event: apppbevents.SnapshotRequest(mc.Destination, replyTo), // At the time of forwarding, submit the client progress to the checkpointing protocol. - f: func(_ *eventpb.Event) { + f: func(_ *eventpbtypes.Event) { clientProgress.GarbageCollect() trantorpbdsl.ClientProgress(m, mc.Checkpoint.Then(t.ModuleID(fmt.Sprintf("%v", epochNr))), @@ -188,7 +181,7 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre // Note that not necessarily all transactions will be part of the final batch. // When the event leaves the output buffer, duplicates will be filtered out. - context.queueItem.event = bfeventstypes.NewOrderedBatch(mc.Destination, txs).Pb() + context.queueItem.event = bfeventstypes.NewOrderedBatch(mc.Destination, txs) output.Flush(m) return nil }) @@ -199,9 +192,10 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre }) // All other events simply pass through the batch fetcher unchanged (except their destination module). - dsl.UponOtherEvent(m, func(ev *eventpb.Event) error { + dsl.UponOtherEvent(m, func(ev *eventpbtypes.Event) error { + output.Enqueue(&outputItem{ - event: events.Redirect(eventpbtypes.EventFromPb(ev), mc.Destination).Pb(), + event: events.Redirect(ev, mc.Destination), }) output.Flush(m) return nil diff --git a/pkg/batchfetcher/events/events.go b/pkg/batchfetcher/events/events.go deleted file mode 100644 index 25f559770..000000000 --- a/pkg/batchfetcher/events/events.go +++ /dev/null @@ -1,25 +0,0 @@ -package events - -import ( - bfpb "github.com/filecoin-project/mir/pkg/pb/batchfetcherpb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/trantorpb" - t "github.com/filecoin-project/mir/pkg/types" -) - -// These are specific events that are not automatically generated but are necessary for the batchfetcher -// to queue them and treat them in order. - -// Event creates an eventpb.Event out of an batchfetcherpb.Event. -func Event(dest t.ModuleID, ev *bfpb.Event) *eventpb.Event { - return &eventpb.Event{ - DestModule: dest.Pb(), - Type: &eventpb.Event_BatchFetcher{ - BatchFetcher: ev, - }, - } -} - -func ClientProgress(dest t.ModuleID, progress *trantorpb.ClientProgress) *eventpb.Event { - return Event(dest, &bfpb.Event{Type: &bfpb.Event_ClientProgress{ClientProgress: progress}}) -} diff --git a/pkg/batchfetcher/outputqueue.go b/pkg/batchfetcher/outputqueue.go index 82fe7c387..16dd347ad 100644 --- a/pkg/batchfetcher/outputqueue.go +++ b/pkg/batchfetcher/outputqueue.go @@ -2,12 +2,12 @@ package batchfetcher import ( "github.com/filecoin-project/mir/pkg/dsl" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) type outputItem struct { - event *eventpb.Event - f func(e *eventpb.Event) + event *eventpbtypes.Event + f func(e *eventpbtypes.Event) } type outputQueue struct { diff --git a/pkg/crypto/crypto.go b/pkg/crypto/crypto.go index f7fbb1aef..ed151b3c8 100644 --- a/pkg/crypto/crypto.go +++ b/pkg/crypto/crypto.go @@ -7,11 +7,9 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/cryptopb" cryptopbevents "github.com/filecoin-project/mir/pkg/pb/cryptopb/events" cryptopbtypes "github.com/filecoin-project/mir/pkg/pb/cryptopb/types" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - t "github.com/filecoin-project/mir/pkg/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) type MirModule struct { @@ -26,14 +24,14 @@ func (c *MirModule) ApplyEvents(eventsIn *events.EventList) (*events.EventList, return modules.ApplyEventsConcurrently(eventsIn, c.ApplyEvent) } -func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) { +func (c *MirModule) ApplyEvent(event *eventpbtypes.Event) (*events.EventList, error) { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init return events.EmptyList(), nil - case *eventpb.Event_Crypto: + case *eventpbtypes.Event_Crypto: switch e := e.Crypto.Type.(type) { - case *cryptopb.Event_SignRequest: + case *cryptopbtypes.Event_SignRequest: // Compute a signature over the provided data and produce a SignResult event. signature, err := c.crypto.Sign(e.SignRequest.Data.Data) @@ -42,12 +40,12 @@ func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) } return events.ListOf( cryptopbevents.SignResult( - t.ModuleID(e.SignRequest.Origin.Module), + e.SignRequest.Origin.Module, signature, - cryptopbtypes.SignOriginFromPb(e.SignRequest.Origin), - ).Pb()), nil + e.SignRequest.Origin, + )), nil - case *cryptopb.Event_VerifySigs: + case *cryptopbtypes.Event_VerifySigs: // Verify a batch of node signatures // Convenience variables @@ -57,7 +55,7 @@ func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) // Verify each signature. for i, data := range verifyEvent.Data { - errors[i] = c.crypto.Verify(data.Data, verifyEvent.Signatures[i], t.NodeID(verifyEvent.NodeIds[i])) + errors[i] = c.crypto.Verify(data.Data, verifyEvent.Signatures[i], verifyEvent.NodeIds[i]) if errors[i] != nil { allOK = false } @@ -65,26 +63,26 @@ func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) // Return result event return events.ListOf(cryptopbevents.SigsVerified( - t.ModuleID(verifyEvent.Origin.Module), - cryptopbtypes.SigVerOriginFromPb(verifyEvent.Origin), - t.NodeIDSlice(verifyEvent.NodeIds), + verifyEvent.Origin.Module, + verifyEvent.Origin, + verifyEvent.NodeIds, errors, allOK, - ).Pb()), nil + )), nil - case *cryptopb.Event_VerifySig: + case *cryptopbtypes.Event_VerifySig: err := c.crypto.Verify( e.VerifySig.Data.Data, e.VerifySig.Signature, - t.NodeID(e.VerifySig.NodeId), + e.VerifySig.NodeId, ) return events.ListOf(cryptopbevents.SigVerified( - t.ModuleID(e.VerifySig.Origin.Module), - cryptopbtypes.SigVerOriginFromPb(e.VerifySig.Origin), - t.NodeID(e.VerifySig.NodeId), + e.VerifySig.Origin.Module, + e.VerifySig.Origin, + e.VerifySig.NodeId, err, - ).Pb()), nil + )), nil default: return nil, es.Errorf("unexpected type of crypto event: %T", e) diff --git a/pkg/crypto/hasher.go b/pkg/crypto/hasher.go index c60198737..e7ca3e1b2 100644 --- a/pkg/crypto/hasher.go +++ b/pkg/crypto/hasher.go @@ -7,11 +7,9 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/hasherpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" hasherpbevents "github.com/filecoin-project/mir/pkg/pb/hasherpb/events" hasherpbtypes "github.com/filecoin-project/mir/pkg/pb/hasherpb/types" - t "github.com/filecoin-project/mir/pkg/types" ) type HashImpl interface { @@ -35,27 +33,27 @@ func (hasher *Hasher) ApplyEvents(eventsIn *events.EventList) (*events.EventList return modules.ApplyEventsConcurrently(eventsIn, hasher.ApplyEvent) } -func (hasher *Hasher) ApplyEvent(event *eventpb.Event) (*events.EventList, error) { +func (hasher *Hasher) ApplyEvent(event *eventpbtypes.Event) (*events.EventList, error) { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init return events.EmptyList(), nil - case *eventpb.Event_Hasher: + case *eventpbtypes.Event_Hasher: switch e := e.Hasher.Type.(type) { - case *hasherpb.Event_Request: + case *hasherpbtypes.Event_Request: // Return all computed digests in one common event. return events.ListOf(hasherpbevents.Result( - t.ModuleID(e.Request.Origin.Module), + e.Request.Origin.Module, hasher.computeDigests(e.Request.Data), - hasherpbtypes.HashOriginFromPb(e.Request.Origin), - ).Pb()), nil - case *hasherpb.Event_RequestOne: + e.Request.Origin, + )), nil + case *hasherpbtypes.Event_RequestOne: // Return a single computed digests. return events.ListOf(hasherpbevents.ResultOne( - t.ModuleID(e.RequestOne.Origin.Module), - hasher.computeDigests([]*hasherpb.HashData{e.RequestOne.Data})[0], - hasherpbtypes.HashOriginFromPb(e.RequestOne.Origin), - ).Pb()), nil + e.RequestOne.Origin.Module, + hasher.computeDigests([]*hasherpbtypes.HashData{e.RequestOne.Data})[0], + e.RequestOne.Origin, + )), nil default: return nil, es.Errorf("unexpected hasher event type: %T", e) } @@ -65,7 +63,7 @@ func (hasher *Hasher) ApplyEvent(event *eventpb.Event) (*events.EventList, error } } -func (hasher *Hasher) computeDigests(allData []*hasherpb.HashData) [][]byte { +func (hasher *Hasher) computeDigests(allData []*hasherpbtypes.HashData) [][]byte { // Create a slice for the resulting digests containing one element for each data item to be hashed. digests := make([][]byte, len(allData)) diff --git a/pkg/deploytest/faketransport.go b/pkg/deploytest/faketransport.go index 522bcc43e..ef7caded2 100644 --- a/pkg/deploytest/faketransport.go +++ b/pkg/deploytest/faketransport.go @@ -21,8 +21,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/net" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" @@ -46,10 +45,10 @@ func (fl *FakeLink) ApplyEvents( for event := iter.Next(); event != nil; event = iter.Next() { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init - case *eventpb.Event_Transport: - switch e := transportpbtypes.EventFromPb(e.Transport).Type.(type) { + case *eventpbtypes.Event_Transport: + switch e := e.Transport.Type.(type) { case *transportpbtypes.Event_SendMessage: for _, destID := range e.SendMessage.Destinations { if destID == fl.Source { @@ -63,13 +62,13 @@ func (fl *FakeLink) ApplyEvents( eventsOut := fl.FakeTransport.NodeSinks[fl.Source] go func() { select { - case eventsOut <- events.ListOf(receivedEvent.Pb()): + case eventsOut <- events.ListOf(receivedEvent): case <-ctx.Done(): } }() } else { // Send message to another node. - if err := fl.Send(destID, e.SendMessage.Msg.Pb()); err != nil { + if err := fl.Send(destID, e.SendMessage.Msg); err != nil { fl.FakeTransport.logger.Log(logging.LevelWarn, "failed to send a message", "err", err) } } @@ -88,7 +87,7 @@ func (fl *FakeLink) ApplyEvents( // The ImplementsModule method only serves the purpose of indicating that this is a Module and must not be called. func (fl *FakeLink) ImplementsModule() {} -func (fl *FakeLink) Send(dest t.NodeID, msg *messagepb.Message) error { +func (fl *FakeLink) Send(dest t.NodeID, msg *messagepbtypes.Message) error { fl.FakeTransport.Send(fl.Source, dest, msg) return nil } @@ -129,10 +128,13 @@ func NewFakeTransport(nodeIDsWeight map[t.NodeID]types.VoteWeight) *FakeTranspor } } -func (ft *FakeTransport) Send(source, dest t.NodeID, msg *messagepb.Message) { +func (ft *FakeTransport) Send(source, dest t.NodeID, msg *messagepbtypes.Message) { + // ensure (de)serialization causes no problem + msg = messagepbtypes.MessageFromPb(msg.Pb()) + select { case ft.Buffers[source][dest] <- events.ListOf( - transportpbevents.MessageReceived(t.ModuleID(msg.DestModule), source, messagepbtypes.MessageFromPb(msg)).Pb(), + transportpbevents.MessageReceived(msg.DestModule, source, msg), ): default: fmt.Printf("Warning: Dropping message %T from %s to %s\n", msg.Type, source, dest) diff --git a/pkg/deploytest/simtimer.go b/pkg/deploytest/simtimer.go index f11522102..a6c7aea9f 100644 --- a/pkg/deploytest/simtimer.go +++ b/pkg/deploytest/simtimer.go @@ -12,7 +12,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/testsim" "github.com/filecoin-project/mir/pkg/timer/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" @@ -40,30 +40,26 @@ func (m *simTimerModule) EventsOut() <-chan *events.EventList { } func (m *simTimerModule) ApplyEvents(ctx context.Context, eventList *events.EventList) error { - _, err := modules.ApplyEventsSequentially(eventList, func(e *eventpb.Event) (*events.EventList, error) { + _, err := modules.ApplyEventsSequentially(eventList, func(e *eventpbtypes.Event) (*events.EventList, error) { return events.EmptyList(), m.applyEvent(ctx, e) }) return err } -func (m *simTimerModule) applyEvent(ctx context.Context, e *eventpb.Event) error { +func (m *simTimerModule) applyEvent(ctx context.Context, e *eventpbtypes.Event) error { switch e := e.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init - case *eventpb.Event_Timer: + case *eventpbtypes.Event_Timer: switch e := e.Timer.Type.(type) { - case *eventpb.TimerEvent_Delay: + case *eventpbtypes.TimerEvent_Delay: evtsOut := events.ListOf(e.Delay.EventsToDelay...) - d := types.Duration(e.Delay.Delay) - m.delay(ctx, evtsOut, d) - case *eventpb.TimerEvent_Repeat: + m.delay(ctx, evtsOut, e.Delay.Delay) + case *eventpbtypes.TimerEvent_Repeat: evtsOut := events.ListOf(e.Repeat.EventsToRepeat...) - d := types.Duration(e.Repeat.Delay) - retIdx := tt.RetentionIndex(e.Repeat.RetentionIndex) - m.repeat(ctx, evtsOut, d, retIdx) - case *eventpb.TimerEvent_GarbageCollect: - retIdx := tt.RetentionIndex(e.GarbageCollect.RetentionIndex) - m.garbageCollect(retIdx) + m.repeat(ctx, evtsOut, e.Repeat.Delay, e.Repeat.RetentionIndex) + case *eventpbtypes.TimerEvent_GarbageCollect: + m.garbageCollect(e.GarbageCollect.RetentionIndex) default: return es.Errorf("unexpected type of Timer sub-event: %T", e) } diff --git a/pkg/deploytest/simtransport.go b/pkg/deploytest/simtransport.go index 2e0107293..530d1e139 100644 --- a/pkg/deploytest/simtransport.go +++ b/pkg/deploytest/simtransport.go @@ -16,11 +16,11 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" "github.com/filecoin-project/mir/pkg/net" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/pb/messagepb" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" - "github.com/filecoin-project/mir/pkg/pb/transportpb" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" + transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" "github.com/filecoin-project/mir/pkg/testsim" t "github.com/filecoin-project/mir/pkg/types" @@ -103,7 +103,7 @@ func (m *simTransportModule) Stop() { close(m.stopChan) } -func (m *simTransportModule) Send(dest t.NodeID, msg *messagepb.Message) error { +func (m *simTransportModule) Send(dest t.NodeID, msg *messagepbtypes.Message) error { m.sendMessage(msg, dest) return nil } @@ -121,20 +121,20 @@ func (m *simTransportModule) WaitFor(_ int) error { } func (m *simTransportModule) ApplyEvents(ctx context.Context, eventList *events.EventList) error { - _, err := modules.ApplyEventsSequentially(eventList, func(e *eventpb.Event) (*events.EventList, error) { + _, err := modules.ApplyEventsSequentially(eventList, func(e *eventpbtypes.Event) (*events.EventList, error) { return events.EmptyList(), m.applyEvent(ctx, e) }) return err } -func (m *simTransportModule) applyEvent(ctx context.Context, e *eventpb.Event) error { +func (m *simTransportModule) applyEvent(ctx context.Context, e *eventpbtypes.Event) error { switch e := e.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // do nothing - case *eventpb.Event_Transport: + case *eventpbtypes.Event_Transport: switch e := e.Transport.Type.(type) { - case *transportpb.Event_SendMessage: - targets := t.NodeIDSlice(e.SendMessage.Destinations) + case *transportpbtypes.Event_SendMessage: + targets := e.SendMessage.Destinations m.multicastMessage(ctx, e.SendMessage.Msg, targets) default: return es.Errorf("unexpected transport event type: %T", e) @@ -146,13 +146,13 @@ func (m *simTransportModule) applyEvent(ctx context.Context, e *eventpb.Event) e return nil } -func (m *simTransportModule) multicastMessage(_ context.Context, msg *messagepb.Message, targets []t.NodeID) { +func (m *simTransportModule) multicastMessage(_ context.Context, msg *messagepbtypes.Message, targets []t.NodeID) { for _, target := range targets { m.sendMessage(msg, target) } } -func (m *simTransportModule) sendMessage(msg *messagepb.Message, target t.NodeID) { +func (m *simTransportModule) sendMessage(msg *messagepbtypes.Message, target t.NodeID) { proc := m.SimTransport.Simulation.Spawn() done := make(chan struct{}) @@ -177,7 +177,7 @@ func (m *simTransportModule) sendMessage(msg *messagepb.Message, target t.NodeID if !ok { panic(fmt.Sprintf("Destination node does not exist: %v", target)) } - proc.Send(destModule.simChan, message{m.id, target, msg}) + proc.Send(destModule.simChan, message{m.id, target, msg.Pb()}) proc.Exit() }() @@ -199,13 +199,14 @@ func (m *simTransportModule) handleOutChan(proc *testsim.Process) { return } msg := v.(message) + msgPayload := messagepbtypes.MessageFromPb(msg.message) - destModule := t.ModuleID(msg.message.DestModule) + destModule := msgPayload.DestModule eventList := events.ListOf(transportpbevents.MessageReceived( destModule, msg.from, - messagepbtypes.MessageFromPb(msg.message), - ).Pb()) + msgPayload, + )) select { case eventsOut := <-m.outChan: @@ -219,7 +220,9 @@ func (m *simTransportModule) handleOutChan(proc *testsim.Process) { } type message struct { - from t.NodeID - to t.NodeID + from t.NodeID + to t.NodeID + + // use protobuf-encoded message to ensure (de)serialization causes no problems message *messagepb.Message } diff --git a/pkg/deploytest/simulation.go b/pkg/deploytest/simulation.go index afb255a94..5ef13b9c8 100644 --- a/pkg/deploytest/simulation.go +++ b/pkg/deploytest/simulation.go @@ -13,7 +13,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/testsim" t "github.com/filecoin-project/mir/pkg/types" ) @@ -25,7 +25,7 @@ type Simulation struct { } // EventDelayFn defines a function to provide event processing delay. -type EventDelayFn func(e *eventpb.Event) time.Duration +type EventDelayFn func(e *eventpbtypes.Event) time.Duration func NewSimulation(rnd *rand.Rand, nodeIDs []t.NodeID, delayFn EventDelayFn) *Simulation { s := &Simulation{ @@ -70,7 +70,7 @@ func (n *SimNode) SendEvents(proc *testsim.Process, eventList *events.EventList) it := eventList.Iterator() for e := it.Next(); e != nil; e = it.Next() { - m := t.ModuleID(e.DestModule).Top() + m := e.DestModule.Top() if eventsMap[m] == nil { eventsMap[m] = events.EmptyList() moduleIDs = append(moduleIDs, m) diff --git a/pkg/deploytest/testreplica.go b/pkg/deploytest/testreplica.go index 4c57a4f1e..61478ea28 100644 --- a/pkg/deploytest/testreplica.go +++ b/pkg/deploytest/testreplica.go @@ -186,7 +186,7 @@ func (tr *TestReplica) submitFakeTransactions(ctx context.Context, node *mir.Nod TxNo: tt.TxNo(i), Data: []byte(fmt.Sprintf("Transaction %d", i)), }}, - ).Pb()) + )) if err := node.InjectEvents(ctx, eventList); err != nil { tr.Config.Logger.Log(logging.LevelError, "failed to inject events", "err", err) diff --git a/pkg/dsl/dslmodule.go b/pkg/dsl/dslmodule.go index 3e1ce80e6..f97994f8c 100644 --- a/pkg/dsl/dslmodule.go +++ b/pkg/dsl/dslmodule.go @@ -8,7 +8,6 @@ import ( cs "github.com/filecoin-project/mir/pkg/contextstore" "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" t "github.com/filecoin-project/mir/pkg/types" "github.com/filecoin-project/mir/pkg/util/reflectutil" @@ -16,8 +15,8 @@ import ( type dslModuleImpl struct { moduleID t.ModuleID - defaultEventHandler func(ev *eventpb.Event) error - eventHandlers map[reflect.Type][]func(ev *eventpb.Event) error + defaultEventHandler func(ev *eventpbtypes.Event) error + eventHandlers map[reflect.Type][]func(ev *eventpbtypes.Event) error stateUpdateHandlers []func() error stateUpdateBatchHandlers []func() error outputEvents *events.EventList @@ -52,7 +51,7 @@ func NewModule(moduleID t.ModuleID) Module { return &dslModuleImpl{ moduleID: moduleID, defaultEventHandler: failExceptForInitAndTransport, - eventHandlers: make(map[reflect.Type][]func(ev *eventpb.Event) error), + eventHandlers: make(map[reflect.Type][]func(ev *eventpbtypes.Event) error), outputEvents: &events.EventList{}, contextStore: cs.NewSequentialContextStore[any](), eventCleanupContextIDs: make(map[ContextID]struct{}), @@ -71,32 +70,18 @@ func (m *dslModuleImpl) ModuleID() t.ModuleID { // UponEvent registers an event handler for module m. // This event handler will be called every time an event of type EvWrapper is received. -// NB: This function works with the (legacy) protoc-generated types and is likely to be -// removed in the future, with UponMirEvent taking its place. -func UponEvent[EvWrapper eventpb.Event_TypeWrapper[Ev], Ev any](m Module, handler func(ev *Ev) error) { - evWrapperType := reflectutil.TypeOf[EvWrapper]() - - m.DslHandle().impl.eventHandlers[evWrapperType] = append(m.DslHandle().impl.eventHandlers[evWrapperType], - func(ev *eventpb.Event) error { - return handler(ev.Type.(EvWrapper).Unwrap()) - }) -} - -// UponMirEvent registers an event handler for module m. -// This event handler will be called every time an event of type EvWrapper is received. // NB: this function works with the Mir-generated types. // For the (legacy) protoc-generated types, UponEvent can be used. -func UponMirEvent[EvWrapper eventpbtypes.Event_TypeWrapper[Ev], Ev any](m Module, handler func(ev *Ev) error) { - var zeroW EvWrapper - evWrapperType := zeroW.MirReflect().PbType() +func UponEvent[EvWrapper eventpbtypes.Event_TypeWrapper[Ev], Ev any](m Module, handler func(ev *Ev) error) { + evWrapperType := reflectutil.TypeOf[EvWrapper]() m.DslHandle().impl.eventHandlers[evWrapperType] = append(m.DslHandle().impl.eventHandlers[evWrapperType], - func(ev *eventpb.Event) error { - return handler(eventpbtypes.EventFromPb(ev).Type.(EvWrapper).Unwrap()) + func(ev *eventpbtypes.Event) error { + return handler(ev.Type.(EvWrapper).Unwrap()) }) } -func UponOtherEvent(m Module, handler func(ev *eventpb.Event) error) { +func UponOtherEvent(m Module, handler func(ev *eventpbtypes.Event) error) { m.DslHandle().impl.defaultEventHandler = handler } @@ -159,19 +144,10 @@ func (h Handle) RecoverAndCleanupContext(id ContextID) any { func (m *dslModuleImpl) ImplementsModule() {} // EmitEvent adds the event to the queue of output events -// NB: This function works with the (legacy) protoc-generated types and is likely to be -// removed in the future, with EmitMirEvent taking its place. -func EmitEvent(m Module, ev *eventpb.Event) { +func EmitEvent(m Module, ev *eventpbtypes.Event) { m.DslHandle().impl.outputEvents.PushBack(ev) } -// EmitMirEvent adds the event to the queue of output events -// NB: this function works with the Mir-generated types. -// For the (legacy) protoc-generated types, EmitEvent can be used. -func EmitMirEvent(m Module, ev *eventpbtypes.Event) { - m.DslHandle().impl.outputEvents.PushBack(ev.Pb()) -} - // ApplyEvents applies a list of input events to the module, making it advance its state // and returns a (potentially empty) list of output events that the application of the input events results in. func (m *dslModuleImpl) ApplyEvents(evs *events.EventList) (*events.EventList, error) { @@ -230,8 +206,8 @@ func (m *dslModuleImpl) ApplyEvents(evs *events.EventList) (*events.EventList, e // The failExceptForInit returns an error for every received event type except for Init. // For convenience, if this is used as the default event handler, // it is not considered an error to not have handlers for the Init event. -func failExceptForInit(ev *eventpb.Event) error { //nolint - if reflect.TypeOf(ev.Type) == reflectutil.TypeOf[*eventpb.Event_Init]() { +func failExceptForInit(ev *eventpbtypes.Event) error { //nolint + if reflect.TypeOf(ev.Type) == reflectutil.TypeOf[*eventpbtypes.Event_Init]() { return nil } return es.Errorf("unknown event type '%T'", ev.Type) @@ -241,8 +217,8 @@ func failExceptForInit(ev *eventpb.Event) error { //nolint // that if the module does not tolerate a transport event, it gracefully // ignores it. This prevents external nodes from crashing the node by sending // transport events to modules that do not tolerate it. -func failExceptForInitAndTransport(ev *eventpb.Event) error { - if reflect.TypeOf(ev.Type) == reflectutil.TypeOf[*eventpb.Event_Transport]() { +func failExceptForInitAndTransport(ev *eventpbtypes.Event) error { + if reflect.TypeOf(ev.Type) == reflectutil.TypeOf[*eventpbtypes.Event_Transport]() { return nil } diff --git a/pkg/dsl/events.go b/pkg/dsl/events.go index d735aec7d..8471d5c92 100644 --- a/pkg/dsl/events.go +++ b/pkg/dsl/events.go @@ -2,17 +2,17 @@ package dsl import ( dslpbtypes "github.com/filecoin-project/mir/pkg/pb/dslpb/types" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) -// Origin creates a dslpb.Origin protobuf. +// Origin creates a dslpbtypes.Origin protobuf. func Origin(contextID ContextID) *dslpbtypes.Origin { return &dslpbtypes.Origin{ ContextID: contextID.Pb(), } } -// MirOrigin creates a dslpb.Origin protobuf. +// MirOrigin creates a dslpbtypes.Origin protobuf. func MirOrigin(contextID ContextID) *dslpbtypes.Origin { return &dslpbtypes.Origin{ ContextID: contextID.Pb(), @@ -21,7 +21,7 @@ func MirOrigin(contextID ContextID) *dslpbtypes.Origin { // UponInit invokes handler when the module is initialized. func UponInit(m Module, handler func() error) { - UponEvent[*eventpb.Event_Init](m, func(ev *eventpb.Init) error { + UponEvent[*eventpbtypes.Event_Init](m, func(ev *eventpbtypes.Init) error { return handler() }) } diff --git a/pkg/dsl/test/dslmodule_test.go b/pkg/dsl/test/dslmodule_test.go index c48fb4b0e..7c5b82114 100644 --- a/pkg/dsl/test/dslmodule_test.go +++ b/pkg/dsl/test/dslmodule_test.go @@ -6,6 +6,7 @@ import ( "strconv" "testing" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" testerpbevents "github.com/filecoin-project/mir/pkg/pb/testerpb/events" es "github.com/go-errors/errors" @@ -16,11 +17,9 @@ import ( "github.com/filecoin-project/mir/pkg/dsl" "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/cryptopb" cryptopbdsl "github.com/filecoin-project/mir/pkg/pb/cryptopb/dsl" cryptopbevents "github.com/filecoin-project/mir/pkg/pb/cryptopb/events" cryptopbtypes "github.com/filecoin-project/mir/pkg/pb/cryptopb/types" - "github.com/filecoin-project/mir/pkg/pb/eventpb" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" "github.com/filecoin-project/mir/pkg/types" @@ -81,9 +80,9 @@ func newSimpleTestingModule(mc *simpleModuleConfig) modules.PassiveModule { dsl.UponStateUpdates(m, func() error { if len(testingStrings) >= 3 { - dsl.EmitEvent(m, &eventpb.Event{ + dsl.EmitEvent(m, &eventpbtypes.Event{ DestModule: "reports", - Type: &eventpb.Event_TestingString{ + Type: &eventpbtypes.Event_TestingString{ TestingString: wrapperspb.String(fmt.Sprintf("Collected at least 3 testing strings: %v", testingStrings)), }, @@ -100,9 +99,9 @@ func newSimpleTestingModule(mc *simpleModuleConfig) modules.PassiveModule { dsl.UponStateUpdates(m, func() error { for uintsSum >= lastReportedUint+100 { lastReportedUint += 100 - dsl.EmitEvent(m, &eventpb.Event{ + dsl.EmitEvent(m, &eventpbtypes.Event{ DestModule: "reports", - Type: &eventpb.Event_TestingUint{ + Type: &eventpbtypes.Event_TestingUint{ TestingUint: wrapperspb.UInt64(lastReportedUint), }, }) @@ -172,15 +171,15 @@ func TestDslModule_ApplyEvents(t *testing.T) { eventsIn: events.ListOf(transportpbevents.SendMessage( mc.Self, &messagepbtypes.Message{}, - []types.NodeID{}).Pb(), + []types.NodeID{}), ), eventsOut: events.EmptyList(), err: nil, }, "test unknown event type": { - eventsIn: events.ListOf(testerpbevents.Tester(mc.Self).Pb()), + eventsIn: events.ListOf(testerpbevents.Tester(mc.Self)), eventsOut: events.EmptyList(), - err: errors.New("unknown event type '*eventpb.Event_Tester'"), + err: errors.New("unknown event type '*eventpbtypes.Event_Tester'"), }, "test failed condition": { eventsIn: events.ListOf(events.TestingUint(mc.Self, 2000)), @@ -318,22 +317,22 @@ func TestDslModule_ContextRecoveryAndCleanup(t *testing.T) { assert.Equal(t, 1, eventsOut.Len()) iter := eventsOut.Iterator() - signOrigin := iter.Next().Type.(*eventpb.Event_Crypto).Crypto.Type.(*cryptopb.Event_SignRequest).SignRequest.Origin + signOrigin := iter.Next().Type.(*eventpbtypes.Event_Crypto).Crypto.Type.(*cryptopbtypes.Event_SignRequest).SignRequest.Origin eventsOut, err = m.ApplyEvents(events.ListOf(cryptopbevents.SignResult( mc.Self, []byte("world"), - cryptopbtypes.SignOriginFromPb(signOrigin), - ).Pb())) + signOrigin, + ))) assert.Nil(t, err) - assert.Equal(t, []*eventpb.Event{events.TestingString(mc.Signed, "hello: world")}, eventsOut.Slice()) + assert.Equal(t, []*eventpbtypes.Event{events.TestingString(mc.Signed, "hello: world")}, eventsOut.Slice()) }, "response without request": func(mc *contextTestingModuleModuleConfig, m dsl.Module) { assert.Panics(t, func() { // Context with id 42 doesn't exist. The module should panic. _, _ = m.ApplyEvents(events.ListOf( - cryptopbevents.SignResult(mc.Self, []byte{}, DslSignOrigin(mc.Self, dsl.ContextID(42))).Pb())) + cryptopbevents.SignResult(mc.Self, []byte{}, DslSignOrigin(mc.Self, dsl.ContextID(42))))) }) }, @@ -343,19 +342,19 @@ func TestDslModule_ContextRecoveryAndCleanup(t *testing.T) { assert.Equal(t, 1, eventsOut.Len()) iter := eventsOut.Iterator() - signOrigin := cryptopbtypes.SignOriginFromPb(iter.Next().Type.(*eventpb.Event_Crypto).Crypto.Type.(*cryptopb.Event_SignRequest).SignRequest.Origin) + signOrigin := iter.Next().Type.(*eventpbtypes.Event_Crypto).Crypto.Type.(*cryptopbtypes.Event_SignRequest).SignRequest.Origin eventsOut, err = m.ApplyEvents(events.ListOf( - cryptopbevents.SignResult(mc.Self, []byte("world"), signOrigin).Pb(), + cryptopbevents.SignResult(mc.Self, []byte("world"), signOrigin), )) assert.Nil(t, err) - assert.Equal(t, []*eventpb.Event{events.TestingString(mc.Signed, "hello: world")}, eventsOut.Slice()) + assert.Equal(t, []*eventpbtypes.Event{events.TestingString(mc.Signed, "hello: world")}, eventsOut.Slice()) assert.Panics(t, func() { // This reply is sent for the second time. // The context should already be disposed of and the module should panic. _, _ = m.ApplyEvents(events.ListOf( - cryptopbevents.SignResult(mc.Self, []byte("world"), signOrigin).Pb()), + cryptopbevents.SignResult(mc.Self, []byte("world"), signOrigin)), ) }) }, @@ -366,10 +365,10 @@ func TestDslModule_ContextRecoveryAndCleanup(t *testing.T) { assert.Equal(t, 1, eventsOut.Len()) iter := eventsOut.Iterator() - sigVerEvent := iter.Next().Type.(*eventpb.Event_Crypto).Crypto.Type.(*cryptopb.Event_VerifySigs).VerifySigs + sigVerEvent := iter.Next().Type.(*eventpbtypes.Event_Crypto).Crypto.Type.(*cryptopbtypes.Event_VerifySigs).VerifySigs sigVerNodes := sigVerEvent.NodeIds assert.Equal(t, 8, len(sigVerNodes)) - sigVerOrigin := cryptopbtypes.SigVerOriginFromPb(sigVerEvent.Origin) + sigVerOrigin := sigVerEvent.Origin // send some unrelated events to make sure the context is preserved and does not get overwritten _, err = m.ApplyEvents(events.ListOf(events.TestingString(mc.Self, "hello"))) @@ -384,15 +383,15 @@ func TestDslModule_ContextRecoveryAndCleanup(t *testing.T) { sigsVerifiedEvent := cryptopbevents.SigsVerified( /*destModule*/ mc.Self, /*origin*/ sigVerOrigin, - /*nodeIDs*/ types.NodeIDSlice(sigVerNodes), + /*nodeIDs*/ sigVerNodes, /*errors*/ sliceutil.Repeat(nilErr, 8), /*allOk*/ true, - ).Pb() + ) eventsOut, err = m.ApplyEvents(events.ListOf(sigsVerifiedEvent)) assert.Nil(t, err) - var expectedResponse []*eventpb.Event + var expectedResponse []*eventpbtypes.Event for i := 0; i < 8; i++ { expectedResponse = append(expectedResponse, events.TestingString(mc.Verified, fmt.Sprintf("8: %v verified", i))) } @@ -441,13 +440,13 @@ func EmitTestingUint(m dsl.Module, dest types.ModuleID, u uint64) { } func UponTestingString(m dsl.Module, handler func(s string) error) { - dsl.UponEvent[*eventpb.Event_TestingString](m, func(ev *wrapperspb.StringValue) error { + dsl.UponEvent[*eventpbtypes.Event_TestingString](m, func(ev *wrapperspb.StringValue) error { return handler(ev.Value) }) } func UponTestingUint(m dsl.Module, handler func(u uint64) error) { - dsl.UponEvent[*eventpb.Event_TestingUint](m, func(ev *wrapperspb.UInt64Value) error { + dsl.UponEvent[*eventpbtypes.Event_TestingUint](m, func(ev *wrapperspb.UInt64Value) error { return handler(ev.Value) }) } diff --git a/pkg/eventlog/eventwritergzip.go b/pkg/eventlog/eventwritergzip.go index 6175bab4c..9ce7f6d97 100644 --- a/pkg/eventlog/eventwritergzip.go +++ b/pkg/eventlog/eventwritergzip.go @@ -11,8 +11,11 @@ import ( "google.golang.org/protobuf/proto" "github.com/filecoin-project/mir/pkg/logging" + "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/pb/recordingpb" t "github.com/filecoin-project/mir/pkg/types" + "github.com/filecoin-project/mir/pkg/util/sliceutil" ) type gzipWriter struct { @@ -49,7 +52,7 @@ func (w *gzipWriter) Write(record EventRecord) error { return writeRecordedEvent(gzWriter, &recordingpb.Entry{ NodeId: w.nodeID.Pb(), Time: record.Time, - Events: record.Events.Slice(), + Events: sliceutil.Transform(record.Events.Slice(), func(_ int, ev *eventpbtypes.Event) *eventpb.Event { return ev.Pb() }), }) } diff --git a/pkg/eventlog/eventwritersqlite.go b/pkg/eventlog/eventwritersqlite.go index faa488d9e..ea6bd2fe7 100644 --- a/pkg/eventlog/eventwritersqlite.go +++ b/pkg/eventlog/eventwritersqlite.go @@ -47,7 +47,7 @@ func (w sqliteWriter) Write(record EventRecord) error { // For each incoming event iter := record.Events.Iterator() for event := iter.Next(); event != nil; event = iter.Next() { - jsonData, err := protojson.Marshal(event) + jsonData, err := protojson.Marshal(event.Pb()) if err != nil { return err } diff --git a/pkg/eventlog/newfilepolicy.go b/pkg/eventlog/newfilepolicy.go index 4dc24071c..6642ce7db 100644 --- a/pkg/eventlog/newfilepolicy.go +++ b/pkg/eventlog/newfilepolicy.go @@ -2,29 +2,29 @@ package eventlog import ( "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/apppb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + apppbtypes "github.com/filecoin-project/mir/pkg/pb/apppb/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" t "github.com/filecoin-project/mir/pkg/types" ) // Returns a file that splits an record slice into multiple slices // every time a an event eventpb.Event_NewLogFile is found func EventNewEpochLogger(appModuleID t.ModuleID) func(record EventRecord) []EventRecord { - eventNewLogFileLogger := func(event *eventpb.Event) bool { - appEvent, ok := event.Type.(*eventpb.Event_App) + eventNewLogFileLogger := func(event *eventpbtypes.Event) bool { + appEvent, ok := event.Type.(*eventpbtypes.Event_App) if !ok { return false } - _, ok = appEvent.App.Type.(*apppb.Event_NewEpoch) - return ok && t.ModuleID(event.DestModule) == appModuleID + _, ok = appEvent.App.Type.(*apppbtypes.Event_NewEpoch) + return ok && event.DestModule == appModuleID } return EventTrackerLogger(eventNewLogFileLogger) } // eventTrackerLogger returns a function that tracks every single event of EventRecord and // creates a new file for every event such that newFile(event) = True -func EventTrackerLogger(newFile func(event *eventpb.Event) bool) func(time EventRecord) []EventRecord { +func EventTrackerLogger(newFile func(event *eventpbtypes.Event) bool) func(time EventRecord) []EventRecord { return func(record EventRecord) []EventRecord { var result []EventRecord // Create a variable to hold the current chunk diff --git a/pkg/eventlog/recorder.go b/pkg/eventlog/recorder.go index 5de30b789..180de5423 100644 --- a/pkg/eventlog/recorder.go +++ b/pkg/eventlog/recorder.go @@ -21,7 +21,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -30,7 +30,7 @@ type EventRecord struct { Time int64 } -func (record *EventRecord) Filter(predicate func(event *eventpb.Event) bool) EventRecord { +func (record *EventRecord) Filter(predicate func(event *eventpbtypes.Event) bool) EventRecord { filtered := &events.EventList{} iter := record.Events.Iterator() @@ -55,7 +55,7 @@ type Recorder struct { timeSource func() int64 newDests func(EventRecord) []EventRecord path string - filter func(event *eventpb.Event) bool + filter func(event *eventpbtypes.Event) bool newEventWriter func(dest string, nodeID t.NodeID, logger logging.Logger) (EventWriter, error) syncWrite bool @@ -93,7 +93,7 @@ func NewRecorder( fileCount: 1, newDests: OneFileLogger(), path: path, - filter: func(event *eventpb.Event) bool { + filter: func(event *eventpbtypes.Event) bool { // Record all events by default. return true }, @@ -113,7 +113,7 @@ func NewRecorder( case eventFilterOpt: // Apply the given filter on top of the existing one. oldFilter := i.filter - i.filter = func(e *eventpb.Event) bool { + i.filter = func(e *eventpbtypes.Event) bool { return oldFilter(e) && v(e) } case eventWriterOpt: diff --git a/pkg/eventlog/recorderopts.go b/pkg/eventlog/recorderopts.go index 0e079ba50..f3d932950 100644 --- a/pkg/eventlog/recorderopts.go +++ b/pkg/eventlog/recorderopts.go @@ -2,7 +2,7 @@ package eventlog import ( "github.com/filecoin-project/mir/pkg/logging" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -42,9 +42,9 @@ func FileSplitterOpt(splitter func(EventRecord) []EventRecord) RecorderOpt { return fileSplitterOpt(splitter) } -type eventFilterOpt func(*eventpb.Event) bool +type eventFilterOpt func(*eventpbtypes.Event) bool -func EventFilterOpt(filter func(event *eventpb.Event) bool) RecorderOpt { +func EventFilterOpt(filter func(event *eventpbtypes.Event) bool) RecorderOpt { return eventFilterOpt(filter) } diff --git a/pkg/eventmangler/eventmangler.go b/pkg/eventmangler/eventmangler.go index e1e0b0228..ff8a692c8 100644 --- a/pkg/eventmangler/eventmangler.go +++ b/pkg/eventmangler/eventmangler.go @@ -9,7 +9,6 @@ import ( "github.com/filecoin-project/mir/pkg/dsl" "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" eventpbdsl "github.com/filecoin-project/mir/pkg/pb/eventpb/dsl" eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/timer/types" @@ -90,7 +89,7 @@ func NewModule(mc ModuleConfig, params *ModuleParams) (modules.PassiveModule, er m := dsl.NewModule(mc.Self) // Register only a single handler for all events, dropping and / or delaying them as configured. - dsl.UponOtherEvent(m, func(ev *eventpb.Event) error { + dsl.UponOtherEvent(m, func(ev *eventpbtypes.Event) error { // Drop event completely with probability params.DropRate if r.Float32() < params.DropRate { @@ -113,11 +112,11 @@ func NewModule(mc ModuleConfig, params *ModuleParams) (modules.PassiveModule, er eventpbdsl.TimerDelay( m, mc.Timer, - []*eventpbtypes.Event{events.Redirect(eventpbtypes.EventFromPb(ev), mc.Dest)}, + []*eventpbtypes.Event{events.Redirect(ev, mc.Dest)}, types.Duration(delay), ) } else { - dsl.EmitEvent(m, events.Redirect(eventpbtypes.EventFromPb(ev), mc.Dest).Pb()) + dsl.EmitEvent(m, events.Redirect(ev, mc.Dest)) } return nil diff --git a/pkg/events/eventlist.go b/pkg/events/eventlist.go index cac63bf72..c8d93f651 100644 --- a/pkg/events/eventlist.go +++ b/pkg/events/eventlist.go @@ -9,7 +9,7 @@ package events import ( "container/list" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) // EventList represents a list of Events, e.g. as produced by a module. @@ -27,7 +27,7 @@ func EmptyList() *EventList { } // ListOf returns EventList containing the given elements. -func ListOf(events ...*eventpb.Event) *EventList { +func ListOf(events ...*eventpbtypes.Event) *EventList { res := &EventList{} for _, ev := range events { res.PushBack(ev) @@ -45,7 +45,7 @@ func (el *EventList) Len() int { // PushBack appends an event to the end of the list. // Returns the EventList itself, for the convenience of chaining multiple calls to PushBack. -func (el *EventList) PushBack(event *eventpb.Event) *EventList { +func (el *EventList) PushBack(event *eventpbtypes.Event) *EventList { if el.list == nil { el.list = list.New() } @@ -55,7 +55,7 @@ func (el *EventList) PushBack(event *eventpb.Event) *EventList { } // PushBackSlice appends all events in newEvents to the end of the current EventList. -func (el *EventList) PushBackSlice(events []*eventpb.Event) *EventList { +func (el *EventList) PushBackSlice(events []*eventpbtypes.Event) *EventList { if el.list == nil { el.list = list.New() } @@ -123,13 +123,13 @@ func (el *EventList) RemoveFront(n int) int { // Slice returns a slice representation of the current state of the list. // The returned slice only contains pointers to the events in this list, no deep copying is performed. // Any modifications performed on the events will affect the contents of both the EventList and the returned slice. -func (el *EventList) Slice() []*eventpb.Event { +func (el *EventList) Slice() []*eventpbtypes.Event { if el.list == nil { return nil } // Create empty result slice. - events := make([]*eventpb.Event, 0, el.Len()) + events := make([]*eventpbtypes.Event, 0, el.Len()) // Populate result slice by appending events one by one. iter := el.Iterator() @@ -184,7 +184,7 @@ type EventListIterator struct { // Next will return the next Event until the end of the associated EventList is encountered. // Thereafter, it will return nil. -func (eli *EventListIterator) Next() *eventpb.Event { +func (eli *EventListIterator) Next() *eventpbtypes.Event { // Return nil if list has been exhausted. if eli.currentElement == nil { @@ -192,7 +192,7 @@ func (eli *EventListIterator) Next() *eventpb.Event { } // Obtain current element and move on to the next one. - result := eli.currentElement.Value.(*eventpb.Event) + result := eli.currentElement.Value.(*eventpbtypes.Event) eli.currentElement = eli.currentElement.Next() // Return current element. diff --git a/pkg/events/eventlist_test.go b/pkg/events/eventlist_test.go index 27979d096..e15bab479 100644 --- a/pkg/events/eventlist_test.go +++ b/pkg/events/eventlist_test.go @@ -5,24 +5,24 @@ import ( "github.com/stretchr/testify/assert" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) func TestEventList_Constructors(t *testing.T) { testCases := map[string]struct { list *EventList - expected []*eventpb.Event + expected []*eventpbtypes.Event }{ "EmptyList": {EmptyList(), nil}, "empty ListOf": {ListOf(), nil}, "one item": { list: ListOf(TestingString("testmodule", "hello")), - expected: []*eventpb.Event{TestingString("testmodule", "hello")}, + expected: []*eventpbtypes.Event{TestingString("testmodule", "hello")}, }, "three items": { list: ListOf(TestingString("testmodule", "hello"), TestingString("testmodule", "world"), TestingUint("testmodule", 42)), - expected: []*eventpb.Event{TestingString("testmodule", "hello"), TestingString("testmodule", "world"), + expected: []*eventpbtypes.Event{TestingString("testmodule", "hello"), TestingString("testmodule", "world"), TestingUint("testmodule", 42)}, }, } diff --git a/pkg/events/events.go b/pkg/events/events.go index ac2148bf5..a30b12395 100644 --- a/pkg/events/events.go +++ b/pkg/events/events.go @@ -9,7 +9,6 @@ package events import ( "google.golang.org/protobuf/types/known/wrapperspb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -17,7 +16,7 @@ import ( // Strip returns a new identical (shallow copy of the) event, // but with all follow-up events (stored under event.Next) removed. // The removed events are stored in a new EventList that Strip returns a pointer to as the second return value. -func Strip(event *eventpb.Event) (*eventpb.Event, *EventList) { +func Strip(event *eventpbtypes.Event) (*eventpbtypes.Event, *EventList) { // Create new EventList. nextList := &EventList{} @@ -28,14 +27,14 @@ func Strip(event *eventpb.Event) (*eventpb.Event, *EventList) { } // Create a new event with follow-ups removed. - newEvent := eventpb.Event{ + newEvent := &eventpbtypes.Event{ Type: event.Type, DestModule: event.DestModule, Next: nil, } // Return new EventList. - return &newEvent, nextList + return newEvent, nextList } func Redirect(event *eventpbtypes.Event, destination t.ModuleID) *eventpbtypes.Event { @@ -50,19 +49,19 @@ func Redirect(event *eventpbtypes.Event, destination t.ModuleID) *eventpbtypes.E // Event Constructors // ============================================================ -func TestingString(dest t.ModuleID, s string) *eventpb.Event { - return &eventpb.Event{ - DestModule: dest.Pb(), - Type: &eventpb.Event_TestingString{ +func TestingString(dest t.ModuleID, s string) *eventpbtypes.Event { + return &eventpbtypes.Event{ + DestModule: dest, + Type: &eventpbtypes.Event_TestingString{ TestingString: wrapperspb.String(s), }, } } -func TestingUint(dest t.ModuleID, u uint64) *eventpb.Event { - return &eventpb.Event{ - DestModule: dest.Pb(), - Type: &eventpb.Event_TestingUint{ +func TestingUint(dest t.ModuleID, u uint64) *eventpbtypes.Event { + return &eventpbtypes.Event{ + DestModule: dest, + Type: &eventpbtypes.Event_TestingUint{ TestingUint: wrapperspb.UInt64(u), }, } @@ -70,6 +69,6 @@ func TestingUint(dest t.ModuleID, u uint64) *eventpb.Event { // Init returns an event instructing a module to initialize. // This event is the first to be applied to a module. -func Init(destModule t.ModuleID) *eventpb.Event { - return &eventpb.Event{DestModule: destModule.Pb(), Type: &eventpb.Event_Init{Init: &eventpb.Init{}}} +func Init(destModule t.ModuleID) *eventpbtypes.Event { + return &eventpbtypes.Event{DestModule: destModule, Type: &eventpbtypes.Event_Init{Init: &eventpbtypes.Init{}}} } diff --git a/pkg/factorymodule/factory.go b/pkg/factorymodule/factory.go index 2262fa4ab..9e828cd68 100644 --- a/pkg/factorymodule/factory.go +++ b/pkg/factorymodule/factory.go @@ -11,8 +11,9 @@ import ( "github.com/filecoin-project/mir/pkg/messagebuffer" "github.com/filecoin-project/mir/pkg/modules" "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" factorypbtypes "github.com/filecoin-project/mir/pkg/pb/factorypb/types" - "github.com/filecoin-project/mir/pkg/pb/transportpb" + transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -86,12 +87,12 @@ func (fm *FactoryModule) ApplyEvents(evts *events.EventList) (*events.EventList, return eventsOut.PushBackList(submoduleEventsOut), nil } -func (fm *FactoryModule) applyEvent(event *eventpb.Event) (*events.EventList, error) { - if t.ModuleID(event.DestModule) == fm.ownID { +func (fm *FactoryModule) applyEvent(event *eventpbtypes.Event) (*events.EventList, error) { + if event.DestModule == fm.ownID { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: return events.EmptyList(), nil // Nothing to do at initialization. - case *eventpb.Event_Factory: + case *eventpbtypes.Event_Factory: // Before applying an event for the factory itself, process all the buffered submodule events // (as the factory event might change the submodules themselves). @@ -101,7 +102,7 @@ func (fm *FactoryModule) applyEvent(event *eventpb.Event) (*events.EventList, er } // Apply the factory event itself, appending its output to the result of submodule event processing. - switch e := factorypbtypes.EventFromPb(e.Factory).Type.(type) { + switch e := e.Factory.Type.(type) { case *factorypbtypes.Event_NewModule: evOut, err := fm.applyNewModule(e.NewModule) if err != nil { @@ -130,8 +131,8 @@ func (fm *FactoryModule) applyEvent(event *eventpb.Event) (*events.EventList, er } // bufferSubmoduleEvent buffers event in a map where the keys are the moduleID and the values are lists of events. -func (fm *FactoryModule) bufferSubmoduleEvent(event *eventpb.Event) { - smID := t.ModuleID(event.DestModule) +func (fm *FactoryModule) bufferSubmoduleEvent(event *eventpbtypes.Event) { + smID := event.DestModule if _, ok := fm.eventBuffer[smID]; !ok { fm.eventBuffer[smID] = events.EmptyList() } @@ -186,20 +187,20 @@ func (fm *FactoryModule) bufferEarlyMsgs(eventList *events.EventList) { } } -func (fm *FactoryModule) tryBuffering(event *eventpb.Event) { +func (fm *FactoryModule) tryBuffering(event *eventpbtypes.Event) { // Check if this is a MessageReceived event. isMessageReceivedEvent := false - var msg *transportpb.Event_MessageReceived - e, isTransportEvent := event.Type.(*eventpb.Event_Transport) + var msg *transportpbtypes.Event_MessageReceived + e, isTransportEvent := event.Type.(*eventpbtypes.Event_Transport) if isTransportEvent { - msg, isMessageReceivedEvent = e.Transport.Type.(*transportpb.Event_MessageReceived) + msg, isMessageReceivedEvent = e.Transport.Type.(*transportpbtypes.Event_MessageReceived) } if !isMessageReceivedEvent { // Events other than MessageReceived are ignored. fm.logger.Log(logging.LevelDebug, "Ignoring submodule event. Destination module not found.", - "moduleID", t.ModuleID(event.DestModule), + "moduleID", event.DestModule, "eventType", fmt.Sprintf("%T", event.Type), "eventValue", fmt.Sprintf("%v", event.Type)) // TODO: Get rid of Sprintf of the value and just use the value directly. Using Sprintf is just a work-around @@ -207,9 +208,10 @@ func (fm *FactoryModule) tryBuffering(event *eventpb.Event) { return } - if !fm.messageBuffer.Store(event) { + // TODO: avoid message conversions + if !fm.messageBuffer.Store(event.Pb()) { fm.logger.Log(logging.LevelWarn, "Failed buffering incoming submodule message.", - "moduleID", t.ModuleID(event.DestModule), "msgType", fmt.Sprintf("%T", msg.MessageReceived.Msg.Type), + "moduleID", event.DestModule, "msgType", fmt.Sprintf("%T", msg.MessageReceived.Msg.Type), "from", msg.MessageReceived.From) } } @@ -256,7 +258,7 @@ func (fm *FactoryModule) applyNewModule(newModule *factorypbtypes.NewModule) (*e } return messagebuffer.Future }, func(_ t.NodeID, msg proto.Message) { - bufferedMessages.PushBack(msg.(*eventpb.Event)) + bufferedMessages.PushBack(eventpbtypes.EventFromPb(msg.(*eventpb.Event))) }) // Apply buffered messages diff --git a/pkg/factorymodule/factory_test.go b/pkg/factorymodule/factory_test.go index 456eab59b..4754553c6 100644 --- a/pkg/factorymodule/factory_test.go +++ b/pkg/factorymodule/factory_test.go @@ -12,7 +12,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" factorypbevents "github.com/filecoin-project/mir/pkg/pb/factorypb/events" factorypbtypes "github.com/filecoin-project/mir/pkg/pb/factorypb/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" @@ -37,16 +37,16 @@ func (em *echoModule) ApplyEvents(evts *events.EventList) (*events.EventList, er return modules.ApplyEventsSequentially(evts, em.applyEvent) } -func (em *echoModule) applyEvent(event *eventpb.Event) (*events.EventList, error) { +func (em *echoModule) applyEvent(event *eventpbtypes.Event) (*events.EventList, error) { // Convenience variable - destModuleID := tp.ModuleID(event.DestModule) + destModuleID := event.DestModule assert.Equal(em.t, em.id, destModuleID) switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: return events.ListOf(events.TestingString(destModuleID.Top(), string(em.id)+" Init")), nil - case *eventpb.Event_TestingString: + case *eventpbtypes.Event_TestingString: return events.ListOf(events.TestingString(destModuleID.Top(), em.prefix+e.TestingString.GetValue())), nil default: return nil, es.Errorf("unknown echo module event type: %T", e) @@ -81,13 +81,13 @@ func TestFactoryModule(t *testing.T) { echoFactoryID.Then("inst0"), 0, EchoModuleParams("Inst 0: "), - ).Pb())) + ))) assert.NoError(t, err) assert.Equal(t, 1, evOut.Len()) - assert.Equal(t, echoFactoryID.Pb(), evOut.Slice()[0].DestModule) + assert.Equal(t, echoFactoryID, evOut.Slice()[0].DestModule) assert.Equal(t, string(echoFactoryID.Then("inst0"))+" Init", - evOut.Slice()[0].Type.(*eventpb.Event_TestingString).TestingString.GetValue(), + evOut.Slice()[0].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue(), ) }, @@ -100,7 +100,7 @@ func TestFactoryModule(t *testing.T) { assert.Equal(t, 1, evOut.Len()) assert.Equal(t, "Inst 0: Hi!", - evOut.Slice()[0].Type.(*eventpb.Event_TestingString).TestingString.GetValue(), + evOut.Slice()[0].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue(), ) }, @@ -111,13 +111,13 @@ func TestFactoryModule(t *testing.T) { echoFactoryID.Then(tp.ModuleID(fmt.Sprintf("inst%d", i))), tt.RetentionIndex(i), EchoModuleParams(fmt.Sprintf("Inst %d: ", i)), - ).Pb())) + ))) assert.NoError(t, err) assert.Equal(t, 1, evOut.Len()) - assert.Equal(t, echoFactoryID.Pb(), evOut.Slice()[0].DestModule) + assert.Equal(t, echoFactoryID, evOut.Slice()[0].DestModule) assert.Equal(t, string(echoFactoryID.Then(tp.ModuleID(fmt.Sprintf("inst%d", i))))+" Init", - evOut.Slice()[0].Type.(*eventpb.Event_TestingString).TestingString.GetValue(), + evOut.Slice()[0].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue(), ) } }, @@ -137,15 +137,15 @@ func TestFactoryModule(t *testing.T) { sortedOutput := evOut.Slice() sort.Slice(sortedOutput, func(i, j int) bool { - return sortedOutput[i].Type.(*eventpb.Event_TestingString).TestingString.GetValue() < - sortedOutput[j].Type.(*eventpb.Event_TestingString).TestingString.GetValue() + return sortedOutput[i].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue() < + sortedOutput[j].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue() }) for i := 0; i <= 5; i++ { - assert.Equal(t, echoFactoryID.Pb(), sortedOutput[0].DestModule) + assert.Equal(t, echoFactoryID, sortedOutput[0].DestModule) assert.Equal(t, fmt.Sprintf("Inst %d: Hi!", i), - sortedOutput[i].Type.(*eventpb.Event_TestingString).TestingString.GetValue(), + sortedOutput[i].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue(), ) } }, @@ -175,7 +175,7 @@ func TestFactoryModule(t *testing.T) { evOut, err := echoFactory.ApplyEvents(events.ListOf(factorypbevents.GarbageCollect( echoFactoryID, 3, - ).Pb())) + ))) assert.NoError(t, err) assert.Equal(t, 0, evOut.Len()) }, @@ -196,8 +196,8 @@ func TestFactoryModule(t *testing.T) { sortedOutput := evOut.Slice() sort.Slice(sortedOutput, func(i, j int) bool { - return sortedOutput[i].Type.(*eventpb.Event_TestingString).TestingString.GetValue() < - sortedOutput[j].Type.(*eventpb.Event_TestingString).TestingString.GetValue() + return sortedOutput[i].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue() < + sortedOutput[j].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue() }) for i := 0; i < 3; i++ { @@ -209,10 +209,10 @@ func TestFactoryModule(t *testing.T) { } for i := 3; i <= 5; i++ { - assert.Equal(t, echoFactoryID.Pb(), sortedOutput[i-3].DestModule) + assert.Equal(t, echoFactoryID, sortedOutput[i-3].DestModule) assert.Equal(t, fmt.Sprintf("Inst %d: Hi!", i), - sortedOutput[i-3].Type.(*eventpb.Event_TestingString).TestingString.GetValue(), + sortedOutput[i-3].Type.(*eventpbtypes.Event_TestingString).TestingString.GetValue(), ) } diff --git a/pkg/modules/eventprocessing.go b/pkg/modules/eventprocessing.go index 8ab44cfe0..90d4d63d2 100644 --- a/pkg/modules/eventprocessing.go +++ b/pkg/modules/eventprocessing.go @@ -6,7 +6,7 @@ import ( es "github.com/go-errors/errors" "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) // ApplyEventsSequentially takes a list of events and applies the given applyEvent function to each event in the list. @@ -15,7 +15,7 @@ import ( // and returned by ApplyEventsSequentially. func ApplyEventsSequentially( eventsIn *events.EventList, - applyEvent func(*eventpb.Event) (*events.EventList, error), + applyEvent func(*eventpbtypes.Event) (*events.EventList, error), ) (*events.EventList, error) { eventsOut := events.EmptyList() @@ -43,7 +43,7 @@ func ApplyEventsSequentially( // along with an empty EventList. func ApplyEventsConcurrently( eventsIn *events.EventList, - applyEvent func(*eventpb.Event) (*events.EventList, error), + applyEvent func(*eventpbtypes.Event) (*events.EventList, error), ) (*events.EventList, error) { // Initialize channels into which the results of each invocation of applyEvent will be written. @@ -60,7 +60,7 @@ func ApplyEventsConcurrently( i := 0 for event := iter.Next(); event != nil; event = iter.Next() { - go func(e *eventpb.Event, j int) { + go func(e *eventpbtypes.Event, j int) { // Apply the input event, catching potential panics. res, err := applySafely(e, applyEvent) @@ -109,8 +109,8 @@ func ApplyEventsConcurrently( // applySafely is a wrapper around an event processing function that catches its panic and returns it as an error. func applySafely( - event *eventpb.Event, - processingFunc func(*eventpb.Event) (*events.EventList, error), + event *eventpbtypes.Event, + processingFunc func(*eventpbtypes.Event) (*events.EventList, error), ) (result *events.EventList, err error) { defer func() { if r := recover(); r != nil { diff --git a/pkg/modules/mockmodules/internal/impl.go b/pkg/modules/mockmodules/internal/impl.go index 054f6069c..5114891fb 100644 --- a/pkg/modules/mockmodules/internal/impl.go +++ b/pkg/modules/mockmodules/internal/impl.go @@ -2,9 +2,9 @@ package internal import ( "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) type ModuleImpl interface { - Event(ev *eventpb.Event) (*events.EventList, error) + Event(ev *eventpbtypes.Event) (*events.EventList, error) } diff --git a/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go b/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go index 1ceedfc10..5fffa6760 100644 --- a/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go +++ b/pkg/modules/mockmodules/internal/mock_internal/impl.mock.go @@ -10,7 +10,7 @@ import ( gomock "github.com/golang/mock/gomock" events "github.com/filecoin-project/mir/pkg/events" - eventpb "github.com/filecoin-project/mir/pkg/pb/eventpb" + types "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) // MockModuleImpl is a mock of ModuleImpl interface. @@ -37,7 +37,7 @@ func (m *MockModuleImpl) EXPECT() *MockModuleImplMockRecorder { } // Event mocks base method. -func (m *MockModuleImpl) Event(ev *eventpb.Event) (*events.EventList, error) { +func (m *MockModuleImpl) Event(ev *types.Event) (*events.EventList, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Event", ev) ret0, _ := ret[0].(*events.EventList) diff --git a/pkg/net/grpc/grpctransport.go b/pkg/net/grpc/grpctransport.go index b41f5c142..6b4fd0b31 100644 --- a/pkg/net/grpc/grpctransport.go +++ b/pkg/net/grpc/grpctransport.go @@ -22,8 +22,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" mirnet "github.com/filecoin-project/mir/pkg/net" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" @@ -118,10 +117,10 @@ func (gt *Transport) ApplyEvents( for event := iter.Next(); event != nil; event = iter.Next() { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init - case *eventpb.Event_Transport: - switch e := transportpbtypes.EventFromPb(e.Transport).Type.(type) { + case *eventpbtypes.Event_Transport: + switch e := e.Transport.Type.(type) { case *transportpbtypes.Event_SendMessage: for _, destID := range e.SendMessage.Destinations { if destID == gt.ownID { @@ -135,13 +134,13 @@ func (gt *Transport) ApplyEvents( ) go func() { select { - case gt.incomingMessages <- events.ListOf(receivedEvent.Pb()): + case gt.incomingMessages <- events.ListOf(receivedEvent): case <-ctx.Done(): } }() } else { // Send message to another node. - if err := gt.Send(destID, e.SendMessage.Msg.Pb()); err != nil { + if err := gt.Send(destID, e.SendMessage.Msg); err != nil { // TODO: This violates the non-blocking operation of ApplyEvents method. Fix it. gt.logger.Log(logging.LevelWarn, "failed to send a message", "err", err) } @@ -160,8 +159,8 @@ func (gt *Transport) ApplyEvents( // Send sends msg to the node with ID dest. // Concurrent calls to Send are not (yet? TODO) supported. -func (gt *Transport) Send(dest t.NodeID, msg *messagepb.Message) error { - return gt.clients[dest].Send(&GrpcMessage{Sender: gt.ownID.Pb(), Msg: msg}) +func (gt *Transport) Send(dest t.NodeID, msg *messagepbtypes.Message) error { + return gt.clients[dest].Send(&GrpcMessage{Sender: gt.ownID.Pb(), Msg: msg.Pb()}) } // Listen implements the gRPC Listen service (multi-request-single-response). @@ -191,7 +190,7 @@ func (gt *Transport) Listen(srv GrpcTransport_ListenServer) error { t.ModuleID(grpcMsg.Msg.DestModule), t.NodeID(grpcMsg.Sender), messagepbtypes.MessageFromPb(grpcMsg.Msg), - ).Pb(), + ), ): // Write the message to the channel. This channel will be read by the user of the module. diff --git a/pkg/net/libp2p/connection.go b/pkg/net/libp2p/connection.go index 74f75e017..e0a3746bc 100644 --- a/pkg/net/libp2p/connection.go +++ b/pkg/net/libp2p/connection.go @@ -3,7 +3,7 @@ package libp2p import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" ) // connection represents a connection to a (local or remote) peer. @@ -15,7 +15,7 @@ type connection interface { // Send makes a non-blocking attempt to send a message to this connection. // Send might use internal buffering. Thus, even if it returns nil, // the message might not have yet been physically sent. - Send(message *messagepb.Message) error + Send(message *messagepbtypes.Message) error // Close closes the connection. No data will be sent to the underlying stream after Close returns. Close() diff --git a/pkg/net/libp2p/remoteconnection.go b/pkg/net/libp2p/remoteconnection.go index 8b24be114..86ca9c2df 100644 --- a/pkg/net/libp2p/remoteconnection.go +++ b/pkg/net/libp2p/remoteconnection.go @@ -15,7 +15,7 @@ import ( "google.golang.org/protobuf/proto" "github.com/filecoin-project/mir/pkg/logging" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -26,7 +26,7 @@ type remoteConnection struct { logger logging.Logger host host.Host stream network.Stream - msgBuffer chan *messagepb.Message + msgBuffer chan *messagepbtypes.Message stop chan struct{} done chan struct{} connectedCond *sync.Cond @@ -50,7 +50,7 @@ func newRemoteConnection( logger: logger, host: h, stream: nil, - msgBuffer: make(chan *messagepb.Message, params.ConnectionBufferSize), + msgBuffer: make(chan *messagepbtypes.Message, params.ConnectionBufferSize), stop: make(chan struct{}), done: make(chan struct{}), connectedCond: sync.NewCond(&sync.Mutex{}), @@ -67,7 +67,7 @@ func (conn *remoteConnection) PeerID() peer.ID { // Send makes a non-blocking attempt to send a message to this connection. // Send might use internal buffering. Thus, even if it returns nil, // the message might not have yet been sent to the network. -func (conn *remoteConnection) Send(msg *messagepb.Message) error { +func (conn *remoteConnection) Send(msg *messagepbtypes.Message) error { select { case conn.msgBuffer <- msg: @@ -340,8 +340,8 @@ func (conn *remoteConnection) closeStream() { } } -func encodeMessage(msg *messagepb.Message, nodeID t.NodeID) ([]byte, error) { - p, err := proto.Marshal(msg) +func encodeMessage(msg *messagepbtypes.Message, nodeID t.NodeID) ([]byte, error) { + p, err := proto.Marshal(msg.Pb()) if err != nil { return nil, es.Errorf("failed to marshal message: %w", err) } diff --git a/pkg/net/libp2p/selfconnection.go b/pkg/net/libp2p/selfconnection.go index 7892ff9fc..7fc4193f7 100644 --- a/pkg/net/libp2p/selfconnection.go +++ b/pkg/net/libp2p/selfconnection.go @@ -5,7 +5,6 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/messagepb" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" t "github.com/filecoin-project/mir/pkg/types" @@ -16,7 +15,7 @@ import ( type selfConnection struct { ownID t.NodeID peerID peer.ID - msgBuffer chan *messagepb.Message + msgBuffer chan *messagepbtypes.Message deliverChan chan<- *events.EventList stop chan struct{} done chan struct{} @@ -35,7 +34,7 @@ func newSelfConnection(params Params, ownID t.NodeID, ownAddr t.NodeAddress, del conn := &selfConnection{ ownID: ownID, peerID: addrInfo.ID, - msgBuffer: make(chan *messagepb.Message, params.ConnectionBufferSize), + msgBuffer: make(chan *messagepbtypes.Message, params.ConnectionBufferSize), deliverChan: deliverChan, stop: make(chan struct{}), done: make(chan struct{}), @@ -53,7 +52,7 @@ func (conn *selfConnection) PeerID() peer.ID { // Send feeds the given message directly to the sink of delivered messages. // Send is non-blocking and if the buffer for delivered messages is full, the message is dropped. -func (conn *selfConnection) Send(msg *messagepb.Message) error { +func (conn *selfConnection) Send(msg *messagepbtypes.Message) error { select { case conn.msgBuffer <- msg: @@ -109,10 +108,10 @@ func (conn *selfConnection) process() { case <-conn.stop: return case conn.deliverChan <- events.ListOf(transportpbevents.MessageReceived( - t.ModuleID(msg.DestModule), + msg.DestModule, conn.ownID, - messagepbtypes.MessageFromPb(msg)).Pb(), - ): + msg, + )): // Nothing to do in this case, message has been delivered. } } diff --git a/pkg/net/libp2p/transport.go b/pkg/net/libp2p/transport.go index 8bc71cbc7..89a948e2b 100644 --- a/pkg/net/libp2p/transport.go +++ b/pkg/net/libp2p/transport.go @@ -13,7 +13,7 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/pb/messagepb" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" @@ -61,13 +61,13 @@ func (tr *Transport) ApplyEvents(_ context.Context, eventList *events.EventList) for event := iter.Next(); event != nil; event = iter.Next() { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init - case *eventpb.Event_Transport: - switch e := transportpbtypes.EventFromPb(e.Transport).Type.(type) { + case *eventpbtypes.Event_Transport: + switch e := e.Transport.Type.(type) { case *transportpbtypes.Event_SendMessage: for _, destID := range e.SendMessage.Destinations { - if err := tr.Send(destID, e.SendMessage.Msg.Pb()); err != nil { + if err := tr.Send(destID, e.SendMessage.Msg); err != nil { tr.logger.Log(logging.LevelWarn, "Failed to send a message", "dest", destID, "err", err) } } @@ -153,7 +153,7 @@ func (tr *Transport) Connect(membership *trantorpbtypes.Membership) { } } -func (tr *Transport) Send(dest t.NodeID, msg *messagepb.Message) error { +func (tr *Transport) Send(dest t.NodeID, msg *messagepbtypes.Message) error { conn, err := tr.getConnection(dest) if err != nil { return err @@ -303,7 +303,7 @@ func (tr *Transport) readAndProcessMessages(s network.Stream, nodeID t.NodeID, p t.ModuleID(msg.DestModule), sender, messagepbtypes.MessageFromPb(msg), - ).Pb()): + )): // Nothing to do in this case message has written to the receiving channel. case <-tr.stop: tr.logger.Log(logging.LevelError, "Shutdown. Stopping incoming connection.", diff --git a/pkg/net/libp2p/transport_test.go b/pkg/net/libp2p/transport_test.go index 878eeb416..53d48ae4e 100644 --- a/pkg/net/libp2p/transport_test.go +++ b/pkg/net/libp2p/transport_test.go @@ -16,11 +16,10 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/logging" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" - "github.com/filecoin-project/mir/pkg/pb/transportpb" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" + transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" "github.com/filecoin-project/mir/pkg/types" libp2putil "github.com/filecoin-project/mir/pkg/util/libp2p" @@ -222,11 +221,11 @@ func (m *mockLibp2pCommunication) testEventuallyNoStreams(nodeIDs ...types.NodeI } func (m *mockLibp2pCommunication) testThatSenderIs(events *events.EventList, nodeID types.NodeID) { - tEvent, valid := events.Iterator().Next().Type.(*eventpb.Event_Transport) + tEvent, valid := events.Iterator().Next().Type.(*eventpbtypes.Event_Transport) require.True(m.t, valid) - msg, valid := tEvent.Transport.Type.(*transportpb.Event_MessageReceived) + msg, valid := tEvent.Transport.Type.(*transportpbtypes.Event_MessageReceived) require.True(m.t, valid) - require.Equal(m.t, msg.MessageReceived.From, nodeID.Pb()) + require.Equal(m.t, msg.MessageReceived.From, nodeID) } // testEventuallyHasConnection tests that there is a connection between the nodes initiated by initiator. @@ -388,7 +387,7 @@ func TestCallSendWithoutConnect(t *testing.T) { a := m.transports[nodeA] m.StartAllTransports() - err := a.Send(nodeB, &messagepb.Message{}) + err := a.Send(nodeB, &messagepbtypes.Message{}) require.Error(t, err) m.StopAllTransports() @@ -446,11 +445,11 @@ func TestSendReceive(t *testing.T) { nodeBEventsChan := b.EventsOut() nodeCEventsChan := c.EventsOut() - err := a.Send(nodeB, testMsg.Pb()) + err := a.Send(nodeB, testMsg) require.NoError(t, err) m.testThatSenderIs(<-nodeBEventsChan, nodeA) - err = a.Send(nodeC, testMsg.Pb()) + err = a.Send(nodeC, testMsg) require.NoError(t, err) m.testThatSenderIs(<-nodeCEventsChan, nodeA) @@ -515,11 +514,11 @@ func TestSendReceiveEmptyMessage(t *testing.T) { // nolint:unused nodeBEventsChan := b.EventsOut() nodeCEventsChan := c.EventsOut() - err := a.Send(nodeB, &messagepb.Message{}) + err := a.Send(nodeB, &messagepbtypes.Message{}) require.NoError(t, err) m.testThatSenderIs(<-nodeBEventsChan, nodeA) - err = a.Send(nodeC, &messagepb.Message{}) + err = a.Send(nodeC, &messagepbtypes.Message{}) require.NoError(t, err) m.testThatSenderIs(<-nodeCEventsChan, nodeA) @@ -683,7 +682,7 @@ func TestMessaging(t *testing.T) { sentBeforeDisconnect = sent disconnect <- struct{}{} case <-send.C: - err := a.Send(nodeB, testMsg.Pb()) + err := a.Send(nodeB, testMsg) if err != nil { m.t.Log(err) } else { @@ -741,7 +740,7 @@ func TestSendingReceiveWithWaitFor(t *testing.T) { t.Log(">>> sending messages") nodeBEventsChan := b.EventsOut() - err = a.Send(nodeB, testMsg.Pb()) + err = a.Send(nodeB, testMsg) require.NoError(t, err) m.testThatSenderIs(<-nodeBEventsChan, nodeA) @@ -817,7 +816,7 @@ func TestSendReceiveWithWaitForAndBlock(t *testing.T) { require.NoError(t, err) t.Log(">>> send a message") - err = a.Send(nodeB, testMsg.Pb()) + err = a.Send(nodeB, testMsg) require.NoError(t, err) nodeBEventsChan := b.incomingMessages @@ -828,13 +827,13 @@ func TestSendReceiveWithWaitForAndBlock(t *testing.T) { go func() { b.incomingMessages <- events.ListOf( - transportpbevents.MessageReceived("1", "blocker", testMsg).Pb(), + transportpbevents.MessageReceived("1", "blocker", testMsg), ) b.incomingMessages <- events.ListOf( - transportpbevents.MessageReceived("1", "blocker", testMsg).Pb(), + transportpbevents.MessageReceived("1", "blocker", testMsg), ) }() - err = a.Send(nodeB, testMsg.Pb()) + err = a.Send(nodeB, testMsg) time.Sleep(5 * time.Second) require.NoError(t, err) @@ -968,7 +967,7 @@ func TestMessagingWithNewNodes(t *testing.T) { for i := 0; i < 100; i++ { time.Sleep(time.Duration(rand.Intn(50)) * time.Millisecond) // nolint - err := m.transports[src].Send(dst, testMsg.Pb()) + err := m.transports[src].Send(dst, testMsg) if err != nil { t.Logf("%v->%v failed to send: %v", src, dst, err) } else { @@ -988,7 +987,7 @@ func TestMessagingWithNewNodes(t *testing.T) { if !ok { return } - _, valid := e.Iterator().Next().Type.(*eventpb.Event_Transport).Transport.Type.(*transportpb.Event_MessageReceived) + _, valid := e.Iterator().Next().Type.(*eventpbtypes.Event_Transport).Transport.Type.(*transportpbtypes.Event_MessageReceived) require.Equal(m.t, true, valid) atomic.AddInt64(&received, 1) } diff --git a/pkg/net/transport.go b/pkg/net/transport.go index e0a5c4023..af584579b 100644 --- a/pkg/net/transport.go +++ b/pkg/net/transport.go @@ -2,7 +2,7 @@ package net import ( "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/messagepb" + messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -18,7 +18,7 @@ type Transport interface { // Send sends msg to the node with ID dest. // TODO: Remove this method from the interface definition. Sending is invoked by event processing, not externally. - Send(dest t.NodeID, msg *messagepb.Message) error + Send(dest t.NodeID, msg *messagepbtypes.Message) error // Connect initiates the establishing of network connections to the provided nodes. // When Connect returns, the connections might not yet have been established though (see WaitFor). diff --git a/pkg/pb/apppb/dsl/emit.mir.go b/pkg/pb/apppb/dsl/emit.mir.go index 89234eb94..6dfbb465b 100644 --- a/pkg/pb/apppb/dsl/emit.mir.go +++ b/pkg/pb/apppb/dsl/emit.mir.go @@ -13,17 +13,17 @@ import ( // Module-specific dsl functions for emitting events. func SnapshotRequest(m dsl.Module, destModule types.ModuleID, replyTo types.ModuleID) { - dsl.EmitMirEvent(m, events.SnapshotRequest(destModule, replyTo)) + dsl.EmitEvent(m, events.SnapshotRequest(destModule, replyTo)) } func Snapshot(m dsl.Module, destModule types.ModuleID, appData []uint8) { - dsl.EmitMirEvent(m, events.Snapshot(destModule, appData)) + dsl.EmitEvent(m, events.Snapshot(destModule, appData)) } func RestoreState(m dsl.Module, destModule types.ModuleID, checkpoint *types1.StableCheckpoint) { - dsl.EmitMirEvent(m, events.RestoreState(destModule, checkpoint)) + dsl.EmitEvent(m, events.RestoreState(destModule, checkpoint)) } func NewEpoch(m dsl.Module, destModule types.ModuleID, epochNr types2.EpochNr, protocolModule types.ModuleID) { - dsl.EmitMirEvent(m, events.NewEpoch(destModule, epochNr, protocolModule)) + dsl.EmitEvent(m, events.NewEpoch(destModule, epochNr, protocolModule)) } diff --git a/pkg/pb/apppb/dsl/upon.mir.go b/pkg/pb/apppb/dsl/upon.mir.go index 9d076cf2e..89d82db60 100644 --- a/pkg/pb/apppb/dsl/upon.mir.go +++ b/pkg/pb/apppb/dsl/upon.mir.go @@ -14,7 +14,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_App](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_App](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/availabilitypb/batchdbpb/dsl/emit.mir.go b/pkg/pb/availabilitypb/batchdbpb/dsl/emit.mir.go index e42020dcb..ee432b4dc 100644 --- a/pkg/pb/availabilitypb/batchdbpb/dsl/emit.mir.go +++ b/pkg/pb/availabilitypb/batchdbpb/dsl/emit.mir.go @@ -22,11 +22,11 @@ func LookupBatch[C any](m dsl.Module, destModule types.ModuleID, batchId types1. Type: &types2.LookupBatchOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.LookupBatch(destModule, batchId, origin)) + dsl.EmitEvent(m, events.LookupBatch(destModule, batchId, origin)) } func LookupBatchResponse(m dsl.Module, destModule types.ModuleID, found bool, txs []*types3.Transaction, origin *types2.LookupBatchOrigin) { - dsl.EmitMirEvent(m, events.LookupBatchResponse(destModule, found, txs, origin)) + dsl.EmitEvent(m, events.LookupBatchResponse(destModule, found, txs, origin)) } func StoreBatch[C any](m dsl.Module, destModule types.ModuleID, batchId types1.BatchID, txs []*types3.Transaction, retentionIndex types4.RetentionIndex, context *C) { @@ -37,13 +37,13 @@ func StoreBatch[C any](m dsl.Module, destModule types.ModuleID, batchId types1.B Type: &types2.StoreBatchOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.StoreBatch(destModule, batchId, txs, retentionIndex, origin)) + dsl.EmitEvent(m, events.StoreBatch(destModule, batchId, txs, retentionIndex, origin)) } func BatchStored(m dsl.Module, destModule types.ModuleID, origin *types2.StoreBatchOrigin) { - dsl.EmitMirEvent(m, events.BatchStored(destModule, origin)) + dsl.EmitEvent(m, events.BatchStored(destModule, origin)) } func GarbageCollect(m dsl.Module, destModule types.ModuleID, retentionIndex types4.RetentionIndex) { - dsl.EmitMirEvent(m, events.GarbageCollect(destModule, retentionIndex)) + dsl.EmitEvent(m, events.GarbageCollect(destModule, retentionIndex)) } diff --git a/pkg/pb/availabilitypb/batchdbpb/dsl/upon.mir.go b/pkg/pb/availabilitypb/batchdbpb/dsl/upon.mir.go index daa995296..990addb72 100644 --- a/pkg/pb/availabilitypb/batchdbpb/dsl/upon.mir.go +++ b/pkg/pb/availabilitypb/batchdbpb/dsl/upon.mir.go @@ -14,7 +14,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_BatchDb](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_BatchDb](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/availabilitypb/dsl/emit.mir.go b/pkg/pb/availabilitypb/dsl/emit.mir.go index 6b0016287..301375966 100644 --- a/pkg/pb/availabilitypb/dsl/emit.mir.go +++ b/pkg/pb/availabilitypb/dsl/emit.mir.go @@ -20,11 +20,11 @@ func RequestCert[C any](m dsl.Module, destModule types.ModuleID, context *C) { Type: &types1.RequestCertOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestCert(destModule, origin)) + dsl.EmitEvent(m, events.RequestCert(destModule, origin)) } func NewCert(m dsl.Module, destModule types.ModuleID, cert *types1.Cert, origin *types1.RequestCertOrigin) { - dsl.EmitMirEvent(m, events.NewCert(destModule, cert, origin)) + dsl.EmitEvent(m, events.NewCert(destModule, cert, origin)) } func VerifyCert[C any](m dsl.Module, destModule types.ModuleID, cert *types1.Cert, context *C) { @@ -35,11 +35,11 @@ func VerifyCert[C any](m dsl.Module, destModule types.ModuleID, cert *types1.Cer Type: &types1.VerifyCertOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.VerifyCert(destModule, cert, origin)) + dsl.EmitEvent(m, events.VerifyCert(destModule, cert, origin)) } func CertVerified(m dsl.Module, destModule types.ModuleID, valid bool, err string, origin *types1.VerifyCertOrigin) { - dsl.EmitMirEvent(m, events.CertVerified(destModule, valid, err, origin)) + dsl.EmitEvent(m, events.CertVerified(destModule, valid, err, origin)) } func RequestTransactions[C any](m dsl.Module, destModule types.ModuleID, cert *types1.Cert, context *C) { @@ -50,13 +50,13 @@ func RequestTransactions[C any](m dsl.Module, destModule types.ModuleID, cert *t Type: &types1.RequestTransactionsOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestTransactions(destModule, cert, origin)) + dsl.EmitEvent(m, events.RequestTransactions(destModule, cert, origin)) } func ProvideTransactions(m dsl.Module, destModule types.ModuleID, txs []*types2.Transaction, origin *types1.RequestTransactionsOrigin) { - dsl.EmitMirEvent(m, events.ProvideTransactions(destModule, txs, origin)) + dsl.EmitEvent(m, events.ProvideTransactions(destModule, txs, origin)) } func ComputeCert(m dsl.Module, destModule types.ModuleID) { - dsl.EmitMirEvent(m, events.ComputeCert(destModule)) + dsl.EmitEvent(m, events.ComputeCert(destModule)) } diff --git a/pkg/pb/availabilitypb/dsl/upon.mir.go b/pkg/pb/availabilitypb/dsl/upon.mir.go index af11b1aea..949464f08 100644 --- a/pkg/pb/availabilitypb/dsl/upon.mir.go +++ b/pkg/pb/availabilitypb/dsl/upon.mir.go @@ -12,7 +12,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Availability](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Availability](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/batchfetcherpb/dsl/emit.mir.go b/pkg/pb/batchfetcherpb/dsl/emit.mir.go index bb50574b4..3f7ab0a4e 100644 --- a/pkg/pb/batchfetcherpb/dsl/emit.mir.go +++ b/pkg/pb/batchfetcherpb/dsl/emit.mir.go @@ -12,5 +12,5 @@ import ( // Module-specific dsl functions for emitting events. func NewOrderedBatch(m dsl.Module, destModule types.ModuleID, txs []*types1.Transaction) { - dsl.EmitMirEvent(m, events.NewOrderedBatch(destModule, txs)) + dsl.EmitEvent(m, events.NewOrderedBatch(destModule, txs)) } diff --git a/pkg/pb/batchfetcherpb/dsl/upon.mir.go b/pkg/pb/batchfetcherpb/dsl/upon.mir.go index f827faea9..c042ecd9c 100644 --- a/pkg/pb/batchfetcherpb/dsl/upon.mir.go +++ b/pkg/pb/batchfetcherpb/dsl/upon.mir.go @@ -12,7 +12,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_BatchFetcher](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_BatchFetcher](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/bcbpb/dsl/emit.mir.go b/pkg/pb/bcbpb/dsl/emit.mir.go index 1bfdc8cdf..5cafe36ea 100644 --- a/pkg/pb/bcbpb/dsl/emit.mir.go +++ b/pkg/pb/bcbpb/dsl/emit.mir.go @@ -11,9 +11,9 @@ import ( // Module-specific dsl functions for emitting events. func BroadcastRequest(m dsl.Module, destModule types.ModuleID, data []uint8) { - dsl.EmitMirEvent(m, events.BroadcastRequest(destModule, data)) + dsl.EmitEvent(m, events.BroadcastRequest(destModule, data)) } func Deliver(m dsl.Module, destModule types.ModuleID, data []uint8) { - dsl.EmitMirEvent(m, events.Deliver(destModule, data)) + dsl.EmitEvent(m, events.Deliver(destModule, data)) } diff --git a/pkg/pb/bcbpb/dsl/upon.mir.go b/pkg/pb/bcbpb/dsl/upon.mir.go index 326b4de68..73715fb67 100644 --- a/pkg/pb/bcbpb/dsl/upon.mir.go +++ b/pkg/pb/bcbpb/dsl/upon.mir.go @@ -11,7 +11,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Bcb](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Bcb](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/emit.mir.go b/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/emit.mir.go index 8cf914bbb..72c515c7b 100644 --- a/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/emit.mir.go +++ b/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/emit.mir.go @@ -22,9 +22,9 @@ func ValidateCheckpoint[C any](m dsl.Module, destModule types.ModuleID, checkpoi Type: &types4.ValidateChkpOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.ValidateCheckpoint(destModule, checkpoint, epochNr, memberships, origin)) + dsl.EmitEvent(m, events.ValidateCheckpoint(destModule, checkpoint, epochNr, memberships, origin)) } func CheckpointValidated(m dsl.Module, destModule types.ModuleID, error error, origin *types4.ValidateChkpOrigin) { - dsl.EmitMirEvent(m, events.CheckpointValidated(destModule, error, origin)) + dsl.EmitEvent(m, events.CheckpointValidated(destModule, error, origin)) } diff --git a/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/upon.mir.go b/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/upon.mir.go index 9aa91fd04..be4eb448d 100644 --- a/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/upon.mir.go +++ b/pkg/pb/checkpointpb/chkpvalidatorpb/dsl/upon.mir.go @@ -14,7 +14,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_ChkpValidator](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_ChkpValidator](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/checkpointpb/dsl/emit.mir.go b/pkg/pb/checkpointpb/dsl/emit.mir.go index 4c0b58684..bab42baaa 100644 --- a/pkg/pb/checkpointpb/dsl/emit.mir.go +++ b/pkg/pb/checkpointpb/dsl/emit.mir.go @@ -13,9 +13,9 @@ import ( // Module-specific dsl functions for emitting events. func StableCheckpoint(m dsl.Module, destModule types.ModuleID, sn types1.SeqNr, snapshot *types2.StateSnapshot, cert map[types.NodeID][]uint8) { - dsl.EmitMirEvent(m, events.StableCheckpoint(destModule, sn, snapshot, cert)) + dsl.EmitEvent(m, events.StableCheckpoint(destModule, sn, snapshot, cert)) } func EpochProgress(m dsl.Module, destModule types.ModuleID, nodeId types.NodeID, epoch types1.EpochNr) { - dsl.EmitMirEvent(m, events.EpochProgress(destModule, nodeId, epoch)) + dsl.EmitEvent(m, events.EpochProgress(destModule, nodeId, epoch)) } diff --git a/pkg/pb/checkpointpb/dsl/upon.mir.go b/pkg/pb/checkpointpb/dsl/upon.mir.go index 9ad015ef0..02fee1e74 100644 --- a/pkg/pb/checkpointpb/dsl/upon.mir.go +++ b/pkg/pb/checkpointpb/dsl/upon.mir.go @@ -14,7 +14,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Checkpoint](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Checkpoint](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/cryptopb/dsl/emit.mir.go b/pkg/pb/cryptopb/dsl/emit.mir.go index 8463c899c..7a108d838 100644 --- a/pkg/pb/cryptopb/dsl/emit.mir.go +++ b/pkg/pb/cryptopb/dsl/emit.mir.go @@ -19,11 +19,11 @@ func SignRequest[C any](m dsl.Module, destModule types.ModuleID, data *types1.Si Type: &types1.SignOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.SignRequest(destModule, data, origin)) + dsl.EmitEvent(m, events.SignRequest(destModule, data, origin)) } func SignResult(m dsl.Module, destModule types.ModuleID, signature []uint8, origin *types1.SignOrigin) { - dsl.EmitMirEvent(m, events.SignResult(destModule, signature, origin)) + dsl.EmitEvent(m, events.SignResult(destModule, signature, origin)) } func VerifySig[C any](m dsl.Module, destModule types.ModuleID, data *types1.SignedData, signature []uint8, nodeId types.NodeID, context *C) { @@ -34,11 +34,11 @@ func VerifySig[C any](m dsl.Module, destModule types.ModuleID, data *types1.Sign Type: &types1.SigVerOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.VerifySig(destModule, data, signature, origin, nodeId)) + dsl.EmitEvent(m, events.VerifySig(destModule, data, signature, origin, nodeId)) } func SigVerified(m dsl.Module, destModule types.ModuleID, origin *types1.SigVerOrigin, nodeId types.NodeID, error error) { - dsl.EmitMirEvent(m, events.SigVerified(destModule, origin, nodeId, error)) + dsl.EmitEvent(m, events.SigVerified(destModule, origin, nodeId, error)) } func VerifySigs[C any](m dsl.Module, destModule types.ModuleID, data []*types1.SignedData, signatures [][]uint8, nodeIds []types.NodeID, context *C) { @@ -49,9 +49,9 @@ func VerifySigs[C any](m dsl.Module, destModule types.ModuleID, data []*types1.S Type: &types1.SigVerOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.VerifySigs(destModule, data, signatures, origin, nodeIds)) + dsl.EmitEvent(m, events.VerifySigs(destModule, data, signatures, origin, nodeIds)) } func SigsVerified(m dsl.Module, destModule types.ModuleID, origin *types1.SigVerOrigin, nodeIds []types.NodeID, errors []error, allOk bool) { - dsl.EmitMirEvent(m, events.SigsVerified(destModule, origin, nodeIds, errors, allOk)) + dsl.EmitEvent(m, events.SigsVerified(destModule, origin, nodeIds, errors, allOk)) } diff --git a/pkg/pb/cryptopb/dsl/upon.mir.go b/pkg/pb/cryptopb/dsl/upon.mir.go index 1bcd199b0..d623a2337 100644 --- a/pkg/pb/cryptopb/dsl/upon.mir.go +++ b/pkg/pb/cryptopb/dsl/upon.mir.go @@ -12,7 +12,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Crypto](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Crypto](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/eventpb/dsl/emit.mir.go b/pkg/pb/eventpb/dsl/emit.mir.go index cd7d7bb0e..2a735e826 100644 --- a/pkg/pb/eventpb/dsl/emit.mir.go +++ b/pkg/pb/eventpb/dsl/emit.mir.go @@ -14,17 +14,17 @@ import ( // Module-specific dsl functions for emitting events. func Init(m dsl.Module, destModule types.ModuleID) { - dsl.EmitMirEvent(m, events.Init(destModule)) + dsl.EmitEvent(m, events.Init(destModule)) } func TimerDelay(m dsl.Module, destModule types.ModuleID, eventsToDelay []*types1.Event, delay types2.Duration) { - dsl.EmitMirEvent(m, events.TimerDelay(destModule, eventsToDelay, delay)) + dsl.EmitEvent(m, events.TimerDelay(destModule, eventsToDelay, delay)) } func TimerRepeat(m dsl.Module, destModule types.ModuleID, eventsToRepeat []*types1.Event, delay types2.Duration, retentionIndex types3.RetentionIndex) { - dsl.EmitMirEvent(m, events.TimerRepeat(destModule, eventsToRepeat, delay, retentionIndex)) + dsl.EmitEvent(m, events.TimerRepeat(destModule, eventsToRepeat, delay, retentionIndex)) } func TimerGarbageCollect(m dsl.Module, destModule types.ModuleID, retentionIndex types3.RetentionIndex) { - dsl.EmitMirEvent(m, events.TimerGarbageCollect(destModule, retentionIndex)) + dsl.EmitEvent(m, events.TimerGarbageCollect(destModule, retentionIndex)) } diff --git a/pkg/pb/eventpb/dsl/upon.mir.go b/pkg/pb/eventpb/dsl/upon.mir.go index c06fd707b..f21ca1118 100644 --- a/pkg/pb/eventpb/dsl/upon.mir.go +++ b/pkg/pb/eventpb/dsl/upon.mir.go @@ -12,13 +12,13 @@ import ( // Module-specific dsl functions for processing events. func UponInit(m dsl.Module, handler func() error) { - dsl.UponMirEvent[*types.Event_Init](m, func(ev *types.Init) error { + dsl.UponEvent[*types.Event_Init](m, func(ev *types.Init) error { return handler() }) } func UponTimerEvent[W types.TimerEvent_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types.Event_Timer](m, func(ev *types.TimerEvent) error { + dsl.UponEvent[*types.Event_Timer](m, func(ev *types.TimerEvent) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/factorypb/dsl/emit.mir.go b/pkg/pb/factorypb/dsl/emit.mir.go index 5d8ce0f09..0c07a4b50 100644 --- a/pkg/pb/factorypb/dsl/emit.mir.go +++ b/pkg/pb/factorypb/dsl/emit.mir.go @@ -13,9 +13,9 @@ import ( // Module-specific dsl functions for emitting events. func NewModule(m dsl.Module, destModule types.ModuleID, moduleId types.ModuleID, retentionIndex types1.RetentionIndex, params *types2.GeneratorParams) { - dsl.EmitMirEvent(m, events.NewModule(destModule, moduleId, retentionIndex, params)) + dsl.EmitEvent(m, events.NewModule(destModule, moduleId, retentionIndex, params)) } func GarbageCollect(m dsl.Module, destModule types.ModuleID, retentionIndex types1.RetentionIndex) { - dsl.EmitMirEvent(m, events.GarbageCollect(destModule, retentionIndex)) + dsl.EmitEvent(m, events.GarbageCollect(destModule, retentionIndex)) } diff --git a/pkg/pb/factorypb/dsl/upon.mir.go b/pkg/pb/factorypb/dsl/upon.mir.go index ae873da92..2a28b432e 100644 --- a/pkg/pb/factorypb/dsl/upon.mir.go +++ b/pkg/pb/factorypb/dsl/upon.mir.go @@ -13,7 +13,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Factory](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Factory](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/hasherpb/dsl/emit.mir.go b/pkg/pb/hasherpb/dsl/emit.mir.go index 0a783cb66..260eb8ee5 100644 --- a/pkg/pb/hasherpb/dsl/emit.mir.go +++ b/pkg/pb/hasherpb/dsl/emit.mir.go @@ -19,11 +19,11 @@ func Request[C any](m dsl.Module, destModule types.ModuleID, data []*types1.Hash Type: &types1.HashOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.Request(destModule, data, origin)) + dsl.EmitEvent(m, events.Request(destModule, data, origin)) } func Result(m dsl.Module, destModule types.ModuleID, digests [][]uint8, origin *types1.HashOrigin) { - dsl.EmitMirEvent(m, events.Result(destModule, digests, origin)) + dsl.EmitEvent(m, events.Result(destModule, digests, origin)) } func RequestOne[C any](m dsl.Module, destModule types.ModuleID, data *types1.HashData, context *C) { @@ -34,9 +34,9 @@ func RequestOne[C any](m dsl.Module, destModule types.ModuleID, data *types1.Has Type: &types1.HashOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestOne(destModule, data, origin)) + dsl.EmitEvent(m, events.RequestOne(destModule, data, origin)) } func ResultOne(m dsl.Module, destModule types.ModuleID, digest []uint8, origin *types1.HashOrigin) { - dsl.EmitMirEvent(m, events.ResultOne(destModule, digest, origin)) + dsl.EmitEvent(m, events.ResultOne(destModule, digest, origin)) } diff --git a/pkg/pb/hasherpb/dsl/upon.mir.go b/pkg/pb/hasherpb/dsl/upon.mir.go index 623ac6dd5..8db536dfb 100644 --- a/pkg/pb/hasherpb/dsl/upon.mir.go +++ b/pkg/pb/hasherpb/dsl/upon.mir.go @@ -11,7 +11,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Hasher](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Hasher](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/isspb/dsl/emit.mir.go b/pkg/pb/isspb/dsl/emit.mir.go index d80840460..0e5d76e7e 100644 --- a/pkg/pb/isspb/dsl/emit.mir.go +++ b/pkg/pb/isspb/dsl/emit.mir.go @@ -14,17 +14,17 @@ import ( // Module-specific dsl functions for emitting events. func PushCheckpoint(m dsl.Module, destModule types.ModuleID) { - dsl.EmitMirEvent(m, events.PushCheckpoint(destModule)) + dsl.EmitEvent(m, events.PushCheckpoint(destModule)) } func SBDeliver(m dsl.Module, destModule types.ModuleID, sn types1.SeqNr, data []uint8, aborted bool, leader types.NodeID, instanceId types.ModuleID) { - dsl.EmitMirEvent(m, events.SBDeliver(destModule, sn, data, aborted, leader, instanceId)) + dsl.EmitEvent(m, events.SBDeliver(destModule, sn, data, aborted, leader, instanceId)) } func DeliverCert(m dsl.Module, destModule types.ModuleID, sn types1.SeqNr, cert *types2.Cert, empty bool) { - dsl.EmitMirEvent(m, events.DeliverCert(destModule, sn, cert, empty)) + dsl.EmitEvent(m, events.DeliverCert(destModule, sn, cert, empty)) } func NewConfig(m dsl.Module, destModule types.ModuleID, epochNr types1.EpochNr, membership *types3.Membership) { - dsl.EmitMirEvent(m, events.NewConfig(destModule, epochNr, membership)) + dsl.EmitEvent(m, events.NewConfig(destModule, epochNr, membership)) } diff --git a/pkg/pb/isspb/dsl/upon.mir.go b/pkg/pb/isspb/dsl/upon.mir.go index 5eedbe00c..6bfe7bc74 100644 --- a/pkg/pb/isspb/dsl/upon.mir.go +++ b/pkg/pb/isspb/dsl/upon.mir.go @@ -15,7 +15,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Iss](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Iss](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/mempoolpb/dsl/emit.mir.go b/pkg/pb/mempoolpb/dsl/emit.mir.go index 07881f657..b7ae7a721 100644 --- a/pkg/pb/mempoolpb/dsl/emit.mir.go +++ b/pkg/pb/mempoolpb/dsl/emit.mir.go @@ -22,11 +22,11 @@ func RequestBatch[C any](m dsl.Module, destModule types.ModuleID, epoch types1.E Type: &types2.RequestBatchOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestBatch(destModule, epoch, origin)) + dsl.EmitEvent(m, events.RequestBatch(destModule, epoch, origin)) } func NewBatch(m dsl.Module, destModule types.ModuleID, txIds []types1.TxID, txs []*types3.Transaction, origin *types2.RequestBatchOrigin) { - dsl.EmitMirEvent(m, events.NewBatch(destModule, txIds, txs, origin)) + dsl.EmitEvent(m, events.NewBatch(destModule, txIds, txs, origin)) } func RequestTransactions[C any](m dsl.Module, destModule types.ModuleID, txIds []types1.TxID, context *C) { @@ -37,11 +37,11 @@ func RequestTransactions[C any](m dsl.Module, destModule types.ModuleID, txIds [ Type: &types2.RequestTransactionsOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestTransactions(destModule, txIds, origin)) + dsl.EmitEvent(m, events.RequestTransactions(destModule, txIds, origin)) } func TransactionsResponse(m dsl.Module, destModule types.ModuleID, foundIds []types1.TxID, foundTxs []*types3.Transaction, missingIds []types1.TxID, origin *types2.RequestTransactionsOrigin) { - dsl.EmitMirEvent(m, events.TransactionsResponse(destModule, foundIds, foundTxs, missingIds, origin)) + dsl.EmitEvent(m, events.TransactionsResponse(destModule, foundIds, foundTxs, missingIds, origin)) } func RequestTransactionIDs[C any](m dsl.Module, destModule types.ModuleID, txs []*types3.Transaction, context *C) { @@ -52,11 +52,11 @@ func RequestTransactionIDs[C any](m dsl.Module, destModule types.ModuleID, txs [ Type: &types2.RequestTransactionIDsOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestTransactionIDs(destModule, txs, origin)) + dsl.EmitEvent(m, events.RequestTransactionIDs(destModule, txs, origin)) } func TransactionIDsResponse(m dsl.Module, destModule types.ModuleID, txIds []types1.TxID, origin *types2.RequestTransactionIDsOrigin) { - dsl.EmitMirEvent(m, events.TransactionIDsResponse(destModule, txIds, origin)) + dsl.EmitEvent(m, events.TransactionIDsResponse(destModule, txIds, origin)) } func RequestBatchID[C any](m dsl.Module, destModule types.ModuleID, txIds []types1.TxID, context *C) { @@ -67,21 +67,21 @@ func RequestBatchID[C any](m dsl.Module, destModule types.ModuleID, txIds []type Type: &types2.RequestBatchIDOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.RequestBatchID(destModule, txIds, origin)) + dsl.EmitEvent(m, events.RequestBatchID(destModule, txIds, origin)) } func BatchIDResponse(m dsl.Module, destModule types.ModuleID, batchId types4.BatchID, origin *types2.RequestBatchIDOrigin) { - dsl.EmitMirEvent(m, events.BatchIDResponse(destModule, batchId, origin)) + dsl.EmitEvent(m, events.BatchIDResponse(destModule, batchId, origin)) } func NewTransactions(m dsl.Module, destModule types.ModuleID, transactions []*types3.Transaction) { - dsl.EmitMirEvent(m, events.NewTransactions(destModule, transactions)) + dsl.EmitEvent(m, events.NewTransactions(destModule, transactions)) } func BatchTimeout(m dsl.Module, destModule types.ModuleID, batchReqID uint64) { - dsl.EmitMirEvent(m, events.BatchTimeout(destModule, batchReqID)) + dsl.EmitEvent(m, events.BatchTimeout(destModule, batchReqID)) } func NewEpoch(m dsl.Module, destModule types.ModuleID, epochNr types1.EpochNr, clientProgress *types3.ClientProgress) { - dsl.EmitMirEvent(m, events.NewEpoch(destModule, epochNr, clientProgress)) + dsl.EmitEvent(m, events.NewEpoch(destModule, epochNr, clientProgress)) } diff --git a/pkg/pb/mempoolpb/dsl/upon.mir.go b/pkg/pb/mempoolpb/dsl/upon.mir.go index c25f2cee7..1b7cc75b1 100644 --- a/pkg/pb/mempoolpb/dsl/upon.mir.go +++ b/pkg/pb/mempoolpb/dsl/upon.mir.go @@ -14,7 +14,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Mempool](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Mempool](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/ordererpb/dsl/upon.mir.go b/pkg/pb/ordererpb/dsl/upon.mir.go index 382d5a317..d54494f2d 100644 --- a/pkg/pb/ordererpb/dsl/upon.mir.go +++ b/pkg/pb/ordererpb/dsl/upon.mir.go @@ -11,7 +11,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Orderer](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Orderer](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/ordererpb/pprepvalidatorpb/dsl/emit.mir.go b/pkg/pb/ordererpb/pprepvalidatorpb/dsl/emit.mir.go index 9659cc242..a910a1c8f 100644 --- a/pkg/pb/ordererpb/pprepvalidatorpb/dsl/emit.mir.go +++ b/pkg/pb/ordererpb/pprepvalidatorpb/dsl/emit.mir.go @@ -20,9 +20,9 @@ func ValidatePreprepare[C any](m dsl.Module, destModule types.ModuleID, preprepa Type: &types2.ValidatePreprepareOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.ValidatePreprepare(destModule, preprepare, origin)) + dsl.EmitEvent(m, events.ValidatePreprepare(destModule, preprepare, origin)) } func PreprepareValidated(m dsl.Module, destModule types.ModuleID, error error, origin *types2.ValidatePreprepareOrigin) { - dsl.EmitMirEvent(m, events.PreprepareValidated(destModule, error, origin)) + dsl.EmitEvent(m, events.PreprepareValidated(destModule, error, origin)) } diff --git a/pkg/pb/ordererpb/pprepvalidatorpb/dsl/upon.mir.go b/pkg/pb/ordererpb/pprepvalidatorpb/dsl/upon.mir.go index 4ae9d7784..7d62a7e17 100644 --- a/pkg/pb/ordererpb/pprepvalidatorpb/dsl/upon.mir.go +++ b/pkg/pb/ordererpb/pprepvalidatorpb/dsl/upon.mir.go @@ -12,7 +12,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_PprepValiadtor](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_PprepValiadtor](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/pbftpb/dsl/emit.mir.go b/pkg/pb/pbftpb/dsl/emit.mir.go index 35f5d5948..f151ff966 100644 --- a/pkg/pb/pbftpb/dsl/emit.mir.go +++ b/pkg/pb/pbftpb/dsl/emit.mir.go @@ -12,13 +12,13 @@ import ( // Module-specific dsl functions for emitting events. func ProposeTimeout(m dsl.Module, destModule types.ModuleID, proposeTimeout uint64) { - dsl.EmitMirEvent(m, events.ProposeTimeout(destModule, proposeTimeout)) + dsl.EmitEvent(m, events.ProposeTimeout(destModule, proposeTimeout)) } func ViewChangeSNTimeout(m dsl.Module, destModule types.ModuleID, view types1.ViewNr, numCommitted uint64) { - dsl.EmitMirEvent(m, events.ViewChangeSNTimeout(destModule, view, numCommitted)) + dsl.EmitEvent(m, events.ViewChangeSNTimeout(destModule, view, numCommitted)) } func ViewChangeSegTimeout(m dsl.Module, destModule types.ModuleID, viewChangeSegTimeout uint64) { - dsl.EmitMirEvent(m, events.ViewChangeSegTimeout(destModule, viewChangeSegTimeout)) + dsl.EmitEvent(m, events.ViewChangeSegTimeout(destModule, viewChangeSegTimeout)) } diff --git a/pkg/pb/pingpongpb/dsl/emit.mir.go b/pkg/pb/pingpongpb/dsl/emit.mir.go index b7c644969..647a80d11 100644 --- a/pkg/pb/pingpongpb/dsl/emit.mir.go +++ b/pkg/pb/pingpongpb/dsl/emit.mir.go @@ -11,5 +11,5 @@ import ( // Module-specific dsl functions for emitting events. func PingTime(m dsl.Module, destModule types.ModuleID) { - dsl.EmitMirEvent(m, events.PingTime(destModule)) + dsl.EmitEvent(m, events.PingTime(destModule)) } diff --git a/pkg/pb/pingpongpb/dsl/upon.mir.go b/pkg/pb/pingpongpb/dsl/upon.mir.go index 701587cdb..b762ad2ef 100644 --- a/pkg/pb/pingpongpb/dsl/upon.mir.go +++ b/pkg/pb/pingpongpb/dsl/upon.mir.go @@ -11,7 +11,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_PingPong](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_PingPong](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/testerpb/dsl/emit.mir.go b/pkg/pb/testerpb/dsl/emit.mir.go index e940b340e..259e869c3 100644 --- a/pkg/pb/testerpb/dsl/emit.mir.go +++ b/pkg/pb/testerpb/dsl/emit.mir.go @@ -11,5 +11,5 @@ import ( // Module-specific dsl functions for emitting events. func Tester(m dsl.Module, destModule types.ModuleID) { - dsl.EmitMirEvent(m, events.Tester(destModule)) + dsl.EmitEvent(m, events.Tester(destModule)) } diff --git a/pkg/pb/testerpb/dsl/upon.mir.go b/pkg/pb/testerpb/dsl/upon.mir.go index 064f2e46d..00a4d067c 100644 --- a/pkg/pb/testerpb/dsl/upon.mir.go +++ b/pkg/pb/testerpb/dsl/upon.mir.go @@ -11,7 +11,7 @@ import ( // Module-specific dsl functions for processing events. func UponTester(m dsl.Module, handler func() error) { - dsl.UponMirEvent[*types.Event_Tester](m, func(ev *types1.Tester) error { + dsl.UponEvent[*types.Event_Tester](m, func(ev *types1.Tester) error { return handler() }) } diff --git a/pkg/pb/threshcryptopb/dsl/emit.mir.go b/pkg/pb/threshcryptopb/dsl/emit.mir.go index 73747d755..ba82f2e63 100644 --- a/pkg/pb/threshcryptopb/dsl/emit.mir.go +++ b/pkg/pb/threshcryptopb/dsl/emit.mir.go @@ -19,11 +19,11 @@ func SignShare[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, c Type: &types1.SignShareOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.SignShare(destModule, data, origin)) + dsl.EmitEvent(m, events.SignShare(destModule, data, origin)) } func SignShareResult(m dsl.Module, destModule types.ModuleID, signatureShare []uint8, origin *types1.SignShareOrigin) { - dsl.EmitMirEvent(m, events.SignShareResult(destModule, signatureShare, origin)) + dsl.EmitEvent(m, events.SignShareResult(destModule, signatureShare, origin)) } func VerifyShare[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, signatureShare []uint8, nodeId types.NodeID, context *C) { @@ -34,11 +34,11 @@ func VerifyShare[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, Type: &types1.VerifyShareOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.VerifyShare(destModule, data, signatureShare, nodeId, origin)) + dsl.EmitEvent(m, events.VerifyShare(destModule, data, signatureShare, nodeId, origin)) } func VerifyShareResult(m dsl.Module, destModule types.ModuleID, ok bool, error string, origin *types1.VerifyShareOrigin) { - dsl.EmitMirEvent(m, events.VerifyShareResult(destModule, ok, error, origin)) + dsl.EmitEvent(m, events.VerifyShareResult(destModule, ok, error, origin)) } func VerifyFull[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, fullSignature []uint8, context *C) { @@ -49,11 +49,11 @@ func VerifyFull[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, Type: &types1.VerifyFullOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.VerifyFull(destModule, data, fullSignature, origin)) + dsl.EmitEvent(m, events.VerifyFull(destModule, data, fullSignature, origin)) } func VerifyFullResult(m dsl.Module, destModule types.ModuleID, ok bool, error string, origin *types1.VerifyFullOrigin) { - dsl.EmitMirEvent(m, events.VerifyFullResult(destModule, ok, error, origin)) + dsl.EmitEvent(m, events.VerifyFullResult(destModule, ok, error, origin)) } func Recover[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, signatureShares [][]uint8, context *C) { @@ -64,9 +64,9 @@ func Recover[C any](m dsl.Module, destModule types.ModuleID, data [][]uint8, sig Type: &types1.RecoverOrigin_Dsl{Dsl: dsl.MirOrigin(contextID)}, } - dsl.EmitMirEvent(m, events.Recover(destModule, data, signatureShares, origin)) + dsl.EmitEvent(m, events.Recover(destModule, data, signatureShares, origin)) } func RecoverResult(m dsl.Module, destModule types.ModuleID, fullSignature []uint8, ok bool, error string, origin *types1.RecoverOrigin) { - dsl.EmitMirEvent(m, events.RecoverResult(destModule, fullSignature, ok, error, origin)) + dsl.EmitEvent(m, events.RecoverResult(destModule, fullSignature, ok, error, origin)) } diff --git a/pkg/pb/threshcryptopb/dsl/upon.mir.go b/pkg/pb/threshcryptopb/dsl/upon.mir.go index 16a6287c0..d11e3910e 100644 --- a/pkg/pb/threshcryptopb/dsl/upon.mir.go +++ b/pkg/pb/threshcryptopb/dsl/upon.mir.go @@ -12,7 +12,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_ThreshCrypto](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_ThreshCrypto](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/transportpb/dsl/emit.mir.go b/pkg/pb/transportpb/dsl/emit.mir.go index 7dec72315..c995db85f 100644 --- a/pkg/pb/transportpb/dsl/emit.mir.go +++ b/pkg/pb/transportpb/dsl/emit.mir.go @@ -12,9 +12,9 @@ import ( // Module-specific dsl functions for emitting events. func SendMessage(m dsl.Module, destModule types.ModuleID, msg *types1.Message, destinations []types.NodeID) { - dsl.EmitMirEvent(m, events.SendMessage(destModule, msg, destinations)) + dsl.EmitEvent(m, events.SendMessage(destModule, msg, destinations)) } func MessageReceived(m dsl.Module, destModule types.ModuleID, from types.NodeID, msg *types1.Message) { - dsl.EmitMirEvent(m, events.MessageReceived(destModule, from, msg)) + dsl.EmitEvent(m, events.MessageReceived(destModule, from, msg)) } diff --git a/pkg/pb/transportpb/dsl/upon.mir.go b/pkg/pb/transportpb/dsl/upon.mir.go index 05b08e767..6da33a9c7 100644 --- a/pkg/pb/transportpb/dsl/upon.mir.go +++ b/pkg/pb/transportpb/dsl/upon.mir.go @@ -13,7 +13,7 @@ import ( // Module-specific dsl functions for processing events. func UponEvent[W types.Event_TypeWrapper[Ev], Ev any](m dsl.Module, handler func(ev *Ev) error) { - dsl.UponMirEvent[*types1.Event_Transport](m, func(ev *types.Event) error { + dsl.UponEvent[*types1.Event_Transport](m, func(ev *types.Event) error { w, ok := ev.Type.(W) if !ok { return nil diff --git a/pkg/pb/trantorpb/dsl/emit.mir.go b/pkg/pb/trantorpb/dsl/emit.mir.go index ae930fba0..87743e234 100644 --- a/pkg/pb/trantorpb/dsl/emit.mir.go +++ b/pkg/pb/trantorpb/dsl/emit.mir.go @@ -13,9 +13,9 @@ import ( // Module-specific dsl functions for emitting events. func ClientProgress(m dsl.Module, destModule types.ModuleID, progress map[types1.ClientID]*types2.DeliveredTXs) { - dsl.EmitMirEvent(m, events.ClientProgress(destModule, progress)) + dsl.EmitEvent(m, events.ClientProgress(destModule, progress)) } func EpochConfig(m dsl.Module, destModule types.ModuleID, epochNr types1.EpochNr, firstSn types1.SeqNr, length uint64, memberships []*types2.Membership) { - dsl.EmitMirEvent(m, events.EpochConfig(destModule, epochNr, firstSn, length, memberships)) + dsl.EmitEvent(m, events.EpochConfig(destModule, epochNr, firstSn, length, memberships)) } diff --git a/pkg/threshcrypto/threshcrypto.go b/pkg/threshcrypto/threshcrypto.go index 06a2cdc90..a7f93caeb 100644 --- a/pkg/threshcrypto/threshcrypto.go +++ b/pkg/threshcrypto/threshcrypto.go @@ -7,10 +7,9 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/threshcryptopb" - tcEvents "github.com/filecoin-project/mir/pkg/threshcrypto/events" - t "github.com/filecoin-project/mir/pkg/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + tcEvents "github.com/filecoin-project/mir/pkg/pb/threshcryptopb/events" + threshcryptopbtypes "github.com/filecoin-project/mir/pkg/pb/threshcryptopb/types" ) type MirModule struct { @@ -25,12 +24,12 @@ func (c *MirModule) ApplyEvents(eventsIn *events.EventList) (*events.EventList, return modules.ApplyEventsConcurrently(eventsIn, c.ApplyEvent) } -func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) { +func (c *MirModule) ApplyEvent(event *eventpbtypes.Event) (*events.EventList, error) { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init return events.EmptyList(), nil - case *eventpb.Event_ThreshCrypto: + case *eventpbtypes.Event_ThreshCrypto: return c.applyTCEvent(e.ThreshCrypto) default: // Complain about all other incoming event types. @@ -38,10 +37,10 @@ func (c *MirModule) ApplyEvent(event *eventpb.Event) (*events.EventList, error) } } -// apply a thresholdcryptopb.Event -func (c *MirModule) applyTCEvent(event *threshcryptopb.Event) (*events.EventList, error) { +// apply a thresholdcryptopbtypes.Event +func (c *MirModule) applyTCEvent(event *threshcryptopbtypes.Event) (*events.EventList, error) { switch e := event.Type.(type) { - case *threshcryptopb.Event_SignShare: + case *threshcryptopbtypes.Event_SignShare: // Compute signature share sigShare, err := c.threshCrypto.SignShare(e.SignShare.Data) @@ -49,14 +48,15 @@ func (c *MirModule) applyTCEvent(event *threshcryptopb.Event) (*events.EventList return nil, err } + origin := e.SignShare.Origin return events.ListOf( - tcEvents.SignShareResult(t.ModuleID(e.SignShare.Origin.Module), sigShare, e.SignShare.Origin), + tcEvents.SignShareResult(origin.Module, sigShare, origin), ), nil - case *threshcryptopb.Event_VerifyShare: + case *threshcryptopbtypes.Event_VerifyShare: // Verify signature share - err := c.threshCrypto.VerifyShare(e.VerifyShare.Data, e.VerifyShare.SignatureShare, t.NodeID(e.VerifyShare.NodeId)) + err := c.threshCrypto.VerifyShare(e.VerifyShare.Data, e.VerifyShare.SignatureShare, e.VerifyShare.NodeId) ok := err == nil var errStr string @@ -64,11 +64,12 @@ func (c *MirModule) applyTCEvent(event *threshcryptopb.Event) (*events.EventList errStr = err.Error() } + origin := e.VerifyShare.Origin return events.ListOf( - tcEvents.VerifyShareResult(t.ModuleID(e.VerifyShare.Origin.Module), ok, errStr, e.VerifyShare.Origin), + tcEvents.VerifyShareResult(origin.Module, ok, errStr, origin), ), nil - case *threshcryptopb.Event_VerifyFull: + case *threshcryptopbtypes.Event_VerifyFull: // Verify full signature err := c.threshCrypto.VerifyFull(e.VerifyFull.Data, e.VerifyFull.FullSignature) @@ -79,11 +80,12 @@ func (c *MirModule) applyTCEvent(event *threshcryptopb.Event) (*events.EventList errStr = err.Error() } + origin := e.VerifyFull.Origin return events.ListOf( - tcEvents.VerifyFullResult(t.ModuleID(e.VerifyFull.Origin.Module), ok, errStr, e.VerifyFull.Origin), + tcEvents.VerifyFullResult(origin.Module, ok, errStr, origin), ), nil - case *threshcryptopb.Event_Recover: + case *threshcryptopbtypes.Event_Recover: // Recover full signature from shares fullSig, err := c.threshCrypto.Recover(e.Recover.Data, e.Recover.SignatureShares) @@ -94,8 +96,9 @@ func (c *MirModule) applyTCEvent(event *threshcryptopb.Event) (*events.EventList errStr = err.Error() } + origin := e.Recover.Origin return events.ListOf( - tcEvents.RecoverResult(t.ModuleID(e.Recover.Origin.Module), fullSig, ok, errStr, e.Recover.Origin), + tcEvents.RecoverResult(origin.Module, fullSig, ok, errStr, origin), ), nil default: // Complain about all other incoming event types. diff --git a/pkg/timer/timer.go b/pkg/timer/timer.go index fe49451d0..605a3a8d8 100644 --- a/pkg/timer/timer.go +++ b/pkg/timer/timer.go @@ -8,7 +8,7 @@ import ( es "github.com/go-errors/errors" "github.com/filecoin-project/mir/pkg/events" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/timer/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" ) @@ -43,25 +43,25 @@ func (tm *Timer) ApplyEvents(ctx context.Context, eventList *events.EventList) e // when they are later stripped off their follow-ups, as this happens potentially concurrently // with the original event being processed by the interceptor. switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: // no actions on init - case *eventpb.Event_Timer: + case *eventpbtypes.Event_Timer: switch e := e.Timer.Type.(type) { - case *eventpb.TimerEvent_Delay: + case *eventpbtypes.TimerEvent_Delay: tm.Delay( ctx, events.ListOf(e.Delay.EventsToDelay...), - types.Duration(e.Delay.Delay), + e.Delay.Delay, ) - case *eventpb.TimerEvent_Repeat: + case *eventpbtypes.TimerEvent_Repeat: tm.Repeat( ctx, events.ListOf(e.Repeat.EventsToRepeat...), - types.Duration(e.Repeat.Delay), - tt.RetentionIndex(e.Repeat.RetentionIndex), + e.Repeat.Delay, + e.Repeat.RetentionIndex, ) - case *eventpb.TimerEvent_GarbageCollect: - tm.GarbageCollect(tt.RetentionIndex(e.GarbageCollect.RetentionIndex)) + case *eventpbtypes.TimerEvent_GarbageCollect: + tm.GarbageCollect(e.GarbageCollect.RetentionIndex) } default: return es.Errorf("unexpected type of Timer event: %T", event.Type) diff --git a/pkg/transactionreceiver/transactionreceiver.go b/pkg/transactionreceiver/transactionreceiver.go index 3e4edf20f..572744cd5 100644 --- a/pkg/transactionreceiver/transactionreceiver.go +++ b/pkg/transactionreceiver/transactionreceiver.go @@ -93,7 +93,7 @@ func (rr *TransactionReceiver) Listen(srv TransactionReceiver_ListenServer) erro if srErr := rr.node.InjectEvents(srv.Context(), events.ListOf(mempoolpbevents.NewTransactions( rr.moduleID, []*trantorpbtypes.Transaction{trantorpbtypes.TransactionFromPb(tx)}, - ).Pb())); srErr != nil { + ))); srErr != nil { // If submitting fails, stop receiving further transaction (and close connection). rr.logger.Log(logging.LevelError, fmt.Sprintf("Could not submit transaction (%v-%d): %v. Closing connection.", diff --git a/pkg/trantor/testing/smr_test.go b/pkg/trantor/testing/smr_test.go index 70f5fa11f..04dd8147d 100644 --- a/pkg/trantor/testing/smr_test.go +++ b/pkg/trantor/testing/smr_test.go @@ -11,6 +11,7 @@ import ( "time" "github.com/filecoin-project/mir/pkg/eventmangler" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" "github.com/filecoin-project/mir/pkg/trantor/types" "github.com/filecoin-project/mir/pkg/util/maputil" @@ -30,7 +31,6 @@ import ( "github.com/filecoin-project/mir/pkg/mempool/simplemempool" "github.com/filecoin-project/mir/pkg/modules" "github.com/filecoin-project/mir/pkg/net/libp2p" - "github.com/filecoin-project/mir/pkg/pb/eventpb" "github.com/filecoin-project/mir/pkg/testsim" "github.com/filecoin-project/mir/pkg/trantor" "github.com/filecoin-project/mir/pkg/trantor/appmodule" @@ -409,7 +409,7 @@ func newDeployment(conf *TestConfig) (*deploytest.Deployment, error) { var simulation *deploytest.Simulation if conf.Transport == "sim" { r := rand.New(rand.NewSource(conf.RandomSeed)) // nolint: gosec - eventDelayFn := func(e *eventpb.Event) time.Duration { + eventDelayFn := func(e *eventpbtypes.Event) time.Duration { // TODO: Make min and max event processing delay configurable return testsim.RandDuration(r, 0, time.Microsecond) } diff --git a/samples/availability-layer-demo/control-module.go b/samples/availability-layer-demo/control-module.go index edc255fbb..740fe8fda 100644 --- a/samples/availability-layer-demo/control-module.go +++ b/samples/availability-layer-demo/control-module.go @@ -10,7 +10,8 @@ import ( es "github.com/go-errors/errors" - apbtypes "github.com/filecoin-project/mir/pkg/pb/availabilitypb/types" + availabilitypbtypes "github.com/filecoin-project/mir/pkg/pb/availabilitypb/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" mempoolpbevents "github.com/filecoin-project/mir/pkg/pb/mempoolpb/events" trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" @@ -20,7 +21,6 @@ import ( "github.com/filecoin-project/mir/pkg/modules" "github.com/filecoin-project/mir/pkg/pb/availabilitypb" apbevents "github.com/filecoin-project/mir/pkg/pb/availabilitypb/events" - "github.com/filecoin-project/mir/pkg/pb/eventpb" ) type controlModule struct { @@ -41,7 +41,7 @@ func (m *controlModule) ApplyEvents(_ context.Context, events *events.EventList) for event := iter.Next(); event != nil; event = iter.Next() { switch event := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: go func() { err := m.readConsole() if err != nil { @@ -49,11 +49,11 @@ func (m *controlModule) ApplyEvents(_ context.Context, events *events.EventList) } }() - case *eventpb.Event_Availability: + case *eventpbtypes.Event_Availability: switch event := event.Availability.Type.(type) { - case *availabilitypb.Event_NewCert: - certBytes, err := proto.Marshal(event.NewCert.Cert) + case *availabilitypbtypes.Event_NewCert: + certBytes, err := proto.Marshal(event.NewCert.Cert.Pb()) if err != nil { return es.Errorf("error marshalling certificate: %w", err) } @@ -61,7 +61,7 @@ func (m *controlModule) ApplyEvents(_ context.Context, events *events.EventList) fmt.Println(base64.StdEncoding.EncodeToString(certBytes)) close(m.readyForNextCommand) - case *availabilitypb.Event_ProvideTransactions: + case *availabilitypbtypes.Event_ProvideTransactions: for _, tx := range event.ProvideTransactions.Txs { fmt.Println(string(tx.Data)) } @@ -132,13 +132,13 @@ func (m *controlModule) createBatch(scanner *bufio.Scanner) error { } tx := &trantorpbtypes.Transaction{Data: []byte(text)} - m.eventsOut <- events.ListOf(mempoolpbevents.NewTransactions("mempool", []*trantorpbtypes.Transaction{tx}).Pb()) + m.eventsOut <- events.ListOf(mempoolpbevents.NewTransactions("mempool", []*trantorpbtypes.Transaction{tx})) } - m.eventsOut <- events.ListOf(apbevents.RequestCert("availability", &apbtypes.RequestCertOrigin{ + m.eventsOut <- events.ListOf(apbevents.RequestCert("availability", &availabilitypbtypes.RequestCertOrigin{ Module: "control", - Type: &apbtypes.RequestCertOrigin_ContextStore{}, - }).Pb()) + Type: &availabilitypbtypes.RequestCertOrigin_ContextStore{}, + })) return nil } @@ -162,13 +162,13 @@ func (m *controlModule) readBatch(scanner *bufio.Scanner) error { if err != nil { return es.Errorf("error unmarshalling certificate: %w", err) } - cert := apbtypes.CertFromPb(_cert) + cert := availabilitypbtypes.CertFromPb(_cert) m.eventsOut <- events.ListOf(apbevents.RequestTransactions("availability", cert, - &apbtypes.RequestTransactionsOrigin{ + &availabilitypbtypes.RequestTransactionsOrigin{ Module: "control", - Type: &apbtypes.RequestTransactionsOrigin_ContextStore{}, - }).Pb()) + Type: &availabilitypbtypes.RequestTransactionsOrigin_ContextStore{}, + })) return nil } diff --git a/samples/bcb-demo/control-module.go b/samples/bcb-demo/control-module.go index 73a3164fe..fa28da90f 100644 --- a/samples/bcb-demo/control-module.go +++ b/samples/bcb-demo/control-module.go @@ -10,8 +10,8 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/bcbpb" - "github.com/filecoin-project/mir/pkg/pb/eventpb" + bcbpbtypes "github.com/filecoin-project/mir/pkg/pb/bcbpb/types" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" ) type controlModule struct { @@ -33,7 +33,7 @@ func (m *controlModule) ApplyEvents(_ context.Context, events *events.EventList) for event := iter.Next(); event != nil; event = iter.Next() { switch event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: if m.isLeader { go func() { err := m.readMessageFromConsole() @@ -45,12 +45,12 @@ func (m *controlModule) ApplyEvents(_ context.Context, events *events.EventList) fmt.Println("Waiting for the message...") } - case *eventpb.Event_Bcb: - bcbEvent := event.Type.(*eventpb.Event_Bcb).Bcb + case *eventpbtypes.Event_Bcb: + bcbEvent := event.Type.(*eventpbtypes.Event_Bcb).Bcb switch bcbEvent.Type.(type) { - case *bcbpb.Event_Deliver: - deliverEvent := bcbEvent.Type.(*bcbpb.Event_Deliver).Deliver + case *bcbpbtypes.Event_Deliver: + deliverEvent := bcbEvent.Type.(*bcbpbtypes.Event_Deliver).Deliver fmt.Println("Leader says: ", string(deliverEvent.Data)) default: @@ -79,12 +79,12 @@ func (m *controlModule) readMessageFromConsole() error { return es.Errorf("error reading from console: %w", scanner.Err()) } - m.eventsOut <- events.ListOf(&eventpb.Event{ + m.eventsOut <- events.ListOf(&eventpbtypes.Event{ DestModule: "bcb", - Type: &eventpb.Event_Bcb{ - Bcb: &bcbpb.Event{ - Type: &bcbpb.Event_Request{ - Request: &bcbpb.BroadcastRequest{ + Type: &eventpbtypes.Event_Bcb{ + Bcb: &bcbpbtypes.Event{ + Type: &bcbpbtypes.Event_Request{ + Request: &bcbpbtypes.BroadcastRequest{ Data: []byte(scanner.Text()), }, }, diff --git a/samples/chat-demo/main.go b/samples/chat-demo/main.go index a02e8c854..dfcc585d9 100644 --- a/samples/chat-demo/main.go +++ b/samples/chat-demo/main.go @@ -274,7 +274,7 @@ func run() error { TxNo: nextTxNo, Type: 0, Data: scanner.Bytes(), - }}).Pb()), + }})), ) // Print error if occurred. diff --git a/samples/pingpong/lowlevel/pingpong.go b/samples/pingpong/lowlevel/pingpong.go index dedb2e3da..537a9da41 100644 --- a/samples/pingpong/lowlevel/pingpong.go +++ b/samples/pingpong/lowlevel/pingpong.go @@ -8,14 +8,12 @@ import ( "github.com/filecoin-project/mir/pkg/events" "github.com/filecoin-project/mir/pkg/modules" - "github.com/filecoin-project/mir/pkg/pb/eventpb" eventpbevents "github.com/filecoin-project/mir/pkg/pb/eventpb/events" eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" - "github.com/filecoin-project/mir/pkg/pb/messagepb" messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" - "github.com/filecoin-project/mir/pkg/pb/pingpongpb" - "github.com/filecoin-project/mir/pkg/pb/transportpb" + pingpongpbtypes "github.com/filecoin-project/mir/pkg/pb/pingpongpb/types" transportpbevents "github.com/filecoin-project/mir/pkg/pb/transportpb/events" + transportpbtypes "github.com/filecoin-project/mir/pkg/pb/transportpb/types" "github.com/filecoin-project/mir/pkg/timer/types" t "github.com/filecoin-project/mir/pkg/types" ) @@ -38,20 +36,20 @@ func (p *Pingpong) ApplyEvents(evts *events.EventList) (*events.EventList, error return modules.ApplyEventsSequentially(evts, p.applyEvent) } -func (p *Pingpong) applyEvent(event *eventpb.Event) (*events.EventList, error) { +func (p *Pingpong) applyEvent(event *eventpbtypes.Event) (*events.EventList, error) { switch e := event.Type.(type) { - case *eventpb.Event_Init: + case *eventpbtypes.Event_Init: return p.applyInit() - case *eventpb.Event_Transport: + case *eventpbtypes.Event_Transport: switch e := e.Transport.Type.(type) { - case *transportpb.Event_MessageReceived: + case *transportpbtypes.Event_MessageReceived: return p.applyMessageReceived(e.MessageReceived) default: return nil, errors.Errorf("unknown transport event type: %T", e) } - case *eventpb.Event_PingPong: + case *eventpbtypes.Event_PingPong: switch e := e.PingPong.Type.(type) { - case *pingpongpb.Event_PingTime: + case *pingpongpbtypes.Event_PingTime: return p.applyPingTime(e.PingTime) default: return nil, errors.Errorf("unknown pingpong event type: %T", e) @@ -65,14 +63,14 @@ func (p *Pingpong) applyInit() (*events.EventList, error) { p.nextSn = 0 timerEvent := eventpbevents.TimerRepeat( "timer", - []*eventpbtypes.Event{eventpbtypes.EventFromPb(PingTimeEvent("pingpong"))}, + []*eventpbtypes.Event{PingTimeEvent("pingpong")}, types.Duration(time.Second), 0, ) - return events.ListOf(timerEvent.Pb()), nil + return events.ListOf(timerEvent), nil } -func (p *Pingpong) applyPingTime(_ *pingpongpb.PingTime) (*events.EventList, error) { +func (p *Pingpong) applyPingTime(_ *pingpongpbtypes.PingTime) (*events.EventList, error) { return p.sendPing() } @@ -86,18 +84,18 @@ func (p *Pingpong) sendPing() (*events.EventList, error) { ping := PingMessage("pingpong", p.nextSn) p.nextSn++ - sendMsgEvent := transportpbevents.SendMessage("transport", messagepbtypes.MessageFromPb(ping), []t.NodeID{destID}) - return events.ListOf(sendMsgEvent.Pb()), nil + sendMsgEvent := transportpbevents.SendMessage("transport", ping, []t.NodeID{destID}) + return events.ListOf(sendMsgEvent), nil } -func (p *Pingpong) applyMessageReceived(msg *transportpb.MessageReceived) (*events.EventList, error) { +func (p *Pingpong) applyMessageReceived(msg *transportpbtypes.MessageReceived) (*events.EventList, error) { switch message := msg.Msg.Type.(type) { - case *messagepb.Message_Pingpong: + case *messagepbtypes.Message_Pingpong: switch m := message.Pingpong.Type.(type) { - case *pingpongpb.Message_Ping: - return p.applyPing(m.Ping, t.NodeID(msg.From)) - case *pingpongpb.Message_Pong: - return p.applyPong(m.Pong, t.NodeID(msg.From)) + case *pingpongpbtypes.Message_Ping: + return p.applyPing(m.Ping, msg.From) + case *pingpongpbtypes.Message_Pong: + return p.applyPong(m.Pong, msg.From) default: return nil, errors.Errorf("unknown pingpong message type: %T", m) } @@ -106,14 +104,14 @@ func (p *Pingpong) applyMessageReceived(msg *transportpb.MessageReceived) (*even } } -func (p *Pingpong) applyPing(ping *pingpongpb.Ping, from t.NodeID) (*events.EventList, error) { +func (p *Pingpong) applyPing(ping *pingpongpbtypes.Ping, from t.NodeID) (*events.EventList, error) { fmt.Printf("Received ping from %s: %d\n", from, ping.SeqNr) pong := PongMessage("pingpong", ping.SeqNr) - sendMsgEvent := transportpbevents.SendMessage("transport", messagepbtypes.MessageFromPb(pong), []t.NodeID{from}) - return events.ListOf(sendMsgEvent.Pb()), nil + sendMsgEvent := transportpbevents.SendMessage("transport", pong, []t.NodeID{from}) + return events.ListOf(sendMsgEvent), nil } -func (p *Pingpong) applyPong(pong *pingpongpb.Pong, from t.NodeID) (*events.EventList, error) { +func (p *Pingpong) applyPong(pong *pingpongpbtypes.Pong, from t.NodeID) (*events.EventList, error) { fmt.Printf("Received pong from %s: %d\n", from, pong.SeqNr) return events.EmptyList(), nil } diff --git a/samples/pingpong/lowlevel/protobufs.go b/samples/pingpong/lowlevel/protobufs.go index abae1808d..9389ffe06 100644 --- a/samples/pingpong/lowlevel/protobufs.go +++ b/samples/pingpong/lowlevel/protobufs.go @@ -1,53 +1,53 @@ package lowlevel import ( - "github.com/filecoin-project/mir/pkg/pb/eventpb" - "github.com/filecoin-project/mir/pkg/pb/messagepb" - "github.com/filecoin-project/mir/pkg/pb/pingpongpb" + eventpbtypes "github.com/filecoin-project/mir/pkg/pb/eventpb/types" + messagepbtypes "github.com/filecoin-project/mir/pkg/pb/messagepb/types" + pingpongpbtypes "github.com/filecoin-project/mir/pkg/pb/pingpongpb/types" t "github.com/filecoin-project/mir/pkg/types" ) -func Message(destModule t.ModuleID, message *pingpongpb.Message) *messagepb.Message { - return &messagepb.Message{ - DestModule: destModule.Pb(), - Type: &messagepb.Message_Pingpong{Pingpong: message}, +func Message(destModule t.ModuleID, message *pingpongpbtypes.Message) *messagepbtypes.Message { + return &messagepbtypes.Message{ + DestModule: destModule, + Type: &messagepbtypes.Message_Pingpong{Pingpong: message}, } } -func PingMessage(destModule t.ModuleID, seqNr uint64) *messagepb.Message { +func PingMessage(destModule t.ModuleID, seqNr uint64) *messagepbtypes.Message { return Message( destModule, - &pingpongpb.Message{ - Type: &pingpongpb.Message_Ping{Ping: &pingpongpb.Ping{ + &pingpongpbtypes.Message{ + Type: &pingpongpbtypes.Message_Ping{Ping: &pingpongpbtypes.Ping{ SeqNr: seqNr, }}}, ) } -func PongMessage(destModule t.ModuleID, seqNr uint64) *messagepb.Message { +func PongMessage(destModule t.ModuleID, seqNr uint64) *messagepbtypes.Message { return Message( destModule, - &pingpongpb.Message{ - Type: &pingpongpb.Message_Pong{Pong: &pingpongpb.Pong{ + &pingpongpbtypes.Message{ + Type: &pingpongpbtypes.Message_Pong{Pong: &pingpongpbtypes.Pong{ SeqNr: seqNr, }}}, ) } -func Event(destModule t.ModuleID, ppEvent *pingpongpb.Event) *eventpb.Event { - return &eventpb.Event{ - DestModule: destModule.Pb(), - Type: &eventpb.Event_PingPong{ +func Event(destModule t.ModuleID, ppEvent *pingpongpbtypes.Event) *eventpbtypes.Event { + return &eventpbtypes.Event{ + DestModule: destModule, + Type: &eventpbtypes.Event_PingPong{ PingPong: ppEvent, }, } } -func PingTimeEvent(destModule t.ModuleID) *eventpb.Event { +func PingTimeEvent(destModule t.ModuleID) *eventpbtypes.Event { return Event( destModule, - &pingpongpb.Event{Type: &pingpongpb.Event_PingTime{ - PingTime: &pingpongpb.PingTime{}, + &pingpongpbtypes.Event{Type: &pingpongpbtypes.Event_PingTime{ + PingTime: &pingpongpbtypes.PingTime{}, }}, ) } From e2ec6e7fe07c7eff1dfa2e6e0f464e3f3361ead7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Breda?= Date: Thu, 24 Aug 2023 22:26:22 +0100 Subject: [PATCH 4/4] clientprogress: improve integration with dsl structs --- pkg/batchfetcher/batchfetcher.go | 4 ++-- pkg/checkpoint/checkpoint.go | 2 +- pkg/checkpoint/serializing.go | 4 ++-- pkg/clientprogress/clientprogress.go | 32 +++++++++++++++++++++++++--- pkg/clientprogress/deliveredtxs.go | 30 ++++++++++++++++++++++++-- pkg/pb/trantorpb/trantorpb.pb.go | 26 ++++++++++++++-------- pkg/pb/trantorpb/types/types.mir.go | 16 ++++++++------ pkg/util/libp2p/libp2p.go | 2 +- protos/trantorpb/trantorpb.proto | 4 ++-- 9 files changed, 92 insertions(+), 28 deletions(-) diff --git a/pkg/batchfetcher/batchfetcher.go b/pkg/batchfetcher/batchfetcher.go index 17ba12e03..313cdca3d 100644 --- a/pkg/batchfetcher/batchfetcher.go +++ b/pkg/batchfetcher/batchfetcher.go @@ -73,7 +73,7 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre event: apppbevents.NewEpoch(mc.Destination, epochNr, protocolModule), f: func(_ *eventpbtypes.Event) { clientProgress.GarbageCollect() - mppbdsl.NewEpoch(m, mc.Mempool, epochNr, trantorpbtypes.ClientProgressFromPb(clientProgress.Pb())) + mppbdsl.NewEpoch(m, mc.Mempool, epochNr, clientProgress.DslStruct()) }, }) output.Flush(m) @@ -138,7 +138,7 @@ func NewModule(mc ModuleConfig, epochNr tt.EpochNr, clientProgress *clientprogre clientProgress.GarbageCollect() trantorpbdsl.ClientProgress(m, mc.Checkpoint.Then(t.ModuleID(fmt.Sprintf("%v", epochNr))), - trantorpbtypes.ClientProgressFromPb(clientProgress.Pb()).Progress, + clientProgress.DslStruct().Progress, ) }, }) diff --git a/pkg/checkpoint/checkpoint.go b/pkg/checkpoint/checkpoint.go index a2e905eeb..b56e17cd9 100644 --- a/pkg/checkpoint/checkpoint.go +++ b/pkg/checkpoint/checkpoint.go @@ -134,7 +134,7 @@ func (sc *StableCheckpoint) StateSnapshot() *trantorpbtypes.StateSnapshot { } func (sc *StableCheckpoint) ClientProgress(logger logging.Logger) *clientprogress.ClientProgress { - return clientprogress.FromPb(sc.Snapshot.EpochData.ClientProgress.Pb(), logger) + return clientprogress.FromDslStruct(sc.Snapshot.EpochData.ClientProgress, logger) } func (sc *StableCheckpoint) Certificate() Certificate { diff --git a/pkg/checkpoint/serializing.go b/pkg/checkpoint/serializing.go index 775044c58..0fe8b9ba7 100644 --- a/pkg/checkpoint/serializing.go +++ b/pkg/checkpoint/serializing.go @@ -91,11 +91,11 @@ func serializeClientProgressForHash(clientProgress *trantorpbtypes.ClientProgres clientProgress.Progress, func(clientID tt.ClientID, deliveredTXs *trantorpbtypes.DeliveredTXs) (cont bool) { // Append client ID and low watermark. - data = append(data, []byte(clientID.Pb()), serializing.Uint64ToBytes(deliveredTXs.LowWm)) + data = append(data, []byte(clientID.Pb()), deliveredTXs.LowWm.Bytes()) // Append all transaction numbers delivered after the watermark. for _, txNo := range deliveredTXs.Delivered { - data = append(data, serializing.Uint64ToBytes(txNo)) + data = append(data, txNo.Bytes()) } return true }, diff --git a/pkg/clientprogress/clientprogress.go b/pkg/clientprogress/clientprogress.go index 0a768a756..55eb9eb4e 100644 --- a/pkg/clientprogress/clientprogress.go +++ b/pkg/clientprogress/clientprogress.go @@ -3,6 +3,7 @@ package clientprogress import ( "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/pb/trantorpb" + trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" ) @@ -34,7 +35,7 @@ func (cp *ClientProgress) Add(clID tt.ClientID, txNo tt.TxNo) bool { } func (cp *ClientProgress) GarbageCollect() map[tt.ClientID]tt.TxNo { - lowWMs := make(map[tt.ClientID]tt.TxNo) + lowWMs := make(map[tt.ClientID]tt.TxNo, len(cp.ClientTrackers)) for clientID, cwmt := range cp.ClientTrackers { lowWMs[clientID] = cwmt.GarbageCollect() } @@ -42,7 +43,7 @@ func (cp *ClientProgress) GarbageCollect() map[tt.ClientID]tt.TxNo { } func (cp *ClientProgress) Pb() *trantorpb.ClientProgress { - pb := make(map[string]*trantorpb.DeliveredTXs) + pb := make(map[string]*trantorpb.DeliveredTXs, len(cp.ClientTrackers)) for clientID, clientTracker := range cp.ClientTrackers { pb[clientID.Pb()] = clientTracker.Pb() } @@ -50,7 +51,7 @@ func (cp *ClientProgress) Pb() *trantorpb.ClientProgress { } func (cp *ClientProgress) LoadPb(pb *trantorpb.ClientProgress) { - cp.ClientTrackers = make(map[tt.ClientID]*DeliveredTXs) + cp.ClientTrackers = make(map[tt.ClientID]*DeliveredTXs, len(pb.Progress)) for clientID, deliveredTXs := range pb.Progress { cp.ClientTrackers[tt.ClientID(clientID)] = DeliveredTXsFromPb( deliveredTXs, @@ -59,8 +60,33 @@ func (cp *ClientProgress) LoadPb(pb *trantorpb.ClientProgress) { } } +func (cp *ClientProgress) LoadDslStruct(dslStruct *trantorpbtypes.ClientProgress) { + cp.ClientTrackers = make(map[tt.ClientID]*DeliveredTXs, len(dslStruct.Progress)) + for clientID, deliveredTXs := range dslStruct.Progress { + cp.ClientTrackers[clientID] = DeliveredTXsFromDslStruct( + deliveredTXs, + logging.Decorate(cp.logger, "", "clID", clientID), + ) + } +} + +func (cp *ClientProgress) DslStruct() *trantorpbtypes.ClientProgress { + ds := make(map[tt.ClientID]*trantorpbtypes.DeliveredTXs, len(cp.ClientTrackers)) + for clientID, clientTracker := range cp.ClientTrackers { + ds[clientID] = clientTracker.DslStruct() + } + + return &trantorpbtypes.ClientProgress{Progress: ds} +} + func FromPb(pb *trantorpb.ClientProgress, logger logging.Logger) *ClientProgress { cp := NewClientProgress(logger) cp.LoadPb(pb) return cp } + +func FromDslStruct(dslStruct *trantorpbtypes.ClientProgress, logger logging.Logger) *ClientProgress { + cp := NewClientProgress(logger) + cp.LoadDslStruct(dslStruct) + return cp +} diff --git a/pkg/clientprogress/deliveredtxs.go b/pkg/clientprogress/deliveredtxs.go index a9d03900a..16ce13427 100644 --- a/pkg/clientprogress/deliveredtxs.go +++ b/pkg/clientprogress/deliveredtxs.go @@ -3,6 +3,7 @@ package clientprogress import ( "github.com/filecoin-project/mir/pkg/logging" "github.com/filecoin-project/mir/pkg/pb/trantorpb" + trantorpbtypes "github.com/filecoin-project/mir/pkg/pb/trantorpb/types" tt "github.com/filecoin-project/mir/pkg/trantor/types" "github.com/filecoin-project/mir/pkg/util/maputil" ) @@ -23,15 +24,19 @@ type DeliveredTXs struct { // EmptyDeliveredTXs allocates and returns a new DeliveredTXs. func EmptyDeliveredTXs(logger logging.Logger) *DeliveredTXs { + return newDeliveredTXs(logger, 0) +} + +func newDeliveredTXs(logger logging.Logger, capacity int) *DeliveredTXs { return &DeliveredTXs{ lowWM: 0, - delivered: make(map[tt.TxNo]struct{}), + delivered: make(map[tt.TxNo]struct{}, capacity), logger: logger, } } func DeliveredTXsFromPb(pb *trantorpb.DeliveredTXs, logger logging.Logger) *DeliveredTXs { - dr := EmptyDeliveredTXs(logger) + dr := newDeliveredTXs(logger, len(pb.Delivered)) dr.lowWM = tt.TxNo(pb.LowWm) for _, txNo := range pb.Delivered { dr.delivered[tt.TxNo(txNo)] = struct{}{} @@ -39,6 +44,15 @@ func DeliveredTXsFromPb(pb *trantorpb.DeliveredTXs, logger logging.Logger) *Deli return dr } +func DeliveredTXsFromDslStruct(dslStruct *trantorpbtypes.DeliveredTXs, logger logging.Logger) *DeliveredTXs { + dr := newDeliveredTXs(logger, len(dslStruct.Delivered)) + dr.lowWM = dslStruct.LowWm + for _, txNo := range dslStruct.Delivered { + dr.delivered[txNo] = struct{}{} + } + return dr +} + // Contains returns true if the given txNo has already been added. func (dt *DeliveredTXs) Contains(txNo tt.TxNo) bool { @@ -91,3 +105,15 @@ func (dt *DeliveredTXs) Pb() *trantorpb.DeliveredTXs { Delivered: delivered, } } + +func (dt *DeliveredTXs) DslStruct() *trantorpbtypes.DeliveredTXs { + delivered := make([]tt.TxNo, len(dt.delivered)) + for i, txNo := range maputil.GetSortedKeys(dt.delivered) { + delivered[i] = txNo + } + + return &trantorpbtypes.DeliveredTXs{ + LowWm: dt.lowWM, + Delivered: delivered, + } +} diff --git a/pkg/pb/trantorpb/trantorpb.pb.go b/pkg/pb/trantorpb/trantorpb.pb.go index 32f9fb69e..5af9b2cd7 100644 --- a/pkg/pb/trantorpb/trantorpb.pb.go +++ b/pkg/pb/trantorpb/trantorpb.pb.go @@ -615,15 +615,23 @@ var file_trantorpb_trantorpb_proto_rawDesc = []byte{ 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x54, 0x58, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x3a, 0x04, 0x98, 0xa6, 0x1d, 0x01, 0x22, 0x49, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x69, - 0x76, 0x65, 0x72, 0x65, 0x64, 0x54, 0x58, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6c, 0x6f, 0x77, 0x5f, - 0x77, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x6f, 0x77, 0x57, 0x6d, 0x12, - 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x3a, 0x04, 0x80, - 0xa6, 0x1d, 0x01, 0x42, 0x32, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x2f, 0x6d, 0x69, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x38, 0x01, 0x3a, 0x04, 0x98, 0xa6, 0x1d, 0x01, 0x22, 0xc1, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x54, 0x58, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x6f, 0x77, + 0x5f, 0x77, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x3a, 0x82, 0xa6, 0x1d, 0x36, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x63, 0x6f, + 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x6d, 0x69, 0x72, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x54, 0x78, 0x4e, 0x6f, 0x52, 0x05, 0x6c, 0x6f, 0x77, 0x57, 0x6d, 0x12, 0x58, 0x0a, 0x09, + 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, + 0x3a, 0x82, 0xa6, 0x1d, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x66, 0x69, 0x6c, 0x65, 0x63, 0x6f, 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x2f, 0x6d, 0x69, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x78, 0x4e, 0x6f, 0x52, 0x09, 0x64, 0x65, 0x6c, + 0x69, 0x76, 0x65, 0x72, 0x65, 0x64, 0x3a, 0x04, 0x80, 0xa6, 0x1d, 0x01, 0x42, 0x32, 0x5a, 0x30, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x63, + 0x6f, 0x69, 0x6e, 0x2d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x6d, 0x69, 0x72, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x62, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x72, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/pb/trantorpb/types/types.mir.go b/pkg/pb/trantorpb/types/types.mir.go index 82053e33f..244f41809 100644 --- a/pkg/pb/trantorpb/types/types.mir.go +++ b/pkg/pb/trantorpb/types/types.mir.go @@ -274,8 +274,8 @@ func (*ClientProgress) MirReflect() mirreflect.Type { } type DeliveredTXs struct { - LowWm uint64 - Delivered []uint64 + LowWm types.TxNo + Delivered []types.TxNo } func DeliveredTXsFromPb(pb *trantorpb.DeliveredTXs) *DeliveredTXs { @@ -283,8 +283,10 @@ func DeliveredTXsFromPb(pb *trantorpb.DeliveredTXs) *DeliveredTXs { return nil } return &DeliveredTXs{ - LowWm: pb.LowWm, - Delivered: pb.Delivered, + LowWm: (types.TxNo)(pb.LowWm), + Delivered: types1.ConvertSlice(pb.Delivered, func(t uint64) types.TxNo { + return (types.TxNo)(t) + }), } } @@ -294,8 +296,10 @@ func (m *DeliveredTXs) Pb() *trantorpb.DeliveredTXs { } pbMessage := &trantorpb.DeliveredTXs{} { - pbMessage.LowWm = m.LowWm - pbMessage.Delivered = m.Delivered + pbMessage.LowWm = (uint64)(m.LowWm) + pbMessage.Delivered = types1.ConvertSlice(m.Delivered, func(t types.TxNo) uint64 { + return (uint64)(t) + }) } return pbMessage diff --git a/pkg/util/libp2p/libp2p.go b/pkg/util/libp2p/libp2p.go index e80f02ffd..06897691f 100644 --- a/pkg/util/libp2p/libp2p.go +++ b/pkg/util/libp2p/libp2p.go @@ -6,7 +6,7 @@ import ( "net" es "github.com/go-errors/errors" - "github.com/libp2p/go-libp2p" + libp2p "github.com/libp2p/go-libp2p" libp2pcrypto "github.com/libp2p/go-libp2p/core/crypto" "github.com/libp2p/go-libp2p/core/host" "github.com/libp2p/go-libp2p/core/peer" diff --git a/protos/trantorpb/trantorpb.proto b/protos/trantorpb/trantorpb.proto index 13d9ba74c..a2c035dd6 100644 --- a/protos/trantorpb/trantorpb.proto +++ b/protos/trantorpb/trantorpb.proto @@ -76,6 +76,6 @@ message ClientProgress { message DeliveredTXs { option (mir.struct) = true; - uint64 low_wm = 1; - repeated uint64 delivered = 2; + uint64 low_wm = 1 [(mir.type) = "github.com/filecoin-project/mir/pkg/trantor/types.TxNo"]; + repeated uint64 delivered = 2 [(mir.type) = "github.com/filecoin-project/mir/pkg/trantor/types.TxNo"]; }