Skip to content

Instantly share code, notes, and snippets.

@chakrit
Created August 26, 2011 09:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chakrit/1173031 to your computer and use it in GitHub Desktop.
Save chakrit/1173031 to your computer and use it in GitHub Desktop.
Observable Xml Reader... should've been using F# :(
protected IObservable<T> OpenXmlReader<T>(string url,
Func<XmlReader, IEnumerable<T>> readerFunc)
{
var req = HttpWebRequest.Create(url);
return Observable
.FromAsyncPattern<WebResponse>(req.BeginGetResponse, req.EndGetResponse)
.Invoke()
.SelectMany(resp => Observable
.Using(() => resp, r => Observable // using (response)
.Using(() => r.GetResponseStream(), stream => Observable // using (stream)
.Return(createReader(stream))
.SelectMany(readerFunc))));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment