package async_extended

  1. Overview
  2. Docs
val udp_server : addr:string -> port:int -> f:(Async.Socket.Address.Inet.t -> string -> unit Async.Deferred.t) -> unit Async.Deferred.t

udp_server addr port f except that f is called on every packet received with the address it was received from and the data received. The next packet will not be read until the Deferred returned by f is determined

val udp_client : addr:string -> port:int -> f:(Async.Writer.t -> 'a Async.Deferred.t) -> 'a Async.Deferred.t

udp_client ~addr ~port ~f Same as tcp_client for udp

val connect : [< `Inet of Async.Unix.Inet_addr.t * int | `Unix of string ] as 'a Async.Socket.Type.t -> addr:'a -> ([ `Active ], 'a) Async.Socket.t Async.Deferred.t

connect socket_type ~addr connects a socket to addr

val tcp_server_generic : ?max_connections:int -> addr:'a -> stype:'a Async.Socket.Type.t -> on_client_error:[ `Ignore | `Call of 'a -> exn -> unit ] -> f:('a -> Async.Reader.t -> Async.Writer.t -> unit Async.Deferred.t) -> ?buffer_age_limit:[ `At_most of Core.Time.Span.t | `Unlimited ] -> unit -> unit Async.Deferred.t
val tcp_server_unix : ?max_connections:int -> addr:Async.Socket.Address.Unix.t -> on_client_error: [ `Ignore | `Call of Async.Socket.Address.Unix.t -> exn -> unit ] -> f: (Async.Socket.Address.Unix.t -> Async.Reader.t -> Async.Writer.t -> unit Async.Deferred.t) -> ?buffer_age_limit:[ `At_most of Core.Time.Span.t | `Unlimited ] -> unit -> unit Async.Deferred.t

tcp_server_unix ~addr ~port ?on_client_error ~f makes a tcp server over a unix domain socket, listening on a path indicated by addr. When clients connect f will be run and is passed the address of the client, and a Reader and Writer for communicating with the client. When the deferred returned by f is determined or f throws an exception the client socket and the reader and writer will be closed. The Deferred returned by the function as a whole will be determined when the server is ready to accept incoming connections