annotate mod_storage_memory/mod_storage_memory.lua @ 2608:362ca94192ee

mod_smacks: Add resumed session to event "smacks-hibernation-end" Older versions of this event only have the "intermediate" session in event.session (the one used to resume the existing session), but not the resumed one. This adds event.resumed which contains the resumed one alongside to event.session.
author tmolitor <thilo@eightysoft.de>
date Sat, 11 Mar 2017 01:37:28 +0100
parents a347b71adb07
children 1e4bbff0a6fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local memory = setmetatable({}, {
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 __index = function(t, k)
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local store = module:shared(k)
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 t[k] = store;
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 return store;
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 end
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 });
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
10 local NULL = {};
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
11
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local keyval_store = {};
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 keyval_store.__index = keyval_store;
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 function keyval_store:get(username)
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
16 return self.store[username or NULL];
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 end
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 function keyval_store:set(username, data)
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
20 self.store[username or NULL] = data;
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 return true;
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 end
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
1607
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
24 local map_store = {};
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
25 map_store.__index = map_store;
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
26
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
27 function map_store:get(username, key)
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
28 local userstore = self.store[username or NULL];
1607
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
29 if type(userstore) == "table" then
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
30 return userstore[key];
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
31 end
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
32 end
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
33
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
34 function map_store:set(username, key, data)
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
35 local userstore = self.store[username or NULL];
1607
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
36 if userstore == nil then
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
37 userstore = {};
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
38 self.store[username or NULL] = userstore;
1607
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
39 end
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
40 userstore[key] = data;
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
41 return true;
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
42 end
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
43
2171
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
44 map_store.remove = {};
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
45 function map_store:set_keys(username, keydatas)
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
46 local userstore = self.store[username or NULL];
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
47 if userstore == nil then
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
48 userstore = {};
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
49 self.store[username or NULL] = userstore;
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
50 end
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
51 for k,v in pairs(keydatas) do
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
52 if v == self.remove then v = nil; end
2172
a347b71adb07 mod_storage_memory: Fix copypaste error
Kim Alvefur <zash@zash.se>
parents: 2171
diff changeset
53 userstore[k] = v;
2171
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
54 end
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
55 return true;
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
56 end
85d88ed4f2a2 mod_storage_memory: Implement 'add_keys' method of map stores (required for rosters in 0.10+)
Kim Alvefur <zash@zash.se>
parents: 2097
diff changeset
57
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
58 local archive_store = {};
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
59 archive_store.__index = archive_store;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
60
1753
54c8a0cb2996 mod_storage_(archive-capable): Change order of arguments to :append to be the same as return values from :find iterator (see prosody 41725f3df3cc)
Kim Alvefur <zash@zash.se>
parents: 1608
diff changeset
61 function archive_store:append(username, key, value, when, with)
54c8a0cb2996 mod_storage_(archive-capable): Change order of arguments to :append to be the same as return values from :find iterator (see prosody 41725f3df3cc)
Kim Alvefur <zash@zash.se>
parents: 1608
diff changeset
62 if type(when) ~= "number" then
1760
e72f9eac51c8 mod_storage_(various): Order swapping in 54c8a0cb2996 was backwards
Kim Alvefur <zash@zash.se>
parents: 1753
diff changeset
63 when, with, value = value, when, with;
1753
54c8a0cb2996 mod_storage_(archive-capable): Change order of arguments to :append to be the same as return values from :find iterator (see prosody 41725f3df3cc)
Kim Alvefur <zash@zash.se>
parents: 1608
diff changeset
64 end
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
65 local a = self.store[username or NULL];
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
66 if not a then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
67 a = {};
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
68 self.store[username or NULL] = a;
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
69 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
70 local i = #a+1;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
71 local v = { key = key, when = when, with = with, value = value };
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
72 if not key or a[key] then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
73 key = tostring(a):match"%x+$"..tostring(v):match"%x+$";
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
74 v.key = key;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
75 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
76 a[i] = v;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
77 a[key] = i;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
78 return true;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
79 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
80
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
81 local function archive_iter (a, start, stop, step, limit, when_start, when_end, match_with)
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
82 local item, when, with;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
83 local count = 0;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
84 coroutine.yield(true); -- Ready
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
85 for i = start, stop, step do
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
86 item = a[i];
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
87 when, with = item.when, item.with;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
88 if when >= when_start and when_end >= when and (not match_with or match_with == with) then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
89 coroutine.yield(item.key, item.value, when, with);
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
90 count = count + 1;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
91 if limit and count >= limit then return end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
92 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
93 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
94 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
95
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
96 function archive_store:find(username, query)
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
97 local a = self.store[username or NULL] or {};
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
98 local start, stop, step = 1, #a, 1;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
99 local qstart, qend, qwith = -math.huge, math.huge;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
100 local limit;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
101 if query then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
102 module:log("debug", "query included")
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
103 if query.reverse then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
104 start, stop, step = stop, start, -1;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
105 if query.before then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
106 start = a[query.before];
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
107 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
108 elseif query.after then
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
109 start = a[query.after];
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
110 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
111 limit = query.limit;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
112 qstart = query.start or qstart;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
113 qend = query["end"] or qend;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
114 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
115 if not start then return nil, "invalid-key"; end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
116 local iter = coroutine.wrap(archive_iter);
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
117 iter(a, start, stop, step, limit, qstart, qend, qwith);
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
118 return iter;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
119 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
120
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
121 function archive_store:delete(username, query)
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
122 if not query or next(query) == nil then
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
123 self.store[username or NULL] = nil;
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
124 return true;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
125 end
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
126 local old = self.store[username or NULL];
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
127 if not old then return true; end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
128 local qstart = query.start or -math.huge;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
129 local qend = query["end"] or math.huge;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
130 local qwith = query.with;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
131 local new = {};
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
132 self.store[username or NULL] = new;
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
133 local t;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
134 for i = 1, #old do
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
135 i = old[i];
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
136 t = i.when;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
137 if not(qstart >= t and qend <= t and (not qwith or i.with == qwith)) then
1753
54c8a0cb2996 mod_storage_(archive-capable): Change order of arguments to :append to be the same as return values from :find iterator (see prosody 41725f3df3cc)
Kim Alvefur <zash@zash.se>
parents: 1608
diff changeset
138 self:append(username, i.key, i.value, t, i.with);
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
139 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
140 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
141 if #new == 0 then
2097
4454f124465a mod_storage_memory: Support for empty username stores
Matthew Wild <mwild1@gmail.com>
parents: 1760
diff changeset
142 self.store[username or NULL] = nil;
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
143 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
144 return true;
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
145 end
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
146
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
147 local stores = {
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
148 keyval = keyval_store;
1607
8b997d9cf09e mod_storage_memory: Add support for map stores
Kim Alvefur <zash@zash.se>
parents: 1259
diff changeset
149 map = map_store;
1608
59fdf4f12343 mod_storage_memory: Add support for archive stores
Kim Alvefur <zash@zash.se>
parents: 1607
diff changeset
150 archive = archive_store;
1259
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
151 }
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
152
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
153 local driver = {};
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
154
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
155 function driver:open(store, typ)
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
156 local store_mt = stores[typ or "keyval"];
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
157 if store_mt then
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
158 return setmetatable({ store = memory[store] }, store_mt);
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
159 end
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
160 return nil, "unsupported-store";
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
161 end
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
162
fa7e402fcdc1 mod_storage_memory: Simple in-memory only storage backend without persistence
Kim Alvefur <zash@zash.se>
parents:
diff changeset
163 module:provides("storage", driver);