/** * 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); } }
/** * 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); } } }