Copy all values not only the first one

mr3.2.1
Victor Seva 12 years ago
parent 12a5e3c6fb
commit 6543b279a1

@ -63,40 +63,48 @@ NGCPRealPrefs_MT.__tostring = function ()
local xavp = {
peer = NGCPPeerPrefs:xavp(level),
}
local real_keys = {}
local value
local peer_values = {}
local values = sr.xavp.get(xavp.peer.name, 0, 0)
for _,v in pairs(keys) do
value = xavp.peer(v)
local value = values[v]
if value then
table.add(real_keys, v)
peer_values[v] = value
end
end
return real_keys
local peer_keys = {}
for k,v in pairs(peer_values) do
table.insert(peer_keys, k)
xavp.peer(k, v)
end
return peer_keys
end
function NGCPRealPrefs:_usr_load(level, keys)
local _,v
local _,v,k
local xavp = {
real = NGCPRealPrefs:xavp(level),
real = NGCPRealPrefs:xavp(level),
dom = NGCPDomainPrefs:xavp(level),
usr = NGCPUserPrefs:xavp(level)
}
local real_keys = {}
local value
local real_values = {}
local dom_values = sr.xavp.get(xavp.dom.name, 0, 0)
local usr_values = sr.xavp.get(xavp.usr.name, 0, 0)
for _,v in pairs(keys) do
value = xavp.usr(v)
local value = usr_values[v]
if not value then
value = xavp.dom(v)
--sr.log("info", string.format("key:%s value:%s from domain", v, value))
value = dom_values[v]
end
if value then
table.add(real_keys, v)
--sr.log("info", string.format("key:%s value:%s", v, value))
xavp.real(v, value)
real_values[v] = value
else
sr.log("err", string.format("key:%s not in user or domain", v))
end
end
local real_keys = {}
for k,v in pairs(real_values) do
table.insert(real_keys, k)
xavp.real(k, v)
end
return real_keys
end

@ -38,12 +38,25 @@ NGCPXAvp_MT = {
return sr.pv.get(id)
elseif type(value) == "number" then
table.add(t.keys, key)
sr.log("dbg", string.format("seti: [%s]:%d", id, value))
--sr.log("dbg", string.format("seti: [%s]:%d", id, value))
sr.pv.seti(id, value)
elseif type(value) == "string" then
table.add(t.keys, key)
sr.log("dbg", string.format("sets: [%s]:%s", id, value))
--sr.log("dbg", string.format("sets: [%s]:%s", id, value))
sr.pv.sets(id, value)
elseif type(value) == "table" then
table.add(t.keys, key)
local i, v
for i = #value, 1, -1 do
v = value[i]
if type(v) == "number" then
sr.pv.seti(id, v)
elseif type(v) == "string" then
sr.pv.sets(id, v)
else
error("unknown type: %s", type(v))
end
end
else
error("value is not a number or string")
end

@ -130,7 +130,7 @@ TestNGCPRealPrefs = {} --class
xavp.user("dos",2)
assertEquals(sr.pv.get("$xavp(caller_usr_prefs=>dos)"),2)
local real_keys = self.real:caller_usr_load(keys)
assertEquals(real_keys, keys)
assertItemsEquals(real_keys, keys)
assertEquals(xavp.real("uno"),1)
assertEquals(xavp.real("dos"),2)
end
@ -163,7 +163,7 @@ TestNGCPRealPrefs = {} --class
xavp.user("dos",2)
assertEquals(sr.pv.get("$xavp(callee_usr_prefs=>dos)"),2)
local real_keys = self.real:callee_usr_load(keys)
assertEquals(real_keys, keys)
assertItemsEquals(real_keys, keys)
assertEquals(xavp.real("uno"),1)
assertEquals(xavp.real("dos"),2)
end

Loading…
Cancel
Save