moqtransport

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrDefaultInvalidRange = DefaultSubscribeError{
							// contains filtered or unexported fields
	}

	ErrTrackDoesNotExist = DefaultSubscribeError{
							// contains filtered or unexported fields
	}

	ErrSubscribeTimeout = DefaultSubscribeError{
						// contains filtered or unexported fields
	}
)

* Subscribe Error

View Source
var (
	StatusUnsubscribed = DefaultSubscribeDoneStatus{
						// contains filtered or unexported fields
	}
	StatusEndedTrack = DefaultSubscribeDoneStatus{
						// contains filtered or unexported fields
	}
	StatusEndedSubscription = DefaultSubscribeDoneStatus{
							// contains filtered or unexported fields
	}
	StatusGoingAway = DefaultSubscribeDoneStatus{
					// contains filtered or unexported fields
	}
)
View Source
var (
	NoTerminateErr = DefaultTerminateError{
					// contains filtered or unexported fields
	}

	ErrProtocolViolation = DefaultTerminateError{
							// contains filtered or unexported fields
	}
	ErrDuplicatedTrackAlias = DefaultTerminateError{
							// contains filtered or unexported fields
	}
	ErrParameterLengthMismatch = DefaultTerminateError{
								// contains filtered or unexported fields
	}
	ErrTooManySubscribes = DefaultTerminateError{
							// contains filtered or unexported fields
	}
	ErrGoAwayTimeout = DefaultTerminateError{
						// contains filtered or unexported fields
	}
)
View Source
var (
	ErrDuplicatedTrackNamespace = DefaultAnnounceError{
		// contains filtered or unexported fields
	}
)
View Source
var ErrInternalError = InternalError{}
View Source
var (
	ErrSubscribeExpired = DefaultSubscribeDoneError{
		// contains filtered or unexported fields
	}
)
View Source
var ErrUnauthorizedError = InternalError{}
View Source
var ErrUnexpectedMessage = errors.New("unexpected message")
View Source
var ErrUnexpectedStreamType = errors.New("unexpected stream type")

Functions

This section is empty.

Types

type AnnounceConfig

type AnnounceConfig struct {
	AuthorizationInfo []string

	MaxCacheDuration time.Duration
}

type AnnounceError

type AnnounceError interface {
	error
	AnnounceErrorCode() AnnounceErrorCode
}

type AnnounceErrorCode

type AnnounceErrorCode uint32

* Announce Error

type Announcement

type Announcement struct {
	AuthorizationInfo string
	Parameters        moqtmessage.Parameters
	// contains filtered or unexported fields
}

type Client

type Client struct {
	SupportedVersions []moqtmessage.Version
	// contains filtered or unexported fields
}

type Connection

type Connection interface {
	AcceptStream(ctx context.Context) (Stream, error)
	AcceptUniStream(ctx context.Context) (ReceiveStream, error)
	CloseWithError(code SessionErrorCode, msg string) error
	ConnectionState() quic.ConnectionState
	Context() context.Context
	LocalAddr() net.Addr
	OpenStream() (Stream, error)
	OpenStreamSync(ctx context.Context) (Stream, error)
	OpenUniStream() (SendStream, error)
	OpenUniStreamSync(ctx context.Context) (str SendStream, err error)
	ReceiveDatagram(ctx context.Context) ([]byte, error)
	RemoteAddr() net.Addr
	SendDatagram(b []byte) error
}

type DefaultAnnounceError

type DefaultAnnounceError struct {
	// contains filtered or unexported fields
}

func (DefaultAnnounceError) Code

func (DefaultAnnounceError) Error

func (err DefaultAnnounceError) Error() string

type DefaultSubscribeDoneError

type DefaultSubscribeDoneError struct {
	// contains filtered or unexported fields
}

func (DefaultSubscribeDoneError) Error

func (err DefaultSubscribeDoneError) Error() string

func (DefaultSubscribeDoneError) Reason

func (err DefaultSubscribeDoneError) Reason() string

