MythTV master
mythwebsockettypes.h
Go to the documentation of this file.
1#ifndef MYTHWEBSOCKETTYPES_H
2#define MYTHWEBSOCKETTYPES_H
3
4// Std
5#include <deque>
6
7// Qt
8#include <QString>
9
10// MythTV
12
13enum WSOpCode : std::uint8_t
14{
23 WSOpClose = 0x8,
24 WSOpPing = 0x9,
25 WSOpPong = 0xA,
30 WSOpReservedF = 0xF
31};
32
34{
48};
49
50using WSQueue = std::deque<DataPayload>;
51
53using WSFrame = std::shared_ptr<MythWebSocketFrame>;
54
56{
57 public:
58 static WSFrame CreateFrame(const QByteArray& Header);
59
60 bool m_invalid { false };
62 uint64_t m_length { 0 };
63 bool m_final { false };
64 bool m_masked { false };
65 QByteArray m_mask;
67
68 protected:
69 MythWebSocketFrame(bool Invalid, WSOpCode Code, bool Final, bool Masked, uint64_t Length);
70};
71
72
73class MythWS
74{
75 public:
76 static QString OpCodeToString (WSOpCode Code);
78 static bool UseRawTextForProtocol (MythSocketProtocol Protocol);
79 static bool OpCodeIsValid (WSOpCode Code)
80 {
81 return Code == WSOpContinuation || Code == WSOpTextFrame ||
82 Code == WSOpBinaryFrame || Code == WSOpClose ||
83 Code == WSOpPing || Code == WSOpPong;
84 }
85};
86
87#endif
static QString OpCodeToString(WSOpCode Code)
static bool OpCodeIsValid(WSOpCode Code)
static WSOpCode FrameFormatForProtocol(MythSocketProtocol Protocol)
static bool UseRawTextForProtocol(MythSocketProtocol Protocol)
MythWebSocketFrame(bool Invalid, WSOpCode Code, bool Final, bool Masked, uint64_t Length)
static WSFrame CreateFrame(const QByteArray &Header)
unsigned short uint16_t
Definition: iso6937tables.h:3
std::shared_ptr< MythSharedData > DataPayload
MythSocketProtocol
std::shared_ptr< MythWebSocketFrame > WSFrame
@ WSOpReservedD
@ WSOpTextFrame
@ WSOpReservedE
@ WSOpReserved5
@ WSOpReserved3
@ WSOpBinaryFrame
@ WSOpContinuation
@ WSOpReserved7
@ WSOpReservedF
@ WSOpClose
@ WSOpReservedB
@ WSOpPing
@ WSOpPong
@ WSOpReservedC
@ WSOpReserved4
@ WSOpReserved6
WSErrorCode
@ WSCloseNoStatus
@ WSCloseNoExtensions
@ WSCloseTLSHandshakeError
@ WSCloseTooLarge
@ WSCloseBadData
@ WSCloseGoingAway
@ WSCloseUnexpectedErr
@ WSCloseNoTLS
@ WSClosePolicy
@ WSCloseAbnormal
@ WSCloseNormal
@ WSCloseUnsupported
@ WSCloseProtocolError
std::deque< DataPayload > WSQueue