示例#1
0
        /// <summary>
        /// Directly writes a message into the underlying ITunnel.
        /// </summary>
        /// <param name="msg">The message to send.</param>
        private void _SendMessage(Message msg)
        {
            if (msg == null)
            {
                return;
            }

            if (msg.Type == MessageType.Data)
            {
                if (msg.Store.ContainsKey("data"))
                {
                    Tunnel.DataBytesSent += msg.Store["data"].Length;
                }

                if (msg.Store.ContainsKey("message"))
                {
                    Tunnel.DataBytesSent += msg.Store["message"].Length;
                }
            }

            byte[] raw_message   = msg.Serialize();
            byte[] final_message = Suite.Encrypt(raw_message);

            _last_sent = DateTime.Now;
            if (!Closed)
            {
                Tunnel.Send(final_message);
            }
        }