-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathPipeTransport.hpp
More file actions
85 lines (74 loc) · 2.72 KB
/
PipeTransport.hpp
File metadata and controls
85 lines (74 loc) · 2.72 KB
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
77
78
79
80
81
82
83
84
85
#ifndef MS_RTC_PIPE_TRANSPORT_HPP
#define MS_RTC_PIPE_TRANSPORT_HPP
#include "RTC/SrtpSession.hpp"
#include "RTC/Transport.hpp"
#include "RTC/TransportTuple.hpp"
#include "RTC/UdpSocket.hpp"
namespace RTC
{
class PipeTransport : public RTC::Transport, public RTC::UdpSocket::Listener
{
private:
struct ListenIp
{
std::string ip;
std::string announcedIp;
};
private:
static RTC::SrtpSession::CryptoSuite srtpCryptoSuite;
static std::string srtpCryptoSuiteString;
static size_t srtpMasterLength;
public:
PipeTransport(const std::string& id, RTC::Transport::Listener* listener, json& data);
~PipeTransport() override;
public:
void FillJson(json& jsonObject) const override;
void FillJsonStats(json& jsonArray) override;
/* Methods inherited from Channel::ChannelSocket::RequestHandler. */
public:
void HandleRequest(Channel::ChannelRequest* request) override;
/* Methods inherited from PayloadChannel::PayloadChannelSocket::NotificationHandler. */
public:
void HandleNotification(PayloadChannel::PayloadChannelNotification* notification) override;
private:
bool IsConnected() const override;
bool HasSrtp() const;
void SendRtpPacket(
RTC::Consumer* consumer,
RTC::RtpPacket* packet,
RTC::Transport::onSendCallback* cb = nullptr,
RTC::Transport::OnSendCallbackCtx* ctx = nullptr) override;
void SendRtcpPacket(RTC::RTCP::Packet* packet) override;
void SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet) override;
void SendMessage(
RTC::DataConsumer* dataConsumer,
uint32_t ppid,
const uint8_t* msg,
size_t len,
onQueuedCallback* cb = nullptr) override;
void SendSctpData(const uint8_t* data, size_t len) override;
void RecvStreamClosed(uint32_t ssrc) override;
void SendStreamClosed(uint32_t ssrc) override;
void OnPacketReceived(RTC::TransportTuple* tuple, const uint8_t* data, size_t len);
void OnRtpDataReceived(RTC::TransportTuple* tuple, const uint8_t* data, size_t len);
void OnRtcpDataReceived(RTC::TransportTuple* tuple, const uint8_t* data, size_t len);
void OnSctpDataReceived(RTC::TransportTuple* tuple, const uint8_t* data, size_t len);
/* Pure virtual methods inherited from RTC::UdpSocket::Listener. */
public:
void OnUdpSocketPacketReceived(
RTC::UdpSocket* socket, const uint8_t* data, size_t len, const struct sockaddr* remoteAddr) override;
private:
// Allocated by this.
RTC::UdpSocket* udpSocket{ nullptr };
RTC::TransportTuple* tuple{ nullptr };
RTC::SrtpSession* srtpRecvSession{ nullptr };
RTC::SrtpSession* srtpSendSession{ nullptr };
// Others.
ListenIp listenIp;
struct sockaddr_storage remoteAddrStorage;
bool rtx{ false };
std::string srtpKey;
std::string srtpKeyBase64;
};
} // namespace RTC
#endif