public override async Task DoPut( FlightServerRecordBatchStreamReader requestStream, IAsyncStreamWriter <FlightPutResult> responseStream, ServerCallContext context ) { var newTable = new List <RecordBatch> { }; long numRows = 0; await foreach (var batch in requestStream.ReadAllAsync(context.CancellationToken)) { newTable.Add(batch); numRows += batch.Length; } var descriptor = await requestStream.FlightDescriptor; var ticket = DescriptorAsTicket(descriptor); var schema = await requestStream.Schema; _flightData.Flights.Add(ticket, new FlightInfo( schema, descriptor, new List <FlightEndpoint> { GetEndpoint(ticket, $"http://{context.Host}") }, numRows, -1 // Unknown )); _flightData.Tables.Add(ticket, newTable); await responseStream.WriteAsync(new FlightPutResult("Table saved.")); }
public override async Task DoPut(FlightServerRecordBatchStreamReader requestStream, IAsyncStreamWriter <FlightPutResult> responseStream, ServerCallContext context) { var flightDescriptor = await requestStream.FlightDescriptor; if (!_flightStore.Flights.TryGetValue(flightDescriptor, out var flightHolder)) { flightHolder = new FlightHolder(flightDescriptor, await requestStream.Schema, $"http://{context.Host}"); _flightStore.Flights.Add(flightDescriptor, flightHolder); } while (await requestStream.MoveNext()) { flightHolder.AddBatch(new RecordBatchWithMetadata(requestStream.Current, requestStream.ApplicationMetadata.FirstOrDefault())); await responseStream.WriteAsync(FlightPutResult.Empty); } }
public override async Task DoPut(IAsyncStreamReader <FlightData> requestStream, IServerStreamWriter <Protocol.PutResult> responseStream, ServerCallContext context) { var readStream = new FlightServerRecordBatchStreamReader(requestStream); var writeStream = new StreamWriter <FlightPutResult, Protocol.PutResult>(responseStream, putResult => putResult.ToProtocol()); await _flightServer.DoPut(readStream, writeStream, context).ConfigureAwait(false); }