internal virtual Row ProcessRowItem(OutputRows outputRows) { var valuesList = new List <byte[]>(); int i = 0; foreach (int len in outputRows.GetRawColumnLengths()) { if (len < 0) { valuesList.Add(null); } else { var buffer = new byte[len]; outputRows.ReadRawColumnValue(buffer, 0, len); valuesList.Add(buffer); } i++; if (i >= outputRows.Metadata.Columns.Length) { break; } } return(new Row(valuesList.ToArray(), outputRows.Metadata.Columns, outputRows.Metadata.ColumnIndexes)); }
internal ResultResponse(Frame frame) : base(frame) { Kind = (ResultResponseKind)Reader.ReadInt32(); switch (Kind) { case ResultResponseKind.Void: Output = new OutputVoid(TraceId); break; case ResultResponseKind.Rows: var outputRows = new OutputRows(Reader, frame.ResultMetadata, TraceId); Output = outputRows; if (outputRows.ResultRowsMetadata.HasNewResultMetadataId()) { NewResultMetadata = new ResultMetadata( outputRows.ResultRowsMetadata.NewResultMetadataId, outputRows.ResultRowsMetadata); } break; case ResultResponseKind.SetKeyspace: Output = new OutputSetKeyspace(Reader.ReadString()); break; case ResultResponseKind.Prepared: Output = new OutputPrepared(frame.Header.Version, Reader); break; case ResultResponseKind.SchemaChange: Output = new OutputSchemaChange(frame.Header.Version, Reader, TraceId); break; default: throw new DriverInternalError("Unknown ResultResponseKind Type"); } }
/// <summary> /// Process rows and sets the paging event handler /// </summary> internal virtual void ProcessRows(RowSet rs, OutputRows outputRows, Session session) { if (outputRows.Metadata != null) { rs.Columns = outputRows.Metadata.Columns; rs.PagingState = outputRows.Metadata.PagingState; if (rs.PagingState != null) { rs.FetchNextPage = (pagingState) => { if (session.IsDisposed) { _logger.Warning("Trying to page results using a Session already disposed."); return(new RowSet()); } Statement.SetPagingState(pagingState); return(session.Execute(Statement)); }; } } for (var i = 0; i < outputRows.Rows; i++) { rs.AddRow(ProcessRowItem(outputRows)); } }
internal ResultResponse(Frame frame) : base(frame) { //Handle result flags if ((frame.Header.Flags & FrameHeader.HeaderFlag.Warning) != 0) { Warnings = Reader.ReadStringList(); } if ((frame.Header.Flags &FrameHeader.HeaderFlag.CustomPayload) != 0) { CustomPayload = Reader.ReadBytesMap(); } Kind = (ResultResponseKind) Reader.ReadInt32(); switch (Kind) { case ResultResponseKind.Void: Output = new OutputVoid(TraceId); break; case ResultResponseKind.Rows: Output = new OutputRows(Reader, TraceId); break; case ResultResponseKind.SetKeyspace: Output = new OutputSetKeyspace(Reader.ReadString()); break; case ResultResponseKind.Prepared: Output = new OutputPrepared(frame.Header.Version, Reader); break; case ResultResponseKind.SchemaChange: Output = new OutputSchemaChange(Reader, TraceId); break; default: throw new DriverInternalError("Unknown ResultResponseKind Type"); } }