caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jean-David <merdoq@yahoo.com>
To: Gerd Stolpmann <info@gerd-stolpmann.de>, jean-david@GameBox.net
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Netclient
Date: Mon, 13 Mar 2006 21:47:37 -0800 (PST)	[thread overview]
Message-ID: <20060314054737.21335.qmail@web38210.mail.mud.yahoo.com> (raw)
In-Reply-To: <1142253494.11735.29.camel@localhost.localdomain>

Thank you for making things clear!
I will pipeline the URL to a hard disk file for now
even though it would be nicer to have a direct Stream
but 100 lines !? I thought we were talking dozens of
lines... hehe Thank you for the expert's insight
JD

--- Gerd Stolpmann <info@gerd-stolpmann.de> wrote:

> Am Montag, den 13.03.2006, 00:03 -0800 schrieb
> Jean-David:
> > Hello there,
> > I was wondering about the best way to create a
> stream
> > from a remote file for which I have the URL
> > 
> > open Http_client
> > open Stream
> > 
> > let body = Stream.of_string Convenience.http_get
> > "http://dfl.sjsu.edu";;
> > 
> > Is the content of body downloaded completely
> before
> > being streamed(which defeats the purpose of
> streams)
> > or not? and if not how can I get the content of an
> URL
> > gradually (without getting the whole body into
> > memory)?
> 
> Yes, Convenience.http_get always downloads the whole
> body into a string.
> 
> For a stream-like download, you must use the
> pipeline interface. For
> example, to store the body into a file do:
> 
> let call = new get "http://dfl.sjsu.edu" in
> call # set_response_body_storage (`File (fun () ->
> "filename"));
> let pipeline = new pipeline in
> pipeline # set_proxy_from_environment();
> pipeline # run()
> 
> Now check call#status whether the HTTP request was
> successfully
> responded.
> 
> If you want to postprocess the body while it is
> downloaded, things will
> get more complicated. In particular, it is possible
> to store the body in
> an object that fulfils the Netmime.mime_body class
> type. Netclient
> invokes the open_value_wr method and outputs into
> this netchannel. Using
> this mechanism to define a callback-style interface
> (i.e. a function is
> called whenever a chunk of data arrives) can be
> implemented in a
> straight-forward manner.
> 
> If you really need a "string Stream.t": This is
> possible because
> Netclient is programmed in an event-driven way, but
> is very difficult,
> because you must arrange a so-called control
> inversion. This is
> absolutely non-trivial but implementable in less
> than 100 lines of code.
> 
> Hope this helps,
> 
> Gerd
> 
> > 
> > Thank you,
> > JD
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around 
> > http://mail.yahoo.com 
> > 
> > _______________________________________________
> > Caml-list mailing list. Subscription management:
> >
>
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> > Archives: http://caml.inria.fr
> > Beginner's list:
> http://groups.yahoo.com/group/ocaml_beginners
> > Bug reports: http://caml.inria.fr/bin/caml-bugs
> > 
> -- 
>
------------------------------------------------------------
> Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt *
> Germany 
> gerd@gerd-stolpmann.de         
> http://www.gerd-stolpmann.de
> Phone: +49-6151-153855                  Fax:
> +49-6151-997714
>
------------------------------------------------------------
> 
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


      parent reply	other threads:[~2006-03-14  5:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20060312110003.86F9EBBE1@yquem.inria.fr>
2006-03-13  8:03 ` Netclient Jean-David
2006-03-13 12:38   ` [Caml-list] Netclient Gerd Stolpmann
2006-03-13 12:43     ` Gerd Stolpmann
2006-03-14  5:47     ` Jean-David [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060314054737.21335.qmail@web38210.mail.mud.yahoo.com \
    --to=merdoq@yahoo.com \
    --cc=caml-list@yquem.inria.fr \
    --cc=info@gerd-stolpmann.de \
    --cc=jean-david@GameBox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).