3
3
using System . Collections . Generic ;
4
4
using ENet ;
5
5
using MLAPI . Transports ;
6
+ using Event = ENet . Event ;
7
+ using EventType = ENet . EventType ;
6
8
7
9
namespace MLAPI . EnetTransport
8
10
{
@@ -47,7 +49,7 @@ public override void Send(ulong clientId, ArraySegment<byte> data, string channe
47
49
packet . Create ( data . Array , data . Offset , data . Count , internalChannels [ channelNameToId [ channelName ] ] . Flags ) ;
48
50
49
51
GetEnetConnectionDetails ( clientId , out uint peerId ) ;
50
-
52
+
51
53
connectedEnetPeers [ peerId ] . Send ( channelNameToId [ channelName ] , ref packet ) ;
52
54
}
53
55
@@ -60,109 +62,108 @@ public override NetEventType PollEvent(out ulong clientId, out string channelNam
60
62
{
61
63
Event @event ;
62
64
63
- if ( host . CheckEvents ( out @event ) <= 0 && host . Service ( 0 , out @event ) > 0 )
65
+ if ( host . CheckEvents ( out @event ) <= 0 )
64
66
{
65
- clientId = GetMLAPIClientId ( @event . Peer . ID , false ) ;
66
-
67
- switch ( @event . Type )
67
+ if ( host . Service ( 0 , out @event ) <= 0 )
68
68
{
69
- case EventType . None :
70
- {
71
- channelName = null ;
72
- payload = new ArraySegment < byte > ( ) ;
73
-
74
- return NetEventType . Nothing ;
75
- }
76
- case EventType . Connect :
77
- {
78
- channelName = null ;
79
- payload = new ArraySegment < byte > ( ) ;
80
-
81
- connectedEnetPeers . Add ( @event . Peer . ID , @event . Peer ) ;
82
-
83
- return NetEventType . Connect ;
84
- }
85
- case EventType . Disconnect :
86
- {
87
- channelName = null ;
88
- payload = new ArraySegment < byte > ( ) ;
69
+ clientId = 0 ;
70
+ channelName = null ;
71
+ payload = new ArraySegment < byte > ( ) ;
89
72
90
- connectedEnetPeers . Remove ( @event . Peer . ID ) ;
91
-
92
- return NetEventType . Disconnect ;
93
- }
94
- case EventType . Receive :
73
+ return NetEventType . Nothing ;
74
+ }
75
+ }
76
+
77
+ clientId = GetMLAPIClientId ( @event . Peer . ID , false ) ;
78
+
79
+ switch ( @event . Type )
80
+ {
81
+ case EventType . None :
82
+ {
83
+ channelName = null ;
84
+ payload = new ArraySegment < byte > ( ) ;
85
+
86
+ return NetEventType . Nothing ;
87
+ }
88
+ case EventType . Connect :
89
+ {
90
+ channelName = null ;
91
+ payload = new ArraySegment < byte > ( ) ;
92
+
93
+ connectedEnetPeers . Add ( @event . Peer . ID , @event . Peer ) ;
94
+
95
+ return NetEventType . Connect ;
96
+ }
97
+ case EventType . Disconnect :
98
+ {
99
+ channelName = null ;
100
+ payload = new ArraySegment < byte > ( ) ;
101
+
102
+ connectedEnetPeers . Remove ( @event . Peer . ID ) ;
103
+
104
+ return NetEventType . Disconnect ;
105
+ }
106
+ case EventType . Receive :
107
+ {
108
+ channelName = channelIdToName [ @event . ChannelID ] ;
109
+ int size = @event . Packet . Length ;
110
+
111
+ if ( size > messageBuffer . Length )
95
112
{
96
- channelName = channelIdToName [ @event . ChannelID ] ;
97
- int size = @event . Packet . Length ;
98
-
99
- if ( size > messageBuffer . Length )
113
+ byte [ ] tempBuffer ;
114
+
115
+ if ( temporaryBufferReference != null && temporaryBufferReference . IsAlive && ( ( byte [ ] ) temporaryBufferReference . Target ) . Length >= size )
100
116
{
101
- byte [ ] tempBuffer ;
102
-
103
- if ( temporaryBufferReference != null && temporaryBufferReference . IsAlive && ( ( byte [ ] ) temporaryBufferReference . Target ) . Length >= size )
104
- {
105
- tempBuffer = ( byte [ ] ) temporaryBufferReference . Target ;
106
- }
107
- else
108
- {
109
- tempBuffer = new byte [ size ] ;
110
- temporaryBufferReference = new WeakReference ( tempBuffer ) ;
111
- }
112
-
113
- @event . Packet . CopyTo ( tempBuffer ) ;
114
- payload = new ArraySegment < byte > ( tempBuffer , 0 , size ) ;
117
+ tempBuffer = ( byte [ ] ) temporaryBufferReference . Target ;
115
118
}
116
119
else
117
120
{
118
- @event . Packet . CopyTo ( messageBuffer ) ;
119
- payload = new ArraySegment < byte > ( messageBuffer , 0 , size ) ;
121
+ tempBuffer = new byte [ size ] ;
122
+ temporaryBufferReference = new WeakReference ( tempBuffer ) ;
120
123
}
121
-
122
-
123
- @event . Packet . Dispose ( ) ;
124
-
125
- return NetEventType . Data ;
126
- }
127
- case EventType . Timeout :
128
- {
129
- channelName = null ;
130
- payload = new ArraySegment < byte > ( ) ;
131
-
132
- connectedEnetPeers . Remove ( @event . Peer . ID ) ;
133
-
134
- return NetEventType . Disconnect ;
124
+
125
+ @event . Packet . CopyTo ( tempBuffer ) ;
126
+ payload = new ArraySegment < byte > ( tempBuffer , 0 , size ) ;
135
127
}
136
- default :
128
+ else
137
129
{
138
- channelName = null ;
139
- payload = new ArraySegment < byte > ( ) ;
140
-
141
- return NetEventType . Nothing ;
130
+ @event . Packet . CopyTo ( messageBuffer ) ;
131
+ payload = new ArraySegment < byte > ( messageBuffer , 0 , size ) ;
142
132
}
133
+
134
+ @event . Packet . Dispose ( ) ;
135
+
136
+ return NetEventType . Data ;
137
+ }
138
+ case EventType . Timeout :
139
+ {
140
+ channelName = null ;
141
+ payload = new ArraySegment < byte > ( ) ;
142
+
143
+ connectedEnetPeers . Remove ( @event . Peer . ID ) ;
144
+
145
+ return NetEventType . Disconnect ;
146
+ }
147
+ default :
148
+ {
149
+ channelName = null ;
150
+ payload = new ArraySegment < byte > ( ) ;
151
+
152
+ return NetEventType . Nothing ;
143
153
}
144
- }
145
- else
146
- {
147
- channelName = null ;
148
- payload = new ArraySegment < byte > ( ) ;
149
- clientId = 0 ;
150
-
151
- return NetEventType . Nothing ;
152
154
}
153
155
}
154
156
155
157
public override void StartClient ( )
156
158
{
157
159
host = new Host ( ) ;
158
160
159
- Address address = new Address ( ) ;
161
+ host . Create ( 1 , MLAPI_CHANNELS . Length + Channels . Count ) ;
160
162
163
+ Address address = new Address ( ) ;
161
164
address . Port = Port ;
162
165
address . SetHost ( Address ) ;
163
166
164
- host . Create ( address , 1 ) ;
165
-
166
167
Peer serverPeer = host . Connect ( address , MLAPI_CHANNELS . Length + Channels . Count ) ;
167
168
168
169
serverPeerId = serverPeer . ID ;
@@ -171,14 +172,11 @@ public override void StartClient()
171
172
public override void StartServer ( )
172
173
{
173
174
host = new Host ( ) ;
174
-
175
- host . SetChannelLimit ( MLAPI_CHANNELS . Length + Channels . Count ) ;
176
175
177
176
Address address = new Address ( ) ;
178
-
179
177
address . Port = Port ;
180
178
181
- host . Create ( address , MaxClients ) ;
179
+ host . Create ( address , MaxClients , MLAPI_CHANNELS . Length + Channels . Count ) ;
182
180
}
183
181
184
182
public override void DisconnectRemoteClient ( ulong clientId )
0 commit comments