Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NetManager.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
using
System.IO
;
3
using
Terraria.Net.Sockets
;
4
5
namespace
Terraria.Net
;
6
7
public
class
NetManager
8
{
9
private
class
PacketTypeStorage
<T>
where
T :
NetModule
10
{
11
public
static
ushort
Id
;
12
13
public
static
T
Module
;
14
}
15
16
public
delegate
bool
BroadcastCondition
(
int
clientIndex
);
17
18
public
static
readonly
NetManager
Instance
=
new
NetManager
();
19
20
private
Dictionary<ushort, NetModule>
_modules
=
new
Dictionary<ushort, NetModule>
();
21
22
private
ushort
_moduleCount
;
23
24
private
NetManager
()
25
{
26
}
27
28
public
void
Register<T>
()
where
T :
NetModule
,
new
()
29
{
30
T val =
new
T();
31
PacketTypeStorage<T>
.Id =
_moduleCount
;
32
PacketTypeStorage<T>
.Module = val;
33
_modules
[
_moduleCount
] = val;
34
_moduleCount
++;
35
}
36
37
public
NetModule
GetModule<T>
()
where
T :
NetModule
38
{
39
return
PacketTypeStorage<T>
.Module;
40
}
41
42
public
ushort
GetId<T>
()
where
T :
NetModule
43
{
44
return
PacketTypeStorage<T>
.Id;
45
}
46
47
public
void
Read
(
BinaryReader
reader,
int
userId
,
int
readLength
)
48
{
49
ushort num = reader.
ReadUInt16
();
50
if
(
_modules
.
ContainsKey
(num))
51
{
52
_modules
[num].Deserialize(reader,
userId
);
53
}
54
Main
.
ActiveNetDiagnosticsUI
.CountReadModuleMessage(num,
readLength
);
55
}
56
57
public
void
Broadcast
(
NetPacket
packet
,
int
ignoreClient
= -1)
58
{
59
for
(
int
i = 0; i < 256; i++)
60
{
61
if
(i !=
ignoreClient
&&
Netplay
.
Clients
[i].IsConnected())
62
{
63
SendData
(
Netplay
.
Clients
[i].Socket,
packet
);
64
}
65
}
66
}
67
68
public
void
Broadcast
(
NetPacket
packet
,
BroadcastCondition
conditionToBroadcast
,
int
ignoreClient
= -1)
69
{
70
for
(
int
i = 0; i < 256; i++)
71
{
72
if
(i !=
ignoreClient
&&
Netplay
.
Clients
[i].IsConnected() &&
conditionToBroadcast
(i))
73
{
74
SendData
(
Netplay
.
Clients
[i].Socket,
packet
);
75
}
76
}
77
}
78
79
public
void
SendToSelf
(
NetPacket
packet
)
80
{
81
packet.Reader.BaseStream.Position = 3L;
82
Read
(
packet
.Reader,
Main
.
myPlayer
,
packet
.Length);
83
SendCallback
(
packet
);
84
Main
.
ActiveNetDiagnosticsUI
.CountSentModuleMessage(
packet
.Id,
packet
.Length);
85
}
86
87
public
void
BroadcastOrLoopback
(
NetPacket
packet
)
88
{
89
if
(
Main
.
netMode
== 2)
90
{
91
Broadcast
(
packet
);
92
}
93
else
if
(
Main
.
netMode
== 0)
94
{
95
SendToSelf
(
packet
);
96
}
97
}
98
99
public
void
SendToServerOrLoopback
(
NetPacket
packet
)
100
{
101
if
(
Main
.
netMode
== 1)
102
{
103
SendToServer
(
packet
);
104
}
105
else
if
(
Main
.
netMode
== 0)
106
{
107
SendToSelf
(
packet
);
108
}
109
}
110
111
public
void
SendToServerAndSelf
(
NetPacket
packet
)
112
{
113
if
(
Main
.
netMode
== 1)
114
{
115
SendToServer
(
packet
);
116
SendToSelf
(
packet
);
117
}
118
else
if
(
Main
.
netMode
== 0)
119
{
120
SendToSelf
(
packet
);
121
}
122
}
123
124
public
void
SendToServer
(
NetPacket
packet
)
125
{
126
SendData
(
Netplay
.
Connection
.Socket,
packet
);
127
}
128
129
public
void
SendToClient
(
NetPacket
packet
,
int
playerId
)
130
{
131
SendData
(
Netplay
.
Clients
[
playerId
].Socket,
packet
);
132
}
133
134
private
void
SendData
(
ISocket
socket
,
NetPacket
packet
)
135
{
136
if
(
Main
.
netMode
!= 0)
137
{
138
packet
.ShrinkToFit();
139
try
140
{
141
socket
.AsyncSend(
packet
.Buffer.Data, 0,
packet
.Length,
SendCallback
,
packet
);
142
}
143
catch
144
{
145
}
146
Main
.
ActiveNetDiagnosticsUI
.CountSentModuleMessage(
packet
.Id,
packet
.Length);
147
}
148
}
149
150
public
static
void
SendCallback
(
object
state)
151
{
152
((
NetPacket
)state).Recycle();
153
}
154
}
System.Collections.Generic.Dictionary.ContainsKey
bool ContainsKey(TKey key)
Definition
Dictionary.cs:917
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.IO.BinaryReader.ReadUInt16
virtual ushort ReadUInt16()
Definition
BinaryReader.cs:208
System.IO.BinaryReader
Definition
BinaryReader.cs:8
Terraria.Main.myPlayer
static int myPlayer
Definition
Main.cs:1801
Terraria.Main.netMode
static int netMode
Definition
Main.cs:2095
Terraria.Main.ActiveNetDiagnosticsUI
static INetDiagnosticsUI ActiveNetDiagnosticsUI
Definition
Main.cs:2789
Terraria.Main
Definition
Main.cs:79
Terraria.Net.NetManager.PacketTypeStorage.Module
static T Module
Definition
NetManager.cs:13
Terraria.Net.NetManager.PacketTypeStorage.Id
static ushort Id
Definition
NetManager.cs:11
Terraria.Net.NetManager.PacketTypeStorage
Definition
NetManager.cs:10
Terraria.Net.NetManager.SendToServer
void SendToServer(NetPacket packet)
Definition
NetManager.cs:124
Terraria.Net.NetManager.BroadcastOrLoopback
void BroadcastOrLoopback(NetPacket packet)
Definition
NetManager.cs:87
Terraria.Net.NetManager.GetModule< T >
NetModule GetModule< T >()
Definition
NetManager.cs:37
Terraria.Net.NetManager.Broadcast
void Broadcast(NetPacket packet, int ignoreClient=-1)
Definition
NetManager.cs:57
Terraria.Net.NetManager.Instance
static readonly NetManager Instance
Definition
NetManager.cs:18
Terraria.Net.NetManager._modules
Dictionary< ushort, NetModule > _modules
Definition
NetManager.cs:20
Terraria.Net.NetManager.Read
void Read(BinaryReader reader, int userId, int readLength)
Definition
NetManager.cs:47
Terraria.Net.NetManager.SendToSelf
void SendToSelf(NetPacket packet)
Definition
NetManager.cs:79
Terraria.Net.NetManager.SendData
void SendData(ISocket socket, NetPacket packet)
Definition
NetManager.cs:134
Terraria.Net.NetManager.BroadcastCondition
delegate bool BroadcastCondition(int clientIndex)
Terraria.Net.NetManager.SendCallback
static void SendCallback(object state)
Definition
NetManager.cs:150
Terraria.Net.NetManager.Broadcast
void Broadcast(NetPacket packet, BroadcastCondition conditionToBroadcast, int ignoreClient=-1)
Definition
NetManager.cs:68
Terraria.Net.NetManager.SendToServerOrLoopback
void SendToServerOrLoopback(NetPacket packet)
Definition
NetManager.cs:99
Terraria.Net.NetManager.NetManager
NetManager()
Definition
NetManager.cs:24
Terraria.Net.NetManager._moduleCount
ushort _moduleCount
Definition
NetManager.cs:22
Terraria.Net.NetManager.Register< T >
void Register< T >()
Definition
NetManager.cs:28
Terraria.Net.NetManager.SendToClient
void SendToClient(NetPacket packet, int playerId)
Definition
NetManager.cs:129
Terraria.Net.NetManager.SendToServerAndSelf
void SendToServerAndSelf(NetPacket packet)
Definition
NetManager.cs:111
Terraria.Net.NetManager.GetId< T >
ushort GetId< T >()
Definition
NetManager.cs:42
Terraria.Net.NetManager
Definition
NetManager.cs:8
Terraria.Net.NetModule
Definition
NetModule.cs:6
Terraria.Netplay.Clients
static RemoteClient[] Clients
Definition
Netplay.cs:37
Terraria.Netplay.Connection
static RemoteServer Connection
Definition
Netplay.cs:39
Terraria.Netplay
Definition
Netplay.cs:19
Terraria.Net.Sockets.ISocket
Definition
ISocket.cs:4
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.IO.FileAccess.Read
@ Read
System.IO
Definition
ConsoleStream.cs:3
Terraria.Net.Sockets
Definition
ISocket.cs:1
Terraria.Net
Definition
ISocket.cs:1
Terraria.Net.NetPacket
Definition
NetPacket.cs:7
source
Terraria.Net
NetManager.cs
Generated by
1.10.0