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
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
AUTHOR: John DiCamillo
OVERVIEW
========
User level network message
*/
#ifndef NetMsg_h
#define NetMsg_h
#include <windows.h>
#include "NetAddr.h"
#include "NetGram.h"
#include "NetSock.h"
#include "List.h"
// +-------------------------------------------------------------------+
class NetMsg
{
public:
static const char* TYPENAME() { return "NetMsg"; }
enum FLAGS { RELIABLE = 0x01, PRIORITY = 0x02, SCATTER = 0x04 };
enum TYPES { INVALID = 0,
RESERVED = 0xF0,
MULTIPART = 0xF1
};
enum { MAX_SIZE = 250 };
NetMsg(DWORD nid, void* d, int l, BYTE f=0);
NetMsg(DWORD nid, BYTE type, const char* text, int len, BYTE f=0);
~NetMsg();
int operator == (const NetMsg& m) const { return msgid == m.msgid &&
netid == m.netid; }
int operator < (const NetMsg& m) const;
DWORD Sequence() const { return msgid; }
DWORD NetID() const { return netid; }
const BYTE* Data() const { return data; }
BYTE Type() const { return data ? *data : 0; }
int Length() const { return len; }
BYTE Flags() const { return flags; }
bool IsReliable() const { return flags & RELIABLE ? true : false; }
bool IsPriority() const { return flags & PRIORITY ? true : false; }
bool IsScatter() const { return flags & SCATTER ? true : false; }
void SetSequence(DWORD s) { msgid = s; }
private:
DWORD msgid;
DWORD netid;
BYTE* data;
int len;
BYTE flags;
};
// +-------------------------------------------------------------------+
struct NetMsgMultipart {
BYTE type;
BYTE len;
DWORD msgid;
DWORD partno;
DWORD nparts;
BYTE payload[256];
};
// +-------------------------------------------------------------------+
#endif // NetMsg_h
|