Bend.LogSegmentsHandler.advanceActiveLogSegment C# (CSharp) Method

advanceActiveLogSegment() public method

public advanceActiveLogSegment ( ) : void
return void
        public void advanceActiveLogSegment()
        {
            Console.WriteLine("advance to next segment");

            // close the current active segment
            currentLogHeadStream.Close();

            // advance to the next empty log stream...
            if (empty_log_segments.Count == 0) {
                // no more empty log segments!
                this.logwriter.receiver.requestLogExtension();

                if (empty_log_segments.Count == 0) {
                    throw new Exception("forceCheckpoint() failed to free log segments");
                }
            }

            this.notifyLogStatus();

            lock (this) {
                currentLogSegmentInfo = empty_log_segments[0];
                empty_log_segments.RemoveAt(0);
                active_log_segments.Add(currentLogSegmentInfo);
            }

            // open the current log stream...
            currentLogHeadStream = regionmgr.writeExistingRegionAddr(currentLogSegmentInfo.logsegment_start).getNewAccessStream();
            if (currentLogHeadStream.Position != 0) {
                throw new Exception(String.Format("advanced to non-start of segment! pos = {0}", currentLogHeadStream.Position));
            }
        }