Add Snowflake Event API interface

This commit is contained in:
Shelikhoo 2021-11-26 15:12:46 +00:00
parent d2f6ea5417
commit 75f770150d
No known key found for this signature in database
GPG key ID: C4D5E79D22B25316

45
common/event/interface.go Normal file
View file

@ -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)
}