Bend.Repl.ReplHandler.fetchLogEntries_block C# (CSharp) Method

fetchLogEntries_block() private method

private fetchLogEntries_block ( string log_server_guid, string log_start_key, string log_end_key ) : byte[]
log_server_guid string
log_start_key string
log_end_key string
return byte[]
        private byte[] fetchLogEntries_block(string log_server_guid, string log_start_key, string log_end_key)
        {
            var rk_start = new RecordKey()
                .appendKeyPart("_logs")
                .appendKeyPart(log_server_guid)
                .appendKeyPart(log_start_key);
            var rk_end = RecordKey.AfterPrefix(new RecordKey()
                .appendKeyPart("_logs")
                .appendKeyPart(log_server_guid)
                .appendKeyPart(log_end_key));
            var scanrange = new ScanRange<RecordKey>(rk_start, rk_end, null);

            byte[] packed_log_records;
            {
                MemoryStream writer = new MemoryStream();
                // TODO: this seems like a really inefficient way to write out a key
                ISegmentBlockEncoder encoder = new SegmentBlockBasicEncoder();
                encoder.setStream(writer);
                foreach (var logrow in next_stage.scanForward(scanrange)) {
                    encoder.add(logrow.Key, RecordUpdate.WithPayload(logrow.Value.data));
                }
                encoder.flush();
                packed_log_records = writer.ToArray();
            }

            // IF there are no log entries... BLOCK!

            return packed_log_records;
        }