package ocurl

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Curl multi stack. Functions may raise Failure on critical errors

type mt

type of Curl multi stack

type curlPipelining =
  1. | PIPE_NOTHING
  2. | PIPE_HTTP1
  3. | PIPE_MULTIPLEX
type curlMultiOption =
  1. | CURLMOPT_PIPELINING of curlPipelining list
  2. | CURLMOPT_MAXCONNECTS of int
  3. | CURLMOPT_MAX_PIPELINE_LENGTH of int
  4. | CURLMOPT_MAX_HOST_CONNECTIONS of int
exception Error of string

exception raised on internal errors

val create : unit -> mt

create new multi stack

val add : mt -> t -> unit

add handle to multi stack

val remove : mt -> t -> unit

remove handle from multi stack (effectively halting the transfer)

val perform : mt -> int

perform pending data transfers (if any) on all handles currently in multi stack

  • returns

    the number of handles that still transfer data

val wait : mt -> bool

wait till there are some active data transfers on multi stack

  • returns

    whether perform should be called

val remove_finished : mt -> (t * curlCode) option

remove finished handle from the multi stack if any. The returned handle may be reused

val cleanup : mt -> unit

destroy multi handle (all transfers are stopped, but individual Curl.t handles can be reused)

type poll =
  1. | POLL_NONE
    (*

    none

    *)
  2. | POLL_IN
    (*

    available for reading

    *)
  3. | POLL_OUT
    (*

    available for writing

    *)
  4. | POLL_INOUT
    (*

    both

    *)
  5. | POLL_REMOVE
    (*

    socket not needed anymore

    *)

events that should be reported for the socket

type fd_status =
  1. | EV_AUTO
    (*

    determine socket status automatically (with extra system call)

    *)
  2. | EV_IN
    (*

    socket has incoming data

    *)
  3. | EV_OUT
    (*

    socket is available for writing

    *)
  4. | EV_INOUT
    (*

    both

    *)

socket status

val set_socket_function : mt -> (Unix.file_descr -> poll -> unit) -> unit

set the function to receive notifications on what socket events are currently interesting for libcurl on the specified socket handle

val set_timer_function : mt -> (int -> unit) -> unit

set the function to receive notification when libcurl internal timeout changes, timeout value is in milliseconds

NB action_timeout should be called when timeout occurs

val action_all : mt -> int

perform pending data transfers (if any) on all handles currently in multi stack (not recommended, action should be used instead)

  • returns

    the number of handles that still transfer data

val action_timeout : mt -> unit

inform libcurl that timeout occured

val action : mt -> Unix.file_descr -> fd_status -> int

action mt fd status informs libcurl about event on the specified socket. status specifies socket status. Perform pending data transfers.

  • returns

    the number of handles still active

val timeout : mt -> int

timeout mt polls multi handle for timeout (not recommended, use set_timer_function instead).

  • returns

    maximum allowed number of milliseconds to wait before calling libcurl to perform actions

val setopt : mt -> curlMultiOption -> unit