[tor-commits] [snowflake/main] Add Snowflake Event API interface

shelikhoo at torproject.org shelikhoo at torproject.org
Tue Jan 25 12:50:36 UTC 2022


commit 75f770150d6c9943231cb6b8bde0b867137ea26f
Author: Shelikhoo <xiaokangwang at 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)
+}





More information about the tor-commits mailing list