EventHelix.com: CASE Tools; Real-time and Embedded System Design; Object Oriented Design EventStudio 2.0: System Engineering CASE ToolEventStudio 2.5
Sequence diagram based system design and modeling
Home   What's New   EventStudio 2.5   Real-time Mantra   Thought Projects   Contact Us
Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

Priority_Message_Queue.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #include <queue>           // STL header file for queue
00009 #include <list>
00010 using namespace std;       // Specify that we are using the std namespace
00011 
00012 class Message;
00013 
00023 
00024 class Priority_Message_Queue
00025 {
00028     struct Entry
00029     {
00031         Message *pMsg;
00032 
00034         int priority;
00035     };
00036 
00050     
00051     struct Compare_Messages
00052     {
00055         bool operator () (const Entry& left , const Entry& right)
00056         {
00057             return (left.priority < right.priority);
00058         }
00059     };  
00060 
00061 
00065    typedef priority_queue<Entry, vector<Entry>, Compare_Messages  > Message_Queue_Type;
00066 
00068    Message_Queue_Type m_message_Queue;
00069       
00070 public:
00071 
00083 
00084    void Add(Message *pMsg, int priority)
00085    {
00086       // Make an entry
00087       Entry entry;
00088       entry.pMsg = pMsg;
00089       entry.priority = priority;
00090       // Insert the element according to its priority
00091       m_message_Queue.push(entry);
00092    }
00093    
00104    Message *Remove()
00105    {
00106       Message *pMsg = NULL;
00107       
00108       // Check if the message queue is not empty
00109       if (!m_message_Queue.empty())
00110       {
00111          // Queue is not empty so get a pointer to the
00112          // first message in the queue
00113          pMsg = (m_message_Queue.top()).pMsg;
00114          
00115          // Now remove the pointer from the message queue
00116          m_message_Queue.pop();
00117       }
00118       return (pMsg);
00119    }
00120    
00123    size_t Get_Length() const
00124    {
00125       return m_message_Queue.size();
00126    }   
00127 };

Generated on Sun Feb 13 21:30:16 2005 for Object Oriented Design Examples by doxygen 1.3.4
 Home   What's New   EventStudio 2.5   Real-time Mantra   Thought Projects   Contact Us
Copyright © 2000-2005 EventHelix.com Inc. All Rights Reserved.