feat: simplify event service interface (#14859)

Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: marbar3778 <marbar3778@yahoo.com>
This commit is contained in:
Robert Zaremba 2023-02-09 21:30:48 +01:00 committed by GitHub
parent 29477eb273
commit da5db35bcc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,28 +11,33 @@ import (
// event.Service is a core API type that should be provided by the runtime module being used to
// build an app via depinject.
type Service interface {
// EmitProtoEvent emits events represented as a protobuf message (as described in ADR 032).
EventManager(context.Context) Manager
}
// Manager represents an event manager which can emit events.
type Manager interface {
// Emit emits events represented as a protobuf message (as described in ADR 032).
//
// Callers SHOULD assume that these events may be included in consensus. These events
// MUST be emitted deterministically and adding, removing or changing these events SHOULD
// be considered state-machine breaking.
EmitProtoEvent(ctx context.Context, event protoiface.MessageV1) error
Emit(ctx context.Context, event protoiface.MessageV1) error
// EmitKVEvent emits an event based on an event and kv-pair attributes.
// EmitKV emits an event based on an event and kv-pair attributes.
//
// These events will not be part of consensus and adding, removing or changing these events is
// not a state-machine breaking change.
EmitKVEvent(ctx context.Context, eventType string, attrs ...KVEventAttribute) error
EmitKV(ctx context.Context, eventType string, attrs ...Attribute) error
// EmitProtoEventNonConsensus emits events represented as a protobuf message (as described in ADR 032), without
// EmitNonConsensus emits events represented as a protobuf message (as described in ADR 032), without
// including it in blockchain consensus.
//
// These events will not be part of consensus and adding, removing or changing events is
// not a state-machine breaking change.
EmitProtoEventNonConsensus(ctx context.Context, event protoiface.MessageV1) error
EmitNonConsensus(ctx context.Context, event protoiface.MessageV1) error
}
// KVEventAttribute is a kv-pair event attribute.
type KVEventAttribute struct {
type Attribute struct {
Key, Value string
}