-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwsmessages.pas
98 lines (73 loc) · 2.15 KB
/
wsmessages.pas
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
86
87
88
89
90
91
92
93
94
95
96
97
unit wsmessages;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, fgl, wsutils;
type
// Represent opcodes
TWebsocketMessageType = (wmtContinue = 0, wmtString = 1, wmtBinary =
2, wmtClose = 8, wmtPing = 9, wmtPong = 10);
TWebsocketMessageTypes = set of TWebsocketMessageType;
{ TWebsocketMessage }
TWebsocketMessage = class
private
FMessageType: TWebsocketMessageType;
public
constructor Create(const AMessageType: TWebsocketMessageType);
property MessageType: TWebsocketMessageType read FMessageType;
end;
{ TWebsocketStringMessage }
TWebsocketStringMessage = class(TWebsocketMessage)
private
FData: UTF8String;
public
constructor Create(const AData: UTF8String);
property Data: UTF8String read FData;
end;
{ TWebsocketPongMessage }
TWebsocketPongMessage = class(TWebsocketMessage)
private
FData: UTF8String;
public
constructor Create(const AData: UTF8String);
property Data: UTF8String read FData;
end;
{ TWebsocketBinaryMessage }
TWebsocketBinaryMessage = class(TWebsocketMessage)
private
FData: TBytes;
public
constructor Create(const AData: TBytes);
property Data: TBytes read FData;
end;
TWebsocketMessageList = class(specialize TFPGList<TWebsocketMessage>);
TWebsocketMessageOwnerList = class(specialize TFPGObjectList<TWebsocketMessage>);
TLockedWebsocketMessageList = class(specialize TThreadedObject<TWebsocketMessageList>);
implementation
{ TWebsocketMessage }
constructor TWebsocketMessage.Create(const AMessageType: TWebsocketMessageType);
begin
FMessageType := AMessageType;
end;
{ TWebsocketStringMessage }
constructor TWebsocketStringMessage.Create(const AData: UTF8String);
begin
inherited Create(wmtString);
FData := AData;
SetLength(FData, Length(FData));
end;
{ TWebsocketPongMessage }
constructor TWebsocketPongMessage.Create(const AData: UTF8String);
begin
inherited Create(wmtPong);
FData := AData;
SetLength(FData, Length(FData));
end;
{ TWebsocketBinaryMessage }
constructor TWebsocketBinaryMessage.Create(const AData: TBytes);
begin
inherited Create(wmtBinary);
FData := AData;
SetLength(FData, Length(FData));
end;
end.