Author: jbevain
Date: 2007-11-08 10:56:16 -0500 (Thu, 08 Nov 2007)
New Revision: 89200
Modified:
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebAsyncResult.cs
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebRequest.cs
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/ChangeLog
Log:
2007-11-08 Jb Evain <[EMAIL PROTECTED]>
* BrowserHttpWebAsyncResult.cs
* BrowserHttpWebRequest.cs: implement async requests.
Modified:
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebAsyncResult.cs
===================================================================
---
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebAsyncResult.cs
2007-11-08 15:52:17 UTC (rev 89199)
+++
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebAsyncResult.cs
2007-11-08 15:56:16 UTC (rev 89200)
@@ -49,10 +49,17 @@
AsyncCallback callback;
ManualResetEvent wait_handle;
+ BrowserHttpWebResponse response;
+
public object AsyncState {
get { return state; }
}
+ public BrowserHttpWebResponse Response {
+ get { return response; }
+ set { response = value; }
+ }
+
public WaitHandle AsyncWaitHandle {
get {
if (wait_handle != null)
Modified:
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebRequest.cs
===================================================================
---
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebRequest.cs
2007-11-08 15:52:17 UTC (rev 89199)
+++
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/BrowserHttpWebRequest.cs
2007-11-08 15:56:16 UTC (rev 89200)
@@ -45,6 +45,7 @@
WebHeaderCollection headers = new WebHeaderCollection ();
MemoryStream request;
BrowserHttpWebResponse response;
+ BrowserHttpWebAsyncResult async_result;
public BrowserHttpWebRequest (Uri uri)
: base (uri)
@@ -54,6 +55,9 @@
~BrowserHttpWebRequest ()
{
+ if (async_result != null)
+ async_result.Dispose ();
+
if (native == IntPtr.Zero)
return;
@@ -122,21 +126,39 @@
throw new NotImplementedException ();
}
- [MonoTODO]
public override IAsyncResult BeginGetResponse (AsyncCallback
callback, object state)
{
- throw new NotImplementedException ();
+ InitializeNativeRequest ();
+
+ async_result = new BrowserHttpWebAsyncResult (callback,
state);
+ NativeMethods.browser_http_request_get_async_response
(native, OnAsyncResponseAvailable, IntPtr.Zero);
+ return async_result;
}
+ void OnAsyncResponseAvailable (IntPtr native, IntPtr context)
+ {
+ async_result.Response = new BrowserHttpWebResponse
(native);
+ async_result.SetComplete ();
+ }
+
public override Stream EndGetRequestStream (IAsyncResult
asyncResult)
{
throw new NotImplementedException ();
}
- [MonoTODO]
public override HttpWebResponse EndGetResponse (IAsyncResult
asyncResult)
{
- throw new NotImplementedException ();
+ if (async_result != asyncResult)
+ throw new ArgumentException ();
+
+ if (!async_result.IsCompleted)
+ async_result.AsyncWaitHandle.WaitOne ();
+
+ response = async_result.Response;
+ async_result.Dispose ();
+
+ response.Read ();
+ return response;
}
public override Stream GetRequestStream ()
Modified:
trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/ChangeLog
===================================================================
--- trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/ChangeLog
2007-11-08 15:52:17 UTC (rev 89199)
+++ trunk/olive/class/System.Silverlight/System.Windows.Browser.Net/ChangeLog
2007-11-08 15:56:16 UTC (rev 89200)
@@ -1,3 +1,8 @@
+2007-11-08 Jb Evain <[EMAIL PROTECTED]>
+
+ * BrowserHttpWebAsyncResult.cs
+ * BrowserHttpWebRequest.cs: implement async requests.
+
2007-11-07 Jb Evain <[EMAIL PROTECTED]>
* BrowserHttpWebAsyncResult.cs: implement this cutie.
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches