/
direct_transport.go
76 lines (62 loc) · 1.93 KB
/
direct_transport.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package rtc
import (
"encoding/json"
"github.com/kr/pretty"
"github.com/pion/rtcp"
"github.com/rs/zerolog"
"github.com/byyam/mediasoup-go-worker/pkg/mediasoupdata"
"github.com/byyam/mediasoup-go-worker/pkg/rtpparser"
"github.com/byyam/mediasoup-go-worker/pkg/zerowrapper"
"github.com/byyam/mediasoup-go-worker/workerchannel"
)
type DirectTransport struct {
ITransport
id string
logger zerolog.Logger
}
type directTransportParam struct {
options mediasoupdata.DirectTransportOptions
transportParam
}
func newDirectTransport(param directTransportParam) (ITransport, error) {
var err error
t := &DirectTransport{
id: param.Id,
logger: zerowrapper.NewScope("direct-transport", param.Id),
}
param.SendRtpPacketFunc = t.SendRtpPacket
param.SendRtcpPacketFunc = t.SendRtcpPacket
param.SendRtcpCompoundPacketFunc = t.SendRtcpCompoundPacket
param.NotifyCloseFunc = t.Close
param.options.Direct = true
t.ITransport, err = newTransport(param.transportParam)
if err != nil {
return nil, err
}
t.logger.Info().Msgf("newDirectTransport options:%# v", pretty.Formatter(param.options))
workerchannel.RegisterHandler(param.Id, t.HandleRequest)
return t, nil
}
func (t *DirectTransport) FillJson() json.RawMessage {
// todo
return nil
}
func (t *DirectTransport) SendRtpPacket(packet *rtpparser.Packet) {
t.logger.Info().Msg("send rtp packet")
}
func (t *DirectTransport) SendRtcpPacket(packet rtcp.Packet) {
t.logger.Info().Msg("send rtcp packet")
}
func (t *DirectTransport) SendRtcpCompoundPacket(packets []rtcp.Packet) {
t.logger.Info().Msg("send rtcp compound packet")
}
func (t *DirectTransport) Close() {
t.logger.Info().Msg("direct transport closed")
}
func (t *DirectTransport) HandleRequest(request workerchannel.RequestData, response *workerchannel.ResponseData) {
t.logger.Debug().Str("request", request.String()).Msg("handle")
switch request.Method {
default:
t.ITransport.HandleRequest(request, response)
}
}