Пример #1
0
        /// <summary>
        /// Receives a single message from the underlying ITunnel.
        /// </summary>
        /// <returns>The message received, or null if we failed to read a message.</returns>
        public Message Receive()
        {
            byte[] raw_message = Tunnel.Receive();

            if (raw_message == null || raw_message.Length == 0)
            {
                Log.Trace("Empty read from ITunnel");
                return(null);
            }

            var final_message = Suite.Decrypt(raw_message);

            try
            {
                var ret = Message.Parse(final_message);
                _last_received = DateTime.Now;
                return(ret);
            }
            catch
            {
                Log.Warn("Corrupt message data, ignoring");
                return(null);
            }
        }