func (DefaultSubscribeDoneError) SubscribeDoneErrorCode

func (err DefaultSubscribeDoneError) SubscribeDoneErrorCode() SubscribeDoneStatusCode

type DefaultSubscribeDoneStatus

type DefaultSubscribeDoneStatus struct {
	// contains filtered or unexported fields
}

func (DefaultSubscribeDoneStatus) Code

func (DefaultSubscribeDoneStatus) Reason

func (status DefaultSubscribeDoneStatus) Reason() string

type DefaultSubscribeError

type DefaultSubscribeError struct {
	// contains filtered or unexported fields
}

func (DefaultSubscribeError) Error

func (err DefaultSubscribeError) Error() string

func (DefaultSubscribeError) SubscribeErrorCode

func (err DefaultSubscribeError) SubscribeErrorCode() SubscribeErrorCode

type DefaultTerminateError

type DefaultTerminateError struct {
	// contains filtered or unexported fields
}

func (DefaultTerminateError) Error

func (err DefaultTerminateError) Error() string

func (DefaultTerminateError) TerminateErrorCode

func (err DefaultTerminateError) TerminateErrorCode() TerminateErrorCode

type InternalError

type InternalError struct{}

func (InternalError) AnnounceErrorCode

func (InternalError) AnnounceErrorCode() AnnounceErrorCode

func (InternalError) Error

func (InternalError) Error() string

func (InternalError) SubscribeDoneErrorCode

func (InternalError) SubscribeDoneErrorCode() SubscribeDoneStatusCode

func (InternalError) SubscribeErrorCode

func (InternalError) SubscribeErrorCode() SubscribeErrorCode

func (InternalError) TerminateErrorCode

func (InternalError) TerminateErrorCode() TerminateErrorCode

type Publisher

type Publisher struct {
	Client
	MaxSubscribeID uint64
}

func (Publisher) OpenDataStream

func (p Publisher) OpenDataStream(group moqtmessage.GroupMessage) (SendStream, error)

func (Publisher) SendDatagram

func (p Publisher) SendDatagram(group moqtmessage.GroupMessage, payload []byte) error

func (*Publisher) SetupMORQ

func (p *Publisher) SetupMORQ(qconn quic.Connection, path string) (*Session, error)

func (*Publisher) SetupMOWT

func (p *Publisher) SetupMOWT(wtconn *webtransport.Session) (*Session, error)

type QUICHandler

type QUICHandler interface {
	HandlePath(path string) func(*Session)
}

type ReceiveAnnounceStream

type ReceiveAnnounceStream struct {
	// contains filtered or unexported fields
}

func (ReceiveAnnounceStream) ReceiveAnnounce

func (receiver ReceiveAnnounceStream) ReceiveAnnounce() (*Announcement, error)

func (ReceiveAnnounceStream) SubscribeNamespace

func (receiver ReceiveAnnounceStream) SubscribeNamespace(trackNamespacePrefix moqtmessage.TrackNamespacePrefix) error

type ReceiveStream

type ReceiveStream interface {
	io.Reader

	StreamID() StreamID
	CancelRead(StreamErrorCode)

	SetReadDeadline(time.Time) error
}

type ReceiveSubscribeStream

type ReceiveSubscribeStream struct {
	// contains filtered or unexported fields
}

func (*ReceiveSubscribeStream) AllowSubscribe

func (stream *ReceiveSubscribeStream) AllowSubscribe(subscription Subscription, trackStatus TrackStatus) error

func (ReceiveSubscribeStream) ReceiveSubscribe

func (stream ReceiveSubscribeStream) ReceiveSubscribe() (*Subscription, error)

func (ReceiveSubscribeStream) ReceiveSubscribeUpdate

func (stream ReceiveSubscribeStream) ReceiveSubscribeUpdate() (*Subscription, error)

func (ReceiveSubscribeStream) RejectSubscribe

func (stream ReceiveSubscribeStream) RejectSubscribe(err SubscribeError)

type ReceiveTrackStatusStream

type ReceiveTrackStatusStream struct {
	// contains filtered or unexported fields
}

