|  | ircproxy The Ultimate Cyborg | 
#include <UserAnswer.h>
Definition at line 122 of file UserAnswer.h.
| Public Member Functions | |
| void | destroy_requests (void) | 
| Destroy any requests for events left in the queue. | |
| void | trigger (UserAnswerEventRequestBase::event_type_ct const &event_type) | 
| Trigger an event. | |
| Protected Member Functions | |
| void | add_request (UserAnswerEventRequestBase *request) | 
| Add event request request to the queue. | |
| ~UserAnswerEventRequestQueue () | |
| Destructor. | |
| Private Types | |
| typedef std::deque < UserAnswerEventRequestBase * > | event_requests_ct | 
| The type of the event request queue. | |
| Private Attributes | |
| Counter | M_event_requests_locked | 
| Non-zero if M_event_requests is being processed in a loop. | |
| event_requests_ct | M_event_requests | 
| The actual event request queue. | |
| event_requests_ct | M_event_requests_tmp | 
| Temporary event request queue for when M_event_requests is locked. | |
| typedef std::deque<UserAnswerEventRequestBase*> UserAnswerEventRequestQueue::event_requests_ct  [private] | 
| UserAnswerEventRequestQueue::~UserAnswerEventRequestQueue | ( | ) |  [inline, protected] | 
Destructor.
Definition at line 139 of file UserAnswer.h.
References destroy_requests().
00139 { destroy_requests(); }
| void UserAnswerEventRequestQueue::add_request | ( | UserAnswerEventRequestBase * | request | ) |  [inline, protected] | 
Add event request request to the queue.
Definition at line 131 of file UserAnswer.h.
References M_event_requests, M_event_requests_locked, and M_event_requests_tmp.
Referenced by trigger().
00132 { 00133 if (M_event_requests_locked) 00134 M_event_requests_tmp.push_back(request); 00135 else 00136 M_event_requests.push_back(request); 00137 }
| void UserAnswerEventRequestQueue::destroy_requests | ( | void | ) |  [inline] | 
Destroy any requests for events left in the queue.
Definition at line 142 of file UserAnswer.h.
References ASSERT, M_event_requests, and M_event_requests_locked.
Referenced by ~UserAnswerEventRequestQueue().
00143 { 00144 ASSERT(!M_event_requests_locked); 00145 while (!M_event_requests.empty()) 00146 { 00147 M_event_requests.front()->release(); 00148 M_event_requests.pop_front(); 00149 } 00150 }
| void UserAnswerEventRequestQueue::trigger | ( | UserAnswerEventRequestBase::event_type_ct const & | event_type | ) |  [inline] | 
Trigger an event.
Definition at line 152 of file UserAnswer.h.
References add_request(), DoutEntering, M_event_requests, M_event_requests_locked, and M_event_requests_tmp.
00153 { 00154 DoutEntering(dc::notice, "UserAnswerEventRequestQueue::trigger(" << 00155 libcwd::type_info_of<UserAnswerEventRequestBase::event_type_ct>().demangled_name() << 00156 " const& " << event_type << ")"); 00157 { 00158 Increment tmp(M_event_requests_locked); 00159 event_requests_ct::iterator iter = M_event_requests.begin(); 00160 while (iter != M_event_requests.end()) 00161 { 00162 if ((*iter)->canceled()) 00163 { 00164 Dout(dc::notice, "Removing canceled " << **iter); 00165 (*iter)->release(); 00166 iter = M_event_requests.erase(iter); 00167 } 00168 else if (event_type.is_match((*iter)->target())) 00169 { 00170 Dout(dc::notice, "Calling handle() for " << **iter); 00171 (*iter)->handle(event_type); 00172 (*iter)->release(); 00173 iter = M_event_requests.erase(iter); 00174 } 00175 else 00176 ++iter; 00177 } 00178 } 00179 if (M_event_requests_locked == 0) 00180 while (!M_event_requests_tmp.empty()) 00181 { 00182 add_request(M_event_requests_tmp.front()); 00183 M_event_requests_tmp.pop_front(); 00184 } 00185 }
Non-zero if M_event_requests is being processed in a loop.
Definition at line 126 of file UserAnswer.h.
Referenced by add_request(), destroy_requests(), and trigger().
The actual event request queue.
Definition at line 127 of file UserAnswer.h.
Referenced by add_request(), destroy_requests(), and trigger().
Temporary event request queue for when M_event_requests is locked.
Definition at line 128 of file UserAnswer.h.
Referenced by add_request(), and trigger().
| Copyright © 2005-2007 Carlo Wood. All rights reserved. | 
|---|