Changeset 22:d13fbc745959 in xplcommon for src/xplcommon/win32/Completer.h
- Timestamp:
- 01/02/13 06:43:16 (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/xplcommon/win32/Completer.h
r21 r22 51 51 protected: 52 52 /** 53 * The overlappable object this completer belongs to. 54 */ 55 Overlappable& overlappable; 56 57 /** 53 58 * The overlapped object. 54 59 */ … … 64 69 * Destroy the completer. 65 70 */ 66 ~Completer();71 virtual ~Completer(); 67 72 68 73 /** … … 88 93 * @see Overlapped::getResult 89 94 */ 90 bool getResult(DWORD& size, HANDLE file); 95 bool getResult(DWORD& size); 96 97 /** 98 * Check whether we are waiting for an overlapped result and if 99 * so, return that. 100 * 101 * @param result will contain the result to return if we are 102 * waiting for an overlapped result. 103 * 104 * @return whether we are waiting for an overlapped result 105 */ 106 bool checkWaitedResult(bool& result); 107 108 /** 109 * Handle the given result coming from an overlapped object. 110 */ 111 virtual void handleWaitedResult(DWORD size) = 0; 91 112 }; 92 113 … … 96 117 97 118 inline Completer::Completer(Overlappable* overlappable) : 119 overlappable(*overlappable), 98 120 overlapped((overlappable->waiter==0) ? 0 : new Overlapped(*overlappable)) 99 121 { … … 130 152 //------------------------------------------------------------------------------ 131 153 132 inline bool Completer::getResult(DWORD& size , HANDLE file)154 inline bool Completer::getResult(DWORD& size) 133 155 { 134 return overlapped!=0 && overlapped->getResult(size, file); 156 return overlapped!=0 && overlapped->getResult(size, overlappable.handle); 157 } 158 159 //------------------------------------------------------------------------------ 160 161 inline bool Completer::checkWaitedResult(bool& result) 162 { 163 if (!isWaited()) { 164 return false; 165 } 166 167 DWORD size = 0; 168 result = getResult(size); 169 170 if (result) { 171 removeFromWaiter(); 172 handleWaitedResult(size); 173 } else if (overlappable.failed()) { 174 removeFromWaiter(); 175 } 176 177 return true; 135 178 } 136 179
Note:
See TracChangeset
for help on using the changeset viewer.