コード例 #1
0
        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);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        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);
                    }
                }
            }
        }