summaryrefslogtreecommitdiff
path: root/rexmpp.texi
blob: e92b969464bc38a5b3b76282c726e8149ac3349b (plain)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
\input texinfo   @c -*-texinfo-*-
@setfilename rexmpp.info
@settitle rexmpp

@direntry
* rexmpp: (rexmpp). A reusable XMPP library.
@end direntry

@include version.texi

@copying
@quotation
@verbatiminclude COPYING
@end quotation
@end copying

@contents

@node Top
@top rexmpp
@menu
* Copying Conditions:: License information.
* Introduction:: The basics.
* Examples:: usage examples.
@end menu

@node Copying Conditions
@chapter Copying Conditions
@insertcopying

@node Introduction
@chapter Introduciton

The library is intended to be reusable: that is, usable on different
systems, from different languages, and together with different other
libraries (including UI toolkits), so it is in C, asynchronous, and has
a relatively simple API. The usage boils down to setting a few callbacks
and other configuration, regularly asking the library which file
descriptors it is interested in and when to run it again, running it
when the time comes or the file descriptors are available for reading or
writing, and asking it to send messages when needed.

In addition to establishing and maintaining a connection, by default the
library handles some requests (e.g., roster push, service discovery),
sends presence stanzas (with item capabilities), etc. These features can
be implemented in a user-facing application instead, and then disabled
in the library, but the aim is to make it fairly complete even if a
program doesn't implement them.

A library user is expected to both handle and compose XML as specified
in relevant standards: the intent is to keep the library flexible and
simple, only handling (or assisting with) more complex and routine parts
of the protocol.

@node Examples
@chapter Examples
@section A basic example
@verbatiminclude examples/basic.c

@bye