aboutsummaryrefslogtreecommitdiff
path: root/portal/portal.mli
blob: a9810cd6351fa5a56d4125a7a52f9fae38604504 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
open Markup

exception MalformedStanza of location * Error.t

type socket

type t = {
    stream : (signal, async) stream;
    push : (signal, sync) stream option -> unit;
    _socket : socket;
  }

(** This is the XML namespace of the underlying element stream.

    You can rely on it on your code, as an escape hatch, but you should probably not,
    since the Portal interface is supposed to be agnostic. *)
val xmlns : string

(** [header domain portal] sends an initial stream header to the XMPP server [portal]
    addressed to [domain]. It returns the server-assigned [id] of the stream included in
    the response stream header.

    When [from] is specified, a from attribute is included. *)
val header : ?from:string -> string -> t -> string Lwt.t

(** [close] is a stream of signals that close the Portal, indicating to the XMPP server
    that the connection is closed. Namely, it does {b not} interact with the Portal in
    any way: It's the caller's job to provide it to the stream. *)
val close : (signal, sync) stream

(** [connect domain] returns a Portal connected to the XMPP server [domain]. *)
val connect : string -> t Lwt.t