Skip to content

Commit 7826564

Browse files
author
daniel
committed
Added support for passing a timeout value to EndRequest
1 parent 1467620 commit 7826564

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

src/net35/Hammock/RestClient.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -657,13 +657,25 @@ public virtual RestResponse EndRequest(IAsyncResult result)
657657
return webResult.AsyncState as RestResponse;
658658
}
659659

660+
public virtual RestResponse EndRequest(IAsyncResult result, TimeSpan timeout)
661+
{
662+
var webResult = EndRequestImpl(result, timeout);
663+
return webResult.AsyncState as RestResponse;
664+
}
665+
660666
public virtual RestResponse<T> EndRequest<T>(IAsyncResult result)
661667
{
662668
var webResult = EndRequestImpl<T>(result);
663669
return webResult.AsyncState as RestResponse<T>;
664670
}
665671

666-
private WebQueryAsyncResult EndRequestImpl(IAsyncResult result)
672+
public virtual RestResponse<T> EndRequest<T>(IAsyncResult result, TimeSpan timeout)
673+
{
674+
var webResult = EndRequestImpl<T>(result, timeout);
675+
return webResult.AsyncState as RestResponse<T>;
676+
}
677+
678+
private WebQueryAsyncResult EndRequestImpl(IAsyncResult result, TimeSpan? timeout = null)
667679
{
668680
var webResult = result as WebQueryAsyncResult;
669681
if (webResult == null)
@@ -696,12 +708,19 @@ private WebQueryAsyncResult EndRequestImpl(IAsyncResult result)
696708

697709
if (!webResult.IsCompleted)
698710
{
699-
webResult.AsyncWaitHandle.WaitOne();
711+
if(timeout.HasValue)
712+
{
713+
webResult.AsyncWaitHandle.WaitOne(timeout.Value);
714+
}
715+
else
716+
{
717+
webResult.AsyncWaitHandle.WaitOne();
718+
}
700719
}
701720
return webResult;
702721
}
703722

704-
private WebQueryAsyncResult EndRequestImpl<T>(IAsyncResult result)
723+
private WebQueryAsyncResult EndRequestImpl<T>(IAsyncResult result, TimeSpan? timeout = null)
705724
{
706725
var webResult = result as WebQueryAsyncResult;
707726
if (webResult == null)
@@ -734,7 +753,14 @@ private WebQueryAsyncResult EndRequestImpl<T>(IAsyncResult result)
734753

735754
if (!webResult.IsCompleted)
736755
{
737-
webResult.AsyncWaitHandle.WaitOne();
756+
if(timeout.HasValue)
757+
{
758+
webResult.AsyncWaitHandle.WaitOne(timeout.Value);
759+
}
760+
else
761+
{
762+
webResult.AsyncWaitHandle.WaitOne();
763+
}
738764
}
739765
return webResult;
740766
}

0 commit comments

Comments
 (0)