| 792 | } |
| 793 | |
| 794 | void ChangeLog::switchActiveSegment() |
| 795 | { |
| 796 | for (const auto segment : m_segments) |
| 797 | { |
| 798 | const auto segmentState = segment->getState(); |
| 799 | |
| 800 | if (segmentState == SEGMENT_STATE_USED) |
| 801 | { |
| 802 | if (segment->hasData()) |
| 803 | { |
| 804 | const auto state = m_sharedMemory->getHeader(); |
| 805 | fb_assert(segment->getSequence() == state->sequence); |
| 806 | |
| 807 | segment->setState(SEGMENT_STATE_FULL); |
| 808 | state->flushMark++; |
| 809 | |
| 810 | if (!m_shutdown) |
| 811 | m_workingSemaphore.release(); |
| 812 | } |
| 813 | |
| 814 | break; |
| 815 | } |
| 816 | } |
| 817 | } |
| 818 | |
| 819 | void ChangeLog::bgArchiver() |
| 820 | { |