Documentation ¶
Index ¶
- Variables
- func GetLogger() *logrus.Logger
- func SetLogger(logger *logrus.Logger)
- type ChanClientStream
- type ChanClientStreamFactory
- type ChanServerConn
- type Client
- type ClientStreamFactory
- type ComputationReporter
- type SFUStatusSyncer
- type ServerConn
- type Service
- type SessionEvent
- type SessionEvent_State
- type SessionTracker
- type StupidComputationReporter
- type StupidSessionTracker
- type StupidTrackForwarder
- type StupidTrackProcesser
- type StupidTransmissionReporter
- type ToolBox
- type TrackForwarder
- type TrackProcessor
- type TransmissionReporter
Constants ¶
This section is empty.
Variables ¶
var WarnDalay = 4 * time.Second
Functions ¶
Types ¶
type ChanClientStream ¶
ChanClientStream a ClientStream based on chan for test
func (ChanClientStream[S]) Recv ¶
func (c ChanClientStream[S]) Recv() (S, error)
type ChanClientStreamFactory ¶
func NewChanClientStreamFactory ¶
func NewChanClientStreamFactory[S proto.Status](service *Service[S]) ChanClientStreamFactory[S]
func (ChanClientStreamFactory[S]) NewClientStream ¶
func (c ChanClientStreamFactory[S]) NewClientStream(ctx context.Context) (stream.ClientStream[proto.Request, S], error)
type ChanServerConn ¶
ChanServerConn a ServerConn based on chan for test
func (ChanServerConn[S]) ID ¶
func (c ChanServerConn[S]) ID() string
func (ChanServerConn[S]) Send ¶
func (c ChanServerConn[S]) Send(status S) error
type Client ¶
type Client[S proto.Status, R proto.Report] struct { *stream.Client[proto.Request, S] OnStatusRecv func(s S) // contains filtered or unexported fields }
Client for send/recv Status/Report
func (*Client[S, R]) SendReport ¶
func (c *Client[S, R]) SendReport(report R)
SendReport send the report, maybe lose when cannot connect
func (*Client[S, R]) SendStatus ¶
func (c *Client[S, R]) SendStatus(status S)
SendStatus send the Status, if there is a new status should be sent, the last send will be canceled
type ClientStreamFactory ¶
type ClientStreamFactory[S proto.Status] interface { NewClientStream(ctx context.Context) (stream.ClientStream[proto.Request, S], error) }
ClientStreamFactory for stream.Client. Generate stream.ClientStream for reconnect
type ComputationReporter ¶
type ComputationReporter interface { // Bind ComputationReporter to a channel // you should push your ComputationReport into this channel Bind(chan<- *pb.ComputationReport) }
ComputationReporter describe an abstract SFU that can report the Transmission quality
type SFUStatusSyncer ¶
type SFUStatusSyncer struct {
// contains filtered or unexported fields
}
SFUStatusSyncer is a Client to sync SFUStatus
func NewSFUStatusSyncer ¶
func NewSFUStatusSyncer(factory ClientStreamFactory[*pb.SFUStatus], myself *pb.Node, toolbox ToolBox) *SFUStatusSyncer
func (*SFUStatusSyncer) NotifySFUStatus ¶
func (s *SFUStatusSyncer) NotifySFUStatus()
func (*SFUStatusSyncer) Start ¶
func (s *SFUStatusSyncer) Start()
func (*SFUStatusSyncer) Stop ¶
func (s *SFUStatusSyncer) Stop()
type ServerConn ¶
type ServerConn[S proto.Status] interface { setmap.IfaceSetMapItem[string] Send(S) error Recv() (proto.Request, error) }
func NewChanCSPair ¶
func NewChanCSPair[S proto.Status](id string) (ServerConn[S], stream.ClientStream[proto.Request, S])
type Service ¶
type Service[S proto.Status] struct { Alg proto.Algorithm // The core algorithm // contains filtered or unexported fields }
Service represents isglb node
func (*Service[S]) Sync ¶
func (isglb *Service[S]) Sync(sig ServerConn[S]) error
Sync receive current Status, call the algorithm, and reply expected SFUStatus
type SessionEvent ¶
type SessionEvent struct { Session *pb.ClientNeededSession State SessionEvent_State }
SessionEvent describe a event, user's join or leave
func (*SessionEvent) Clone ¶
func (event *SessionEvent) Clone() *SessionEvent
type SessionEvent_State ¶
type SessionEvent_State int32
const ( SessionEvent_ADD SessionEvent_State = 0 SessionEvent_REMOVE SessionEvent_State = 1 )
type SessionTracker ¶
type SessionTracker interface { // FetchSessionEvent fetch a SessionEvent // Block until return a new SessionEvent FetchSessionEvent() *SessionEvent }
SessionTracker describe an abstract SFU that can report the user's join and leave
type StupidComputationReporter ¶
func (*StupidComputationReporter) Bind ¶
func (d *StupidComputationReporter) Bind(chan<- *pb.ComputationReport)
type StupidSessionTracker ¶
type StupidSessionTracker struct { }
func (StupidSessionTracker) FetchSessionEvent ¶
func (d StupidSessionTracker) FetchSessionEvent() *SessionEvent
type StupidTrackForwarder ¶
type StupidTrackForwarder struct { }
func (StupidTrackForwarder) ReplaceForwardTrack ¶
func (t StupidTrackForwarder) ReplaceForwardTrack(oldTrackInfo *pb.ForwardTrack, newTrackInfo *pb.ForwardTrack)
func (StupidTrackForwarder) StartForwardTrack ¶
func (t StupidTrackForwarder) StartForwardTrack(trackInfo *pb.ForwardTrack)
func (StupidTrackForwarder) StopForwardTrack ¶
func (t StupidTrackForwarder) StopForwardTrack(trackInfo *pb.ForwardTrack)
type StupidTrackProcesser ¶
type StupidTrackProcesser struct { }
func (StupidTrackProcesser) ReplaceProceedTrack ¶
func (t StupidTrackProcesser) ReplaceProceedTrack(oldTrackInfo *pb.ProceedTrack, newTrackInfo *pb.ProceedTrack)
func (StupidTrackProcesser) StartProceedTrack ¶
func (t StupidTrackProcesser) StartProceedTrack(trackInfo *pb.ProceedTrack)
func (StupidTrackProcesser) StopProceedTrack ¶
func (t StupidTrackProcesser) StopProceedTrack(trackInfo *pb.ProceedTrack)
type StupidTransmissionReporter ¶
func (*StupidTransmissionReporter) Bind ¶
func (d *StupidTransmissionReporter) Bind(chan<- *pb.TransmissionReport)
type ToolBox ¶
type ToolBox struct { TrackForwarder TrackForwarder TrackProcessor TrackProcessor TransmissionReporter TransmissionReporter ComputationReporter ComputationReporter SessionTracker SessionTracker }
type TrackForwarder ¶
type TrackForwarder interface { // StartForwardTrack begin a track route StartForwardTrack(trackInfo *pb.ForwardTrack) // StopForwardTrack end a track route StopForwardTrack(trackInfo *pb.ForwardTrack) // ReplaceForwardTrack change a track route ReplaceForwardTrack(oldTrackInfo *pb.ForwardTrack, newTrackInfo *pb.ForwardTrack) }
TrackForwarder describe an abstract SFU that can forward video tracks
type TrackProcessor ¶
type TrackProcessor interface { // StartProceedTrack begin a track proceed StartProceedTrack(trackInfo *pb.ProceedTrack) // StopProceedTrack end a track proceed StopProceedTrack(trackInfo *pb.ProceedTrack) // ReplaceProceedTrack change a track proceed ReplaceProceedTrack(oldTrackInfo *pb.ProceedTrack, newTrackInfo *pb.ProceedTrack) }
TrackProcessor describe an abstract SFU that can proceed video tracks
type TransmissionReporter ¶
type TransmissionReporter interface { // Bind TransmissionReporter to a channel // you should push your TransmissionReport into this channel Bind(chan<- *pb.TransmissionReport) }
TransmissionReporter describe an abstract SFU that can report the Transmission quality