Ejemplo n.º 1
0
            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)));
            }
Ejemplo n.º 4
0
            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)));
            }
Ejemplo n.º 5
0
            public Task <IValueProvider> BindAsync(IStorageBlob value, ValueBindingContext context)
            {
                IValueProvider provider = BlobValueProvider.Create(value, _converter.Convert(value));

                return(Task.FromResult(provider));
            }