[snowflake/main] Add Snowflake Event API interface

commit 75f770150d6c9943231cb6b8bde0b867137ea26f Author: Shelikhoo <xiaokangwang@outlook.com> Date: Fri Nov 26 15:12:46 2021 +0000 Add Snowflake Event API interface --- common/event/interface.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) 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) +}
participants (1)
-
shelikhooï¼ torproject.org