private async Task SendSchema() { _currentFlightData = new Protocol.FlightData(); if (_flightDescriptor != null) { _currentFlightData.FlightDescriptor = _flightDescriptor.ToProtocol(); } var offset = SerializeSchema(Schema); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); await WriteMessageAsync(MessageHeader.Schema, offset, 0, cancellationTokenSource.Token).ConfigureAwait(false); await _clientStreamWriter.WriteAsync(_currentFlightData).ConfigureAwait(false); HasWrittenSchema = true; }
public async Task Write(RecordBatch recordBatch, ByteString applicationMetadata) { if (!HasWrittenSchema) { await SendSchema().ConfigureAwait(false); } ResetStream(); _currentFlightData = new Protocol.FlightData(); if (applicationMetadata != null) { _currentFlightData.AppMetadata = applicationMetadata; } await WriteRecordBatchInternalAsync(recordBatch).ConfigureAwait(false); //Reset stream position this.BaseStream.Position = 0; var bodyData = await ByteString.FromStreamAsync(this.BaseStream).ConfigureAwait(false); _currentFlightData.DataBody = bodyData; await _clientStreamWriter.WriteAsync(_currentFlightData).ConfigureAwait(false); }