Esempio n. 1
0
        private async Task <long> BlobWriteAsyncWorker(ulong blobId, byte[] data, long position, CancellationToken ct = default(CancellationToken))
        {
            await TaskUtilities.SwitchToBackgroundThread();

            var request = await BlobWriteRequest.WriteAsync(this, blobId, data, position, ct);

            return(await request.Task);
        }
Esempio n. 2
0
            /// <summary>
            /// Appends data to the end of the blob
            /// </summary>
            public static async Task <BlobWriteRequest> WriteAsync(RHost host, ulong blobId, byte[] data, long position, CancellationToken cancellationToken)
            {
                var message = host.CreateRequestMessage("?WriteBlob", new JArray {
                    blobId, position
                }, data);
                var request = new BlobWriteRequest(host, message, cancellationToken);
                await host.SendAsync(message, cancellationToken);

                return(request);
            }
Esempio n. 3
0
        public async Task <long> BlobWriteAsync(ulong blobId, byte[] data, long position, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (_runTask == null)
            {
                throw new InvalidOperationException("Host was not started");
            }

            using (CancellationTokenUtilities.Link(ref cancellationToken, _cts.Token)) {
                try {
                    await TaskUtilities.SwitchToBackgroundThread();

                    var request = await BlobWriteRequest.WriteAsync(this, blobId, data, position, cancellationToken);

                    return(await request.Task);
                } catch (OperationCanceledException ex) when(_cts.IsCancellationRequested)
                {
                    throw new RHostDisconnectedException(Resources.Error_RHostIsStopped, ex);
                }
            }
        }