Пример #1
0
 private void Channel_OnSendMessage(NetonChannel channel, DatagramMessage message)
 {
     if (this.onSendMessage != null)
     {
         this.onSendMessage(this, channel, message);
     }
 }
Пример #2
0
 private void Channel_OnSendRawdata(NetonChannel channel, byte[] data, int offset, int count)
 {
     if (this.onSendRawdata != null)
     {
         this.onSendRawdata(this, channel, data, offset, count);
     }
 }
Пример #3
0
        private void OnRecv(NetonChannel channel, byte[] data, int offset, int count)
        {
            this.mRecvMemory.Position = this.mRecvMemory.Length;
            this.mRecvMemory.Write(data, offset, count);
            if (count < data.Length - offset)
            {
                this.mRecvMemory.Position = this.mMemoryPosition;
                for (byte[] rawdata = this.mDatagramManager.AnalyzeMessage(this.mRecvMemory);
                     rawdata != null;
                     rawdata = this.mDatagramManager.AnalyzeMessage(this.mRecvMemory))
                {
                    this.mActiveTime = DateTime.Now;
                    if (this.onRecvRawdata != null)
                    {
                        this.onRecvRawdata(this, rawdata, 0, rawdata.Length);
                    }
                    if (this.onRecvMessage != null)
                    {
                        DatagramMessage message = this.mDatagramManager.DepackMessage(data);
                        this.onRecvMessage(this, message);
                    }
                }

                if (this.mRecvMemory.Position > NetonChannel.memorySize && this.mRecvMemory.Position == this.mRecvMemory.Length)
                {
                    this.mRecvMemory.Close();
                    this.mRecvMemory = new MemoryStream();
                }
                this.mMemoryPosition = this.mRecvMemory.Position;
            }
        }
Пример #4
0
 private void DeleteChannel(NetonChannel channel)
 {
     channel.onRecvRawdata -= this.Channel_OnRecvRawdata;
     channel.onRecvMessage -= this.Channel_OnRecvMessage;
     channel.onSendRawdata -= this.Channel_OnSendRawdata;
     channel.onSendMessage -= this.Channel_OnSendMessage;
     channel.onClose       -= this.DeleteChannel;
     lock (this.mChannels)
     {
         this.mChannels.Remove(channel);
     }
     if (this.onDeleteChannel != null)
     {
         this.onDeleteChannel(this, channel);
     }
 }
Пример #5
0
        private void CreateChannel(TcpClient client)
        {
            NetonChannel channel = new NetonChannel(client, this.mDatagramManager);

            channel.onRecvRawdata += this.Channel_OnRecvRawdata;
            channel.onRecvMessage += this.Channel_OnRecvMessage;
            channel.onSendRawdata += this.Channel_OnSendRawdata;
            channel.onSendMessage += this.Channel_OnSendMessage;
            channel.onClose       += this.DeleteChannel;
            lock (this.mChannels)
            {
                this.mChannels.Add(channel);
            }
            if (this.onCreateChannel != null)
            {
                this.onCreateChannel(this, channel);
            }
            channel.Open();
        }