protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
        {
            return(Task.Run(() =>
            {
                PrintLine("Serializing data");
                var buffer = new byte[_bufferSize];
                var uploaded = 0;

                while (uploaded < _desiredLength)
                {
                    var length = _generator.Read(buffer, 0, buffer.Length);
                    if (length <= 0)
                    {
                        break;
                    }

                    uploaded += length;
                    if (uploaded > _desiredLength)
                    {
                        var delta = (int)(uploaded - _desiredLength);
                        uploaded -= delta;
                        length -= delta;
                    }

                    stream.Write(buffer, 0, length);
                    _progressUpdater?.Invoke(uploaded);
                }
                PrintLine($"Serialized { _desiredLength } bytes");
            }));
        }
Exemplo n.º 2
0
        protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
        {
            return(Task.Run(() =>
            {
                PrintLine("Serializing data");
                var buffer = new byte[_bufferSize];
                var uploaded = 0L;
                try
                {
                    while (uploaded < _desiredLength)
                    {
                        var length = _generator.Read(buffer, 0, buffer.Length);
                        if (length <= 0)
                        {
                            break;
                        }

                        uploaded += length;
                        if (uploaded > _desiredLength)
                        {
                            var delta = (int)(uploaded - _desiredLength);
                            uploaded -= delta;
                            length -= delta;
                        }

                        stream.Write(buffer, 0, length);
                        _progressUpdater?.Invoke(uploaded);
                    }
                }
                catch (System.Exception e)
                {
                    Console.Error.WriteLine($"{e.GetType()} {e.Message}");
                    Console.Error.WriteLine($"{e.StackTrace}");
                    throw;
                }
                PrintLine($"Serialized { uploaded } bytes of { _desiredLength } requested [{ _fileName }]");
            }));
        }