| EventStudio 2.5 Sequence diagram based system design and modeling | |
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 };
1.3.4 | |
| Copyright © 2000-2005 EventHelix.com Inc. All Rights Reserved. |