public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context) { WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context); if (watchableStream == null) { return(BlobValueProvider.CreateWithNull <Stream>(blob)); } return(new BlobWatchableDisposableValueProvider(blob, watchableStream, typeof(Stream), watcher: watchableStream, disposable: watchableStream)); }
public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context) { WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context); if (watchableStream == null) { return(BlobValueProvider.CreateWithNull <string>(blob)); } string value; ParameterLog status; using (watchableStream) using (TextReader reader = ReadBlobArgumentBinding.CreateTextReader(watchableStream)) { context.CancellationToken.ThrowIfCancellationRequested(); value = await reader.ReadToEndAsync(); status = watchableStream.GetStatus(); } return(new BlobWatchableValueProvider(blob, value, typeof(string), new ImmutableWatcher(status))); }
public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context) { WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context); if (watchableStream == null) { return(BlobValueProvider.CreateWithNull <byte[]>(blob)); } byte[] value; ParameterLog status; using (watchableStream) using (MemoryStream outputStream = new MemoryStream()) { const int DefaultBufferSize = 4096; await watchableStream.CopyToAsync(outputStream, DefaultBufferSize); value = outputStream.ToArray(); status = watchableStream.GetStatus(); } return(new BlobWatchableValueProvider(blob, value, typeof(byte[]), new ImmutableWatcher(status))); }
public async Task <IValueProvider> BindAsync(IStorageBlob blob, ValueBindingContext context) { TValue value; WatchableReadStream watchableStream = await ReadBlobArgumentBinding.TryBindStreamAsync(blob, context); if (watchableStream == null) { value = await _objectBinder.ReadFromStreamAsync(watchableStream, context.CancellationToken); return(BlobValueProvider.Create(blob, value)); } ParameterLog status; using (watchableStream) { value = await _objectBinder.ReadFromStreamAsync(watchableStream, context.CancellationToken); status = watchableStream.GetStatus(); } return(BlobWatchableValueProvider.Create(blob, value, new ImmutableWatcher(status))); }