76 lines
3.3 KiB
OCaml
76 lines
3.3 KiB
OCaml
(* Lightweight thread library for Objective Caml
|
|
* http://www.ocsigen.org/lwt
|
|
* Interface Lwt_chan
|
|
* Copyright (C) 2005-2008 Jérôme Vouillon
|
|
* Laboratoire PPS - CNRS Université Paris Diderot
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as
|
|
* published by the Free Software Foundation, with linking exceptions;
|
|
* either version 2.1 of the License, or (at your option) any later
|
|
* version. See COPYING file for details.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*)
|
|
|
|
(** Module [Lwt_chan]: cooperative, [Pervasives]-like, I/O functions *)
|
|
|
|
(** Note: the {!Lwt_io} module deprecates this module. *)
|
|
|
|
(** {2 Cooperative input channels} *)
|
|
type in_channel = Lwt_io.input_channel
|
|
|
|
val in_channel_of_descr : Lwt_unix.file_descr -> in_channel
|
|
|
|
val make_in_channel : ?close:(unit -> unit Lwt.t) -> (string -> int -> int -> int Lwt.t) -> in_channel
|
|
(** [make_in_channel read] creates an input channel from the [read]
|
|
function. [read s ofs len] should (cooperatively) read [len] bytes from
|
|
the source, and put them in [s], at offset [ofs], and return the number
|
|
of bytes effectively read. If provided, [close] will be called by
|
|
[close_in]. By default, [close_in] does not do anything. *)
|
|
|
|
val input_line : in_channel -> string Lwt.t
|
|
val input_value : in_channel -> 'a Lwt.t
|
|
val input : in_channel -> string -> int -> int -> int Lwt.t
|
|
val really_input : in_channel -> string -> int -> int -> unit Lwt.t
|
|
val input_char : in_channel -> char Lwt.t
|
|
val input_binary_int : in_channel -> int Lwt.t
|
|
|
|
val open_in_gen : Unix.open_flag list -> int -> string -> in_channel Lwt.t
|
|
val open_in : string -> in_channel Lwt.t
|
|
val close_in : in_channel -> unit Lwt.t
|
|
|
|
(** {2 Cooperative output channels} *)
|
|
|
|
type out_channel = Lwt_io.output_channel
|
|
|
|
val out_channel_of_descr : Lwt_unix.file_descr -> out_channel
|
|
|
|
val make_out_channel : ?close:(unit -> unit Lwt.t) -> (string -> int -> int -> int Lwt.t) -> out_channel
|
|
(** [make_out_channel write] creates an output channel from the [write]
|
|
function. [write s ofs len] should (cooperatively) write [len] bytes from
|
|
[s], starting at offset [ofs], to the backend, and return the number of
|
|
bytes effectively written. If provided, [close] will be called by
|
|
[close_out]. By default, [close_out] does not do anything. *)
|
|
|
|
val output : out_channel -> string -> int -> int -> unit Lwt.t
|
|
val flush : out_channel -> unit Lwt.t
|
|
val output_string : out_channel -> string -> unit Lwt.t
|
|
val output_value : out_channel -> 'a -> unit Lwt.t
|
|
val output_char : out_channel -> char -> unit Lwt.t
|
|
val output_binary_int : out_channel -> int -> unit Lwt.t
|
|
|
|
val open_out_gen : Unix.open_flag list -> int -> string -> out_channel Lwt.t
|
|
val open_out : string -> out_channel Lwt.t
|
|
val close_out : out_channel -> unit Lwt.t
|
|
|
|
val open_connection : Unix.sockaddr -> (in_channel * out_channel) Lwt.t
|