From 75f770150d6c9943231cb6b8bde0b867137ea26f Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Fri, 26 Nov 2021 15:12:46 +0000 Subject: [PATCH] Add Snowflake Event API interface --- common/event/interface.go | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 common/event/interface.go diff --git a/common/event/interface.go b/common/event/interface.go new file mode 100644 index 0000000..697f2b7 --- /dev/null +++ b/common/event/interface.go @@ -0,0 +1,45 @@ +package event + +import "github.com/pion/webrtc/v3" + +type SnowflakeEvent interface { + IsSnowflakeEvent() + String() string +} + +type EventOnOfferCreated struct { + SnowflakeEvent + WebRTCLocalDescription *webrtc.SessionDescription + Error error +} + +type EventOnBrokerRendezvous struct { + SnowflakeEvent + WebRTCRemoteDescription *webrtc.SessionDescription + Error error +} + +type EventOnSnowflakeConnected struct { + SnowflakeEvent +} + +type EventOnSnowflakeConnectionFailed struct { + SnowflakeEvent + Error error +} + +type SnowflakeEventReceiver interface { + // OnNewSnowflakeEvent notify receiver about a new event + // This method MUST not block + OnNewSnowflakeEvent(event SnowflakeEvent) +} + +type SnowflakeEventDispatcher interface { + SnowflakeEventReceiver + // AddSnowflakeEventListener allow receiver(s) to receive event notification + // when OnNewSnowflakeEvent is called on the dispatcher. + // Every event listener added will be called when an event is received by the dispatcher. + // The order each listener is called is undefined. + AddSnowflakeEventListener(receiver SnowflakeEventReceiver) + RemoveSnowflakeEventListener(receiver SnowflakeEventReceiver) +}