CqlSharp.Protocol.FrameReader.ReadStringAsync C# (CSharp) Method

ReadStringAsync() public method

public ReadStringAsync ( ) : Task
return Task
        public Task<string> ReadStringAsync()
        {
            //read string length
            Task<ushort> lengthTask = ReadShortAsync();
            if(lengthTask.IsCompleted)
            {
                //synchronously completed (probably as it could be read from the buffer)
                ushort len = lengthTask.Result;

                //check for empty string
                if(0 == len)
                    return String.Empty.AsTask();

                if(TryGetSegmentFromBuffer(len))
                {
                    //yep, enough data available, return a cached version of the string
                    string str = Encoding.UTF8.GetString(_lastReadSegment.Array, _lastReadSegment.Offset,
                                                         _lastReadSegment.Count);
                    return str.AsTask();
                }
            }

            //more data needs to be read, take the long way
            return ReadStringAsync(lengthTask);
        }

Same methods

FrameReader::ReadStringAsync ( Task lengthTask ) : Task

Usage Example

Exemplo n.º 1
0
        protected override async Task InitializeAsync()
        {
            FrameReader reader = Reader;

            ResultOpcode = (ResultOpcode)await reader.ReadIntAsync().ConfigureAwait(false);

            switch (ResultOpcode)
            {
            case ResultOpcode.Void:
                break;

            case ResultOpcode.Rows:
                Schema = await ReadCqlSchemaAsync().ConfigureAwait(false);

                _count = await reader.ReadIntAsync().ConfigureAwait(false);

                break;

            case ResultOpcode.SetKeyspace:
                Keyspace = await reader.ReadStringAsync().ConfigureAwait(false);

                break;

            case ResultOpcode.SchemaChange:
                Change = await reader.ReadStringAsync().ConfigureAwait(false);

                Keyspace = await reader.ReadStringAsync().ConfigureAwait(false);

                Table = await reader.ReadStringAsync().ConfigureAwait(false);

                break;

            case ResultOpcode.Prepared:
                PreparedQueryId = await reader.ReadShortBytesAsync().ConfigureAwait(false);

                Schema = await ReadCqlSchemaAsync().ConfigureAwait(false);

                break;

            default:
                throw new ArgumentException("Unexpected ResultOpcode");
            }

            //_readLock = new SemaphoreSlim(1);
        }
All Usage Examples Of CqlSharp.Protocol.FrameReader::ReadStringAsync