This commit is contained in:
Paul Betts 2014-05-14 09:46:13 -07:00
Родитель c11ddb3e1c
Коммит 2513d7b88a
5 изменённых файлов: 26 добавлений и 30 удалений

Просмотреть файл

@ -35,7 +35,7 @@ namespace ModernHttpClient
registeredProgressCallbacks[request] = new WeakReference(callback);
}
private ProgressDelegate GetAndRemoveCallbackFromRegister(HttpRequestMessage request)
ProgressDelegate getAndRemoveCallbackFromRegister(HttpRequestMessage request)
{
ProgressDelegate emptyDelegate = delegate { };
@ -43,15 +43,12 @@ namespace ModernHttpClient
if (!registeredProgressCallbacks.ContainsKey(request)) return emptyDelegate;
var weakRef = registeredProgressCallbacks[request];
if (weakRef == null) return emptyDelegate;
var callback = weakRef.Target as ProgressDelegate;
if (callback == null) return emptyDelegate;
registeredProgressCallbacks.Remove(request);
return callback;
}
}
@ -105,7 +102,7 @@ namespace ModernHttpClient
() => rq.ErrorStream ?? new MemoryStream (),
}, true));
progressStreamContent.Progress = GetAndRemoveCallbackFromRegister(request);
progressStreamContent.Progress = getAndRemoveCallbackFromRegister(request);
ret.Content = progressStreamContent;
var keyValuePairs = rq.HeaderFields.Keys

Просмотреть файл

@ -18,8 +18,9 @@ namespace ModernHttpClient.Portable
}
}
public class ProgressStreamContent : StreamContent {
public class ProgressStreamContent : StreamContent
{
}
public delegate void ProgressDelegate (long bytes, long totalBytes, long totalBytesExpected);
}
public delegate void ProgressDelegate(long bytes, long totalBytes, long totalBytesExpected);
}

Просмотреть файл

@ -20,47 +20,47 @@ namespace ModernHttpClient
{
}
private ProgressStreamContent(ProgressStream stream)
ProgressStreamContent(ProgressStream stream)
: base(stream)
{
Init(stream);
init(stream);
}
private ProgressStreamContent(ProgressStream stream, int bufferSize)
ProgressStreamContent(ProgressStream stream, int bufferSize)
: base(stream, bufferSize)
{
Init(stream);
init(stream);
}
private void Init(ProgressStream stream)
void init(ProgressStream stream)
{
stream.ReadCallback = ReadBytes;
stream.ReadCallback = readBytes;
Progress = delegate { };
}
private void Reset()
void reset()
{
_totalBytes = 0L;
}
private long _totalBytes;
private long _totalBytesExpected = -1;
long _totalBytes;
long _totalBytesExpected = -1;
private void ReadBytes(long bytes)
void readBytes(long bytes)
{
long computedLength;
if (_totalBytesExpected == -1 && TryComputeLength(out computedLength))
_totalBytesExpected = computedLength;
// if less than zero still then change to -1
// If less than zero still then change to -1
_totalBytesExpected = Math.Max(-1, _totalBytesExpected);
_totalBytes += bytes;
Progress(bytes, _totalBytes, _totalBytesExpected);
}
private ProgressDelegate _progress;
ProgressDelegate _progress;
public ProgressDelegate Progress
{
get { return _progress; }
@ -72,7 +72,7 @@ namespace ModernHttpClient
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
Reset();
reset();
return base.SerializeToStreamAsync(stream, context);
}
@ -83,7 +83,7 @@ namespace ModernHttpClient
return result;
}
private class ProgressStream : Stream
class ProgressStream : Stream
{
public ProgressStream(Stream stream)
{
@ -119,8 +119,7 @@ namespace ModernHttpClient
return ParentStream.FlushAsync(cancellationToken);
}
public override long Position
{
public override long Position {
get { return ParentStream.Position; }
set { ParentStream.Position = value; }
}
@ -151,6 +150,7 @@ namespace ModernHttpClient
public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
var readCount = await ParentStream.ReadAsync(buffer, offset, count, cancellationToken);
ReadCallback(readCount);
return readCount;
}
@ -158,6 +158,7 @@ namespace ModernHttpClient
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
var task = ParentStream.WriteAsync(buffer, offset, count, cancellationToken);
WriteCallback(count);
return task;
}

Просмотреть файл

@ -47,7 +47,7 @@ namespace ModernHttpClient
registeredProgressCallbacks[request] = new WeakReference(callback);
}
private ProgressDelegate GetAndRemoveCallbackFromRegister(HttpRequestMessage request)
ProgressDelegate getAndRemoveCallbackFromRegister(HttpRequestMessage request)
{
ProgressDelegate emptyDelegate = delegate { };
@ -55,15 +55,12 @@ namespace ModernHttpClient
if (!registeredProgressCallbacks.ContainsKey(request)) return emptyDelegate;
var weakRef = registeredProgressCallbacks[request];
if (weakRef == null) return emptyDelegate;
var callback = weakRef.Target as ProgressDelegate;
if (callback == null) return emptyDelegate;
registeredProgressCallbacks.Remove(request);
return callback;
}
}
@ -101,7 +98,7 @@ namespace ModernHttpClient
inflightRequests[op] = new InflightOperation() {
FutureResponse = ret,
Request = request,
Progress = GetAndRemoveCallbackFromRegister(request),
Progress = getAndRemoveCallbackFromRegister(request),
ResponseBody = new ByteArrayListStream(),
CancellationToken = cancellationToken,
};

2
vendor/okhttp поставляемый

@ -1 +1 @@
Subproject commit 0ef14567079f57bfb7261c838c69268a998be2be
Subproject commit a68244674a8cd6d50ada0913da91c5b95c2b1d90