*

func (*ReceiveTrackStatusStream) RequestTrackStatus

func (stream *ReceiveTrackStatusStream) RequestTrackStatus(trackNamespace moqtmessage.TrackNamespace, trackName string) (*TrackStatus, error)

type Relay

type Relay struct {
	TrackManager
}

type RetryTrackAliasError

type RetryTrackAliasError struct {
	// contains filtered or unexported fields
}

func (RetryTrackAliasError) Error

func (err RetryTrackAliasError) Error() string

func (RetryTrackAliasError) SubscribeErrorCode

func (err RetryTrackAliasError) SubscribeErrorCode() SubscribeErrorCode

func (RetryTrackAliasError) TrackAlias

func (err RetryTrackAliasError) TrackAlias() moqtmessage.TrackAlias

type SendAnnounceStream

type SendAnnounceStream struct {
	// contains filtered or unexported fields
}

func (SendAnnounceStream) Announce

func (sender SendAnnounceStream) Announce(trackNamespace moqtmessage.TrackNamespace, config AnnounceConfig) error

func (SendAnnounceStream) ReceiveSubscribeNamespace

func (sender SendAnnounceStream) ReceiveSubscribeNamespace() (moqtmessage.TrackNamespacePrefix, moqtmessage.Parameters, error)

type SendStream

type SendStream interface {
	io.Writer
	io.Closer

	StreamID() StreamID
	CancelWrite(StreamErrorCode)

	SetWriteDeadline(time.Time) error
}

type SendSubscribeStream

type SendSubscribeStream struct {
	// contains filtered or unexported fields
}

func (SendSubscribeStream) CancelSubscribe

func (stream SendSubscribeStream) CancelSubscribe(err SubscribeError)

TODO

  • Cancel the all subscriptions on the stream.

func (SendSubscribeStream) Subscribe

func (stream SendSubscribeStream) Subscribe(trackNamespace moqtmessage.TrackNamespace, trackName string, config SubscribeConfig) (*Subscription, *TrackStatus, error)

func (SendSubscribeStream) UpdateSubscription

func (stream SendSubscribeStream) UpdateSubscription(subscription Subscription, config SubscribeConfig) (*TrackStatus, error)

type SendTrackStatusStream

type SendTrackStatusStream struct {
	// contains filtered or unexported fields
}

*

func (SendTrackStatusStream) ReceiveTrackStatusRequest

func (stream SendTrackStatusStream) ReceiveTrackStatusRequest() (*moqtmessage.TrackStatusRequestMessage, error)

func (SendTrackStatusStream) SendTrackStatus

func (stream SendTrackStatusStream) SendTrackStatus(request moqtmessage.TrackStatusRequestMessage, ts TrackStatus) error

type Server

type Server struct {
	/*
	 * TLS configuration
	 */
	TLSConfig *tls.Config

	/*
	 * QUIC configuration
	 */
	QUICConfig *quic.Config

	// Versions supported by the moqt server
	SupportedVersions []moqtmessage.Version

	QUICHandler QUICHandler

	SetupHijacker func(moqtmessage.Parameters) (moqtmessage.Parameters, error)
}

func (*Server) CertFiles

func (s *Server) CertFiles(certFile, keyFile string) error

func (Server) ListenAndServeQUIC

func (s Server) ListenAndServeQUIC(addr string, tlsConfig *tls.Config, quicConfig *quic.Config) error

func (Server) ListenAndServeWT

func (s Server) ListenAndServeWT(wts *webtransport.Server) error

func (Server) SetupMORQ

func (s Server) SetupMORQ(qconn quic.Connection) (*Session, string, error)

func (Server) SetupMOWT

func (s Server) SetupMOWT(wtconn *webtransport.Session) (*Session, error)

type Session

type Session struct {
	Connection Connection
	// contains filtered or unexported fields
}

func (Session) AcceptAnnounceStream

func (sess Session) AcceptAnnounceStream(stream Stream, ctx context.Context) (*SendAnnounceStream, error)

func (Session) AcceptSubscribeStream

func (sess Session) AcceptSubscribeStream(stream Stream, ctx context.Context) (*ReceiveSubscribeStream, error)

func (Session) OpenAnnounceStream

func (sess Session) OpenAnnounceStream(stream Stream) (*ReceiveAnnounceStream, error)

func (Session) OpenSubscribeStream

func (sess Session) OpenSubscribeStream(stream Stream) (*SendSubscribeStream, error)

func (Session) PeekStreamType

func (sess Session) PeekStreamType(stream Stream) (StreamType, error)

type SessionErrorCode

type SessionErrorCode uint32 //TODO: move it to session.go

type Stream

type Stream interface {
	SendStream
	ReceiveStream
	SetDeadLine(time.Time) error

	// moqt
	SetType(StreamType)
	Type() StreamType
}

type StreamErrorCode

type StreamErrorCode uint32

type StreamID

type StreamID int64

type StreamType

type StreamType uint8

type SubscribeConfig

type SubscribeConfig struct {
	// Required
	SubscriberPriority moqtmessage.SubscriberPriority
	GroupOrder         moqtmessage.GroupOrder
	MinGroupSequence   uint64
	MaxGroupSequence   uint64

	// Optional
	AuthorizationInfo *string
	DeliveryTimeout   *time.Duration
	Parameters        moqtmessage.Parameters
}

type SubscribeDoneError

type SubscribeDoneError interface {
	error
	SubscribeDoneErrorCode() SubscribeDoneStatusCode
}

type SubscribeDoneStatus

type SubscribeDoneStatus interface {
	Reason() string
	Code() SubscribeDoneStatusCode
}

*

type SubscribeDoneStatusCode

type SubscribeDoneStatusCode uint32

*

type SubscribeError

type SubscribeError interface {
	error
	SubscribeErrorCode() SubscribeErrorCode
}

type SubscribeErrorCode

type SubscribeErrorCode uint32

* Subscribe Error

type Subscriber

type Subscriber struct {
	Client
}

func (Subscriber) AcceptDataStream

func (s Subscriber) AcceptDataStream(ctx context.Context) (*moqtmessage.GroupMessage, ReceiveStream, error)

func (Subscriber) ReceiveDatagram

func (s Subscriber) ReceiveDatagram(ctx context.Context) (*moqtmessage.GroupMessage, io.Reader, error)

func (*Subscriber) SetupMORQ

func (s *Subscriber) SetupMORQ(qconn quic.Connection, path string) (*Session, error)

type Subscription

type Subscription struct {
	// contains filtered or unexported fields
}

func (Subscription) GetConfig

func (s Subscription) GetConfig() SubscribeConfig

type TerminateError

type TerminateError interface {
	error
	TerminateErrorCode() TerminateErrorCode
}

type TerminateErrorCode

type TerminateErrorCode int

*

type TrackManager

type TrackManager struct {
	// contains filtered or unexported fields
}

type TrackNamespaceTree

type TrackNamespaceTree struct {
	// contains filtered or unexported fields
}

type TrackStatus

type TrackStatus struct {
	Code          moqtmessage.TrackStatusCode
	LatestGroupID moqtmessage.GroupID
	GroupOrder    moqtmessage.GroupOrder
	GroupExpires  time.Duration
}

type UnauthorizedError

type UnauthorizedError struct{}

func (UnauthorizedError) Error

func (UnauthorizedError) Error() string

func (UnauthorizedError) SubscribeDoneErrorCode

func (UnauthorizedError) SubscribeDoneErrorCode() SubscribeDoneStatusCode

func (UnauthorizedError) SubscribeErrorCode

func (UnauthorizedError) SubscribeErrorCode() SubscribeErrorCode

func (UnauthorizedError) TerminateErrorCode

func (UnauthorizedError) TerminateErrorCode() TerminateErrorCode

type Version

type Version uint64
const (
	FoalkDraft01 Version = Version(moqtmessage.FoalkDraft01)
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL