Annotate

doc/roster_format.txt @ 12201:e5e0ab93d7f4 0.11

util.xml: Break reference to help the GC (fix #1711) LuaExpat uses a registry reference to track handlers, which makes it so that an upvalue like this creates a reference loop that keeps the parser and its handlers from being garbage collected. The same issue has affected util.xmppstream in the past. Code for checking: local xml_parse = require"util.xml".parse; for i = 1, 10000 do xml_parse("<root/>") end collectgarbage(); collectgarbage(); print(collectgarbage("count"), "KiB"); A future release of LuaExpat may fix the underlying issue there.
author Kim Alvefur <zash@zash.se>
date Thu, 20 Jan 2022 09:57:20 +0100
parent 132:9a4aa57af367
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
1
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
2 This file documents the structure of the roster object.
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
3
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
4 table roster {
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
5 [string bare_jid] = roster_item
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
6 }
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
7
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
8 table roster_item {
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
9 string subscription = "none" | "to" | "from" | "both"
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
10 string name = Opaque string set by client. (optional)
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
11 set groups = a set of opaque strings set by the client
132
9a4aa57af367 Roster updates
Waqas Hussain <waqas20@gmail.com>
parents: 131
diff changeset
12 boolean ask = nil | "subscribe" - a value of true indicates subscription is pending
100
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
13 }
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
14
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
15 The roster is available as
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
16 hosts[host].sessions[username].roster
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
17 and a copy is made to session.roster for all sessions.
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
18
ca7bad346cde Documented the roster object's structure
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
19 All modifications to a roster should be done through the rostermanager.