| EventStudio 2.5 Sequence diagram based system design and modeling | |
#include <Terminal_Manager.h> Here a collection of terminals is being managed by the Terminal Manager. Management involves routing messages, creating and deleting terminals
Definition at line 46 of file Terminal_Manager.h.
Public Member Functions | |
| Status | Add_Terminal (int terminal_Id, int type) |
| A new terminal is added by inserting it into the STL map. | |
| Status | Remove_Terminal (int terminal_Id) |
| Remove a terminal from the database. | |
| Terminal * | Find_Terminal (int terminal_Id) |
| Find the terminal for a given terminal id. | |
| void | Handle_Message (const Terminal_Message *pMsg) |
| Message handler for the Terminal_Manager. | |
Private Types | |
| typedef map< int, Terminal * > | Terminal_Map |
| The map is keyed with the terminal id and stores pointers to Terminals. | |
Private Attributes | |
| Terminal_Map | m_terminal_Map |
| Terminal map maintains a mapping between the terminal id and pointers to terminal objects. | |
|
The map is keyed with the terminal id and stores pointers to Terminals. terminal id is an integer, terminal ids can be in the entire range for an integer and they will still be efficiently stored inside a map. Definition at line 51 of file Terminal_Manager.h. |
| ||||||||||||
A new terminal is added by inserting it into the STL map. The method takes the following steps:
Definition at line 75 of file Terminal_Manager.h. 00076 {
00077 Status status;
00078
00079 // Check if the terminal is already present in the map. count()
00080 // returns the total number of entries that are keyed by terminal_Id
00081 if(m_terminal_Map.count(terminal_Id) == 0)
00082 {
00083 // count() returned zero, so no entries are present in the map
00084 Terminal *pTerm = new Terminal(terminal_Id, type);
00085
00086 // Since map overloads the array operator [ ], it gives
00087 // the illusion of indexing into an array. The following
00088 // line makes an entry into the map
00089 m_terminal_Map[terminal_Id] = pTerm;
00090
00091 status = SUCCESS;
00092 }
00093 else
00094 {
00095 // count() returned a non zero value, so the terminal is already
00096 // present.
00097 status = FAILURE;
00098 }
00099
00100 return status;
00101 }
|
|
Remove a terminal from the database. The method takes the following steps:
Definition at line 117 of file Terminal_Manager.h. 00118 {
00119 Status status;
00120 // Check if the terminal is present
00121 if (m_terminal_Map.count(terminal_Id) == 1)
00122 {
00123 // Save the pointer that is being deleted from the map
00124 Terminal *pTerm = m_terminal_Map[terminal_Id];
00125
00126 // Erase the entry from the map. This just frees up the memory for
00127 // the pointer. The actual object is freed up using delete
00128 m_terminal_Map.erase(terminal_Id);
00129 delete pTerm;
00130
00131 status = SUCCESS;
00132 }
00133 else
00134 {
00135 status = FAILURE;
00136 }
00137
00138 return status;
00139 }
|
|
Find the terminal for a given terminal id. Return NULL if terminal is not found.
Definition at line 148 of file Terminal_Manager.h. 00149 {
00150 Terminal *pTerm;
00151 if (m_terminal_Map.count(terminal_Id) == 1)
00152 {
00153 pTerm = m_terminal_Map[terminal_Id];
00154 }
00155 else
00156 {
00157 pTerm = NULL;
00158 }
00159
00160 return pTerm;
00161 }
|
|
Message handler for the Terminal_Manager. This method first finds the terminal. If the terminal is found, the message is passed to the appropriate Terminal object.
Definition at line 169 of file Terminal_Manager.h. 00170 {
00171 int terminal_Id = pMsg->Get_Terminal_Id();
00172
00173 Terminal *pTerm;
00174
00175 pTerm = Find_Terminal(terminal_Id);
00176
00177 if (pTerm)
00178 {
00179 pTerm->Handle_Message(pMsg);
00180 }
00181 }
|
1.3.4 | |
| Copyright © 2000-2005 EventHelix.com Inc. All Rights Reserved. |