From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 9B1DABBBB for ; Tue, 14 Mar 2006 06:47:38 +0100 (CET) Received: from web38210.mail.mud.yahoo.com (web38210.mail.mud.yahoo.com [209.191.124.153]) by nez-perce.inria.fr (8.13.0/8.13.0) with SMTP id k2E5lbW3028730 for ; Tue, 14 Mar 2006 06:47:38 +0100 Received: (qmail 21337 invoked by uid 60001); 14 Mar 2006 05:47:37 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=dCUHTqhrv5BoixkB0MuhNZ//I5wZwvmRE9TL4gZ/fYe98/ahr1yRUKsxNKcat3mCpMAhxshW9eu88yhrUi/OwbN8hbVek7WxChCSV9FIWYznN9VeLDN6ALVfGWpZWiUqQVa00GwP50Xqprh4bvuD42NzJiauq4vIlHwsuX2K8os= ; Message-ID: <20060314054737.21335.qmail@web38210.mail.mud.yahoo.com> Received: from [68.122.70.86] by web38210.mail.mud.yahoo.com via HTTP; Mon, 13 Mar 2006 21:47:37 PST Date: Mon, 13 Mar 2006 21:47:37 -0800 (PST) From: Jean-David Reply-To: jean-david@GameBox.net Subject: Re: [Caml-list] Netclient To: Gerd Stolpmann , jean-david@GameBox.net Cc: caml-list@yquem.inria.fr In-Reply-To: <1142253494.11735.29.camel@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Miltered: at nez-perce with ID 441658F9.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; netclient:01 gerd:01 stolpmann:01 fulfils:01 netclient:01 invokes:01 netchannel:01 event-driven:01 non-trivial:01 gerd:01 beginner's:01 ocaml:01 beginners:01 bug:01 stolpmann:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=DNS_FROM_RFC_ABUSE, DNS_FROM_RFC_WHOIS,FORGED_YAHOO_RCVD autolearn=disabled version=3.0.3 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 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