public void ProcessIncoming(Action <EndPoint, TeleportReader> deserializer) { foreach (var endpoint in _endpointCollection.GetEndpoints()) { var endpointChannels = _endpointCollection.GetChannelsOfEndpoint(endpoint); for (byte channelId = 0; channelId < endpointChannels.Length; channelId++) { var channel = _endpointCollection.GetChannelOfEndpoint(endpoint, channelId); while (channel.IncomingMessageCount > 0) { var next = channel.GetNextIncomingData(); using (var stream = new MemoryStream(next)) { using (var reader = new TeleportReader(stream)) { deserializer(endpoint, reader); } } } } } }
private void SendOutgoingDataAllChannelsOfAllEndpoints(Socket socket, EndpointCollection endpointCollection) { byte[] data; BaseTeleportChannel channel; ITeleportPacketBuffer packetBuffer; foreach (var endpoint in endpointCollection.GetEndpoints()) { packetBuffer = _endpointCollection.GetBufferOfEndpoint(endpoint); var endpointChannels = endpointCollection.GetChannelsOfEndpoint(endpoint); for (byte channelId = 0; channelId < endpointChannels.Length; channelId++) { channel = endpointChannels[channelId]; while (channel.OutgoingMessageCount > 0) { data = channel.GetNextOutgoingData(); data = packetBuffer.CreatePacket(channelId, data, 0, (ushort)data.Length); ClientSocketSend(socket, data, data.Length, SocketFlags.None, endpoint); } } } }