Files
livekit/pkg/rtc/interfaces.go
T

44 lines
1.5 KiB
Go

package rtc
import (
"time"
"github.com/pion/rtcp"
"github.com/pion/webrtc/v3"
"github.com/livekit/livekit-server/proto/livekit"
)
type WebsocketClient interface {
ReadMessage() (messageType int, p []byte, err error)
WriteMessage(messageType int, data []byte) error
WriteControl(messageType int, data []byte, deadline time.Time) error
}
type SignalConnection interface {
ReadRequest() (*livekit.SignalRequest, error)
WriteResponse(*livekit.SignalResponse) error
}
// use interface to make it easier to mock
type PeerConnection interface {
OnICECandidate(f func(*webrtc.ICECandidate))
OnICEConnectionStateChange(func(webrtc.ICEConnectionState))
OnTrack(f func(*webrtc.TrackRemote, *webrtc.RTPReceiver))
OnDataChannel(func(d *webrtc.DataChannel))
OnNegotiationNeeded(f func())
Close() error
SetRemoteDescription(desc webrtc.SessionDescription) error
SetLocalDescription(desc webrtc.SessionDescription) error
CreateOffer(options *webrtc.OfferOptions) (webrtc.SessionDescription, error)
CreateAnswer(options *webrtc.AnswerOptions) (webrtc.SessionDescription, error)
AddICECandidate(candidate webrtc.ICECandidateInit) error
WriteRTCP(pkts []rtcp.Packet) error
// used by datatrack
CreateDataChannel(label string, options *webrtc.DataChannelInit) (*webrtc.DataChannel, error)
// used by mediatrack
AddTransceiverFromTrack(track webrtc.TrackLocal, init ...webrtc.RtpTransceiverInit) (*webrtc.RTPTransceiver, error)
ConnectionState() webrtc.PeerConnectionState
RemoveTrack(sender *webrtc.RTPSender) error
}