Bend.SegmentBlockBasicDecoder.sortedWalk C# (CSharp) Method

sortedWalk() public method

public sortedWalk ( ) : RecordUpdate>>.IEnumerable
return RecordUpdate>>.IEnumerable
        public IEnumerable<KeyValuePair<RecordKey, RecordUpdate>> sortedWalk()
        {
            return this.scanForward(ScanRange<RecordKey>.All());
        }

Usage Example

Example #1
0
        public void handleCommand(LogCommands cmd, byte[] cmddata)
        {
            if (cmd == LogCommands.UPDATE) {
                // decode basic block key/value writes
                BlockAccessor ba = new BlockAccessor(cmddata);
                ISegmentBlockDecoder decoder = new SegmentBlockBasicDecoder(ba);
                foreach (KeyValuePair<RecordKey, RecordUpdate> kvp in decoder.sortedWalk()) {
                    // add the updates to our working segment...
                    lock (mylayer.segmentlayers) {
            #if false
                            // some status debug code...
                            if (RangemapManager.RangeKey.isRangeKey(kvp.Key)) {
                                System.Console.WriteLine("LayerManager.handleCommand : setValue() {0} => {1}",
                                    kvp.Key.ToString(), kvp.Value.ToString());
                                if (kvp.Value.type != RecordUpdateTypes.DELETION_TOMBSTONE && kvp.Value.data.Length != 16) {
                                    throw new Exception("!!! corrupted rangekey appeared in handleCommand");
                                }
                            }
            #endif

                        mylayer.workingSegment.setRecord(kvp.Key, kvp.Value);
                    }
                }
            } else if (cmd == LogCommands.CHECKPOINT_START) {
                // here we move aside the checkpoint segment...
                //   - if this is during live operation, the checkpoint is running as soon as we return.
                //   - if this is during recovery, there is no checkpoint running and we'll need to

                // TODO: we need some kind of key/checksum to be sure that we CHECKPOINT and DROP the right dataF
                checkpointSegment = mylayer.workingSegment;
                SegmentMemoryBuilder newsegment = new SegmentMemoryBuilder();
                lock (mylayer.segmentlayers) {
                    mylayer.workingSegment = newsegment;
                    mylayer.segmentlayers.Insert(0, mylayer.workingSegment);
                }
            } else if (cmd == LogCommands.CHECKPOINT_DROP) {
                // TODO: we need some kind of key/checksum to be sure that we CHECKPOINT and DROP the right data
                if (checkpointSegment != null) {
                    lock (mylayer.segmentlayers) {
                        mylayer.segmentlayers.Remove(checkpointSegment);
                        checkpointSegment = null;
                    }
                } else {
                    throw new Exception("can't drop, no segment to drop");
                }
            } else {
                throw new Exception("unimplemented command");
            }
        }
All Usage Examples Of Bend.SegmentBlockBasicDecoder::sortedWalk