private void Channel_OnSendMessage(NetonChannel channel, DatagramMessage message) { if (this.onSendMessage != null) { this.onSendMessage(this, channel, message); } }
private void Channel_OnSendRawdata(NetonChannel channel, byte[] data, int offset, int count) { if (this.onSendRawdata != null) { this.onSendRawdata(this, channel, data, offset, count); } }
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; } }
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); } }
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(); }