Пример #1
0
        /**
         * Adds the specified message to the queue.
         *
         * @param rawMessage the message to add.
         */
        public virtual void Add(RawMessage rawMessage)
        {
            Monitor.Enter(this);
            try
            {
                queue.Add(rawMessage);

                Monitor.PulseAll(this);
            }
            finally
            {
                Monitor.Exit(this);
            }
        }
Пример #2
0
        /**
         * The listening thread's run method.
         */
        public virtual void Run()
        {
            while (this.isRunning)
            {
                try
                {
                    byte[] message;
                    IPEndPoint rep = null;
                    message = sock.Receive(ref rep);

                    RawMessage rawMessage = new RawMessage( message,
                        message.Length, rep.Address, rep.Port,
                        sock.GetAddress(), sock.GetPort(),
                        GetDescriptor());

                    messageQueue.Add(rawMessage);
                }

                catch (Exception ex)
                {
                    if (!isRunning) return;

                    /** @todo do some better loggin will ya!!! */
                    // Console.WriteLine("A net access point has gone useless: {0} {1}", ex.Message, ex.StackTrace);

                    Stop();

                    errorHandler.HandleFatalError(
                        this,
                        "Unknown error occurred while listening for messages!",
                        ex);
                }
            }
        }