Commit 374ba178 authored by Renato Figueiro Maia's avatar Renato Figueiro Maia

[OPENBUS-1788] Base de dados fica corrompida quando ocorre logout de...

[OPENBUS-1788] Base de dados fica corrompida quando ocorre logout de observadores de ofertas que já foram removidas
- Revisão da implementação de observadores de ofertas;
- Adição de mensagens de log sobre observadores de ofertas;
- Renomeando operação da IDL de 'Offer::[un]subscribe' para 'Offer::[un]subscribeObserver'.
- Nova operação 'get' no módulo utilitário 'autotable';
- Operação 'table:setfieldvalue' do módulo utilitário de persistência (databale) funciona agora com campos de uma tabela aninhada;
- Ajuste da implementação do LoginDB para usar melhor as operações do módulo utilitário de persistência (databale).

git-svn-id: https://subversion.tecgraf.puc-rio.br/engdist/openbus/sdk/lua/branches/openbus_v2_proto@129966 ae0415b3-e90b-0410-900d-d0be9363c56b
parent 1818d2ef
......@@ -17,7 +17,22 @@ local function remove(table, key, ...)
else
local value = rawget(table, key)
if value ~= nil then
return remove(value, ...)
local result = remove(value, ...)
if result ~= nil and next(value) == nil then
table[key] = nil
end
return result
end
end
end
local function get(table, key, ...)
if select("#", ...) == 0 then
return rawget(table, key)
else
local value = rawget(table, key)
if value ~= nil then
return get(value, ...)
end
end
end
......@@ -25,4 +40,5 @@ end
return {
create = create,
remove = remove,
get = get,
}
......@@ -136,7 +136,7 @@ function Table:setentry(key, ...)
return saveto(self.path..key..".lua", ...)
end
function Table:setentryfield(key, field, value)
function Table:setentryfield(key, field, ...)
local path = self.path..key..".lua"
local result, errmsg = loadfrom(path)
if result == nil then
......@@ -145,6 +145,15 @@ function Table:setentryfield(key, field, value)
end
result = {}
end
local count = select("#", ...)
local value = select(count, ...)
for i = 1, count-1 do
local field = select(i, ...)
local value = result[field]
if value == nil then value = {} end
result[field] = value
result = value
end
result[field] = value
result, errmsg = saveto(path, result)
return result, errmsg
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment