MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / PopEvent

Method PopEvent

Source/Engine/Networking/Drivers/ENetDriver.cpp:165–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

163}
164
165bool ENetDriver::PopEvent(NetworkEvent& eventPtr)
166{
167 ASSERT(_host);
168 ENetEvent event;
169 const int result = enet_host_service(_host, &event, 0);
170 if (result < 0)
171 LOG(Error, "Failed to check ENet events!");
172 if (result > 0)
173 {
174 // Copy sender data
175 const uint32 connectionId = enet_peer_get_id(event.peer);
176 eventPtr.Sender.ConnectionId = connectionId;
177
178 switch (event.type)
179 {
180 case ENET_EVENT_TYPE_CONNECT:
181 eventPtr.EventType = NetworkEventType::Connected;
182 if (IsServer())
183 _peerMap.Add(connectionId, event.peer);
184 break;
185 case ENET_EVENT_TYPE_DISCONNECT:
186 eventPtr.EventType = NetworkEventType::Disconnected;
187 if (IsServer())
188 _peerMap.Remove(connectionId);
189 break;
190 case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
191 eventPtr.EventType = NetworkEventType::Timeout;
192 if (IsServer())
193 _peerMap.Remove(connectionId);
194 break;
195 case ENET_EVENT_TYPE_RECEIVE:
196 eventPtr.EventType = NetworkEventType::Message;
197 eventPtr.Message = _networkHost->CreateMessage();
198 eventPtr.Message.Length = event.packet->dataLength;
199 Platform::MemoryCopy(eventPtr.Message.Buffer, event.packet->data, event.packet->dataLength);
200 break;
201 default:
202 break;
203 }
204
205 // Got event
206 return true;
207 }
208
209 // No events
210 return false;
211}
212
213void ENetDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message)
214{

Callers

nothing calls this directly

Calls 6

enet_host_serviceFunction · 0.85
enet_peer_get_idFunction · 0.85
IsServerFunction · 0.85
CreateMessageMethod · 0.80
AddMethod · 0.45
RemoveMethod · 0.45

Tested by

no test coverage detected