Changeset 4875 for branches/erijo-dev

Show
Ignore:
Timestamp:
03/20/07 05:40:08 (21 months ago)
Author:
erijo
Message:

Use new pipe class in event queue

Location:
branches/erijo-dev/licq
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • branches/erijo-dev/licq/licq/interface/eventqueue.h

    r4841 r4875  
    2323#include "licq/interface/event.h" 
    2424#include <boost/noncopyable.hpp> 
     25#include <list> 
    2526 
    2627namespace Licq 
     
    4849 
    4950public: 
     51  virtual int getFileDescriptor() const = 0; 
     52 
    5053  /** \return True if the queue is empty; otherwise false. */ 
    5154  virtual bool empty() const = 0; 
  • branches/erijo-dev/licq/src/eventqueue.cpp

    r4839 r4875  
    3333} 
    3434 
     35int Licq::TEventQueue::getFileDescriptor() const 
     36{ 
     37  return Pipe.getFileDescriptor(); 
     38} 
     39 
    3540bool Licq::TEventQueue::empty() const 
    3641{ 
    37   TMutexLocker locker(&Mutex); 
    38   locker.lock(); 
    39  
     42  TMutexLocker lock(&Mutex); 
    4043  return Queue.empty(); 
    4144} 
     
    4346void Licq::TEventQueue::push(IEventPtr& event) 
    4447{ 
    45   TMutexLocker locker(&Mutex); 
    46   locker.lock(); 
    47  
    4848  // Take ownership of event's contents. After this event.get() == NULL. 
    4949  IEventPtr newEvent; 
     
    5353  assert(newEvent.unique()); 
    5454 
     55  TMutexLocker lock(&Mutex); 
    5556  Queue.push_back(newEvent); 
     57 
     58  // Signal that there's a new event in the queue. 
     59  const char ch = 'E'; 
     60  Pipe.write(&ch, 1); 
    5661} 
    5762 
    5863Licq::IEventPtr Licq::TEventQueue::pop() 
    5964{ 
    60   TMutexLocker locker(&Mutex); 
    61   locker.lock(); 
     65  TMutexLocker lock(&Mutex); 
    6266 
    6367  assert(!Queue.empty()); 
     
    7074{ 
    7175  assert(list != NULL); 
    72   TMutexLocker locker(&Mutex); 
    73   locker.lock(); 
     76  TMutexLocker lock(&Mutex); 
    7477 
    7578  std::copy(Queue.begin(), Queue.end(), std::back_inserter(*list)); 
  • branches/erijo-dev/licq/src/eventqueue.h

    r4839 r4875  
    2323#include "licq/interface/eventqueue.h" 
    2424#include "utils/mutex.h" 
    25  
    26 #include <list> 
     25#include "utils/pipe.h" 
    2726 
    2827namespace Licq 
     
    4140  TEventList Queue; 
    4241 
     42  TPipe Pipe; 
     43 
    4344public: 
    4445  /// Construct a new event queue. 
     
    4950 
    5051  // From IEventQueue 
     52  int getFileDescriptor() const; 
    5153  bool empty() const; 
    5254  void push(IEventPtr& event);