Load an existing queue from its queue state
| 1149 | |
| 1150 | // Load an existing queue from its queue state |
| 1151 | void recover(IPager2* p, const QueueState& qs, std::string queueName, bool loadExtents = true) { |
| 1152 | debug_printf("FIFOQueue(%s) recover from queue state %s\n", queueName.c_str(), qs.toString().c_str()); |
| 1153 | pager = p; |
| 1154 | pagerError = pager->getError(); |
| 1155 | name = queueName; |
| 1156 | queueID = qs.queueID; |
| 1157 | numPages = qs.numPages; |
| 1158 | numEntries = qs.numEntries; |
| 1159 | usesExtents = qs.usesExtents; |
| 1160 | tailPageNewExtent = qs.tailPageNewExtent; |
| 1161 | prevExtentEndPageID = qs.prevExtentEndPageID; |
| 1162 | pagesPerExtent = pager->getPagesPerExtent(); |
| 1163 | headReader.init(this, Cursor::POP, qs.headPageID, loadExtents, false, qs.tailPageID, qs.headOffset); |
| 1164 | tailWriter.init(this, |
| 1165 | Cursor::WRITE, |
| 1166 | qs.tailPageID, |
| 1167 | true, |
| 1168 | qs.tailPageNewExtent, |
| 1169 | invalidPhysicalPageID, |
| 1170 | 0, |
| 1171 | qs.prevExtentEndPageID); |
| 1172 | headWriter.init(this, Cursor::WRITE); |
| 1173 | newTailPage = invalidPhysicalPageID; |
| 1174 | debug_printf("FIFOQueue(%s) recovered\n", queueName.c_str()); |
| 1175 | } |
| 1176 | |
| 1177 | // Reset the head reader (this is used only for extent based remap queue after recovering the remap |
| 1178 | // queue contents via fastpath extent reads) |
no test coverage detected