| 305 | } |
| 306 | |
| 307 | IOBuffer* BackupRelationTask::getCleanBuffer(Item& item) |
| 308 | { |
| 309 | IOBuffer* buf = NULL; |
| 310 | { |
| 311 | MutexLockGuard guard(item.m_mutex, FB_FUNCTION); |
| 312 | |
| 313 | while (!m_stop && !item.m_cleanBuffers.hasData()) |
| 314 | item.m_cleanCond.wait(item.m_mutex); |
| 315 | |
| 316 | if (m_stop) |
| 317 | return NULL; |
| 318 | |
| 319 | fb_assert(item.m_cleanBuffers.hasData()); |
| 320 | |
| 321 | if (item.m_cleanBuffers.hasData()) |
| 322 | buf = item.m_cleanBuffers.pop(); |
| 323 | } |
| 324 | |
| 325 | fb_assert(buf); |
| 326 | if (buf) |
| 327 | buf->lock(); |
| 328 | |
| 329 | return buf; |
| 330 | } |
| 331 | |
| 332 | void BackupRelationTask::putDirtyBuffer(IOBuffer* buf) |
| 333 | { |