Пример #1
0
        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;
        }
Пример #2
0
        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);
        }