mirror of
https://github.com/livekit/livekit.git
synced 2026-05-25 12:04:47 +00:00
44 lines
1.5 KiB
Go
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
|
|
}
|