mirror of
				https://github.com/aler9/gortsplib
				synced 2025-10-31 02:26:57 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			214 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package gortsplib
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/pion/rtcp"
 | |
| 	"github.com/pion/rtp"
 | |
| 
 | |
| 	"github.com/aler9/gortsplib/pkg/base"
 | |
| )
 | |
| 
 | |
| // ServerHandler is the interface implemented by all the server handlers.
 | |
| type ServerHandler interface{}
 | |
| 
 | |
| // ServerHandlerOnConnOpenCtx is the context of a connection opening.
 | |
| type ServerHandlerOnConnOpenCtx struct {
 | |
| 	Conn *ServerConn
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnConnOpen can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnConnOpen interface {
 | |
| 	OnConnOpen(*ServerHandlerOnConnOpenCtx)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnConnCloseCtx is the context of a connection closure.
 | |
| type ServerHandlerOnConnCloseCtx struct {
 | |
| 	Conn  *ServerConn
 | |
| 	Error error
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnConnClose can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnConnClose interface {
 | |
| 	OnConnClose(*ServerHandlerOnConnCloseCtx)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSessionOpenCtx is the context of a session opening.
 | |
| type ServerHandlerOnSessionOpenCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSessionOpen can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnSessionOpen interface {
 | |
| 	OnSessionOpen(*ServerHandlerOnSessionOpenCtx)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSessionCloseCtx is the context of a session closure.
 | |
| type ServerHandlerOnSessionCloseCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Error   error
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSessionClose can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnSessionClose interface {
 | |
| 	OnSessionClose(*ServerHandlerOnSessionCloseCtx)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnRequest can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnRequest interface {
 | |
| 	OnRequest(*ServerConn, *base.Request)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnResponse can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnResponse interface {
 | |
| 	OnResponse(*ServerConn, *base.Response)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnDescribeCtx is the context of a DESCRIBE request.
 | |
| type ServerHandlerOnDescribeCtx struct {
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnDescribe can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnDescribe interface {
 | |
| 	OnDescribe(*ServerHandlerOnDescribeCtx) (*base.Response, *ServerStream, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnAnnounceCtx is the context of an ANNOUNCE request.
 | |
| type ServerHandlerOnAnnounceCtx struct {
 | |
| 	Server  *Server
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| 	Tracks  Tracks
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnAnnounce can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnAnnounce interface {
 | |
| 	OnAnnounce(*ServerHandlerOnAnnounceCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSetupCtx is the context of a OPTIONS request.
 | |
| type ServerHandlerOnSetupCtx struct {
 | |
| 	Server    *Server
 | |
| 	Session   *ServerSession
 | |
| 	Conn      *ServerConn
 | |
| 	Request   *base.Request
 | |
| 	Path      string
 | |
| 	Query     string
 | |
| 	TrackID   int
 | |
| 	Transport Transport
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSetup can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnSetup interface {
 | |
| 	// must return a Response and a stream.
 | |
| 	// the stream is needed to
 | |
| 	// - add the session the the stream's readers
 | |
| 	// - send the stream SSRC to the session
 | |
| 	OnSetup(*ServerHandlerOnSetupCtx) (*base.Response, *ServerStream, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPlayCtx is the context of a PLAY request.
 | |
| type ServerHandlerOnPlayCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPlay can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnPlay interface {
 | |
| 	OnPlay(*ServerHandlerOnPlayCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnRecordCtx is the context of a RECORD request.
 | |
| type ServerHandlerOnRecordCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnRecord can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnRecord interface {
 | |
| 	OnRecord(*ServerHandlerOnRecordCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPauseCtx is the context of a PAUSE request.
 | |
| type ServerHandlerOnPauseCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPause can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnPause interface {
 | |
| 	OnPause(*ServerHandlerOnPauseCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnGetParameterCtx is the context of a GET_PARAMETER request.
 | |
| type ServerHandlerOnGetParameterCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnGetParameter can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnGetParameter interface {
 | |
| 	OnGetParameter(*ServerHandlerOnGetParameterCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSetParameterCtx is the context of a SET_PARAMETER request.
 | |
| type ServerHandlerOnSetParameterCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	Conn    *ServerConn
 | |
| 	Request *base.Request
 | |
| 	Path    string
 | |
| 	Query   string
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnSetParameter can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnSetParameter interface {
 | |
| 	OnSetParameter(*ServerHandlerOnSetParameterCtx) (*base.Response, error)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPacketRTPCtx is the context of a RTP packet.
 | |
| type ServerHandlerOnPacketRTPCtx struct {
 | |
| 	Session      *ServerSession
 | |
| 	TrackID      int
 | |
| 	Packet       *rtp.Packet
 | |
| 	PTSEqualsDTS bool
 | |
| 	H264NALUs    [][]byte
 | |
| 	H264PTS      time.Duration
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPacketRTP can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnPacketRTP interface {
 | |
| 	OnPacketRTP(*ServerHandlerOnPacketRTPCtx)
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPacketRTCPCtx is the context of a RTCP packet.
 | |
| type ServerHandlerOnPacketRTCPCtx struct {
 | |
| 	Session *ServerSession
 | |
| 	TrackID int
 | |
| 	Packet  rtcp.Packet
 | |
| }
 | |
| 
 | |
| // ServerHandlerOnPacketRTCP can be implemented by a ServerHandler.
 | |
| type ServerHandlerOnPacketRTCP interface {
 | |
| 	OnPacketRTCP(*ServerHandlerOnPacketRTCPCtx)
 | |
| }
 | 
