From 5967fe7b0f82be44ae3caef35931207b3e2fc9aa Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 6 Nov 2024 14:50:41 +0100 Subject: [PATCH] bridgev2/simplevent: add pre/post handle support to EventMeta --- bridgev2/simplevent/meta.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bridgev2/simplevent/meta.go b/bridgev2/simplevent/meta.go index 9d7d697a..f9a1ea6a 100644 --- a/bridgev2/simplevent/meta.go +++ b/bridgev2/simplevent/meta.go @@ -7,6 +7,7 @@ package simplevent import ( + "context" "time" "github.com/rs/zerolog" @@ -25,6 +26,9 @@ type EventMeta struct { CreatePortal bool Timestamp time.Time StreamOrder int64 + + PreHandleFunc func(context.Context, *bridgev2.Portal) + PostHandleFunc func(context.Context, *bridgev2.Portal) } var ( @@ -33,6 +37,8 @@ var ( _ bridgev2.RemoteEventThatMayCreatePortal = (*EventMeta)(nil) _ bridgev2.RemoteEventWithTimestamp = (*EventMeta)(nil) _ bridgev2.RemoteEventWithStreamOrder = (*EventMeta)(nil) + _ bridgev2.RemotePreHandler = (*EventMeta)(nil) + _ bridgev2.RemotePostHandler = (*EventMeta)(nil) ) func (evt *EventMeta) AddLogContext(c zerolog.Context) zerolog.Context { @@ -73,6 +79,14 @@ func (evt *EventMeta) ShouldCreatePortal() bool { return evt.CreatePortal } +func (evt *EventMeta) PreHandle(ctx context.Context, portal *bridgev2.Portal) { + evt.PreHandleFunc(ctx, portal) +} + +func (evt *EventMeta) PostHandle(ctx context.Context, portal *bridgev2.Portal) { + evt.PostHandleFunc(ctx, portal) +} + func (evt EventMeta) WithType(t bridgev2.RemoteEventType) EventMeta { evt.Type = t return evt