ACCOUNT_TDCLS = tdcls(DBASE_TDCLS, RID_TDCLS, AGENT_TDCLS, HEARTBEAT_TDCLS, ATTRIB_TDCLS);
ACCOUNT_TDCLS.name = "ACCOUNT_TDCLS";
function ACCOUNT_TDCLS:create(value)
assert(type(value) == "table", "account::create para not corret");
self:replace_dbase(value);
self:freeze_dbase()
self:set("ob_type", OB_TYPE_ACCOUNT);
REDIS_D.run_publish(REDIS_ACCOUNT_OBJECT_CONSTRUCT, self:query("rid"))
end
function ACCOUNT_TDCLS:destruct()
self:close_agent()
REDIS_D.run_publish(REDIS_ACCOUNT_OBJECT_DESTRUCT, self:query("rid"))
end
function ACCOUNT_TDCLS:get_ob_id()
return (string.format("ACCOUNT_TDCLS:%s:%s", save_string(self:query("rid")),
save_string(self:query("account"))));
end
function ACCOUNT_TDCLS:accept_relay(agent)
agent:relay_comm(self)
self:set_authed(true)
end
function ACCOUNT_TDCLS:set_login_user(user_ob, is_reconnect)
local pre_ob = find_object_by_rid(self:query("user_rid"))
if pre_ob and pre_ob:query("rid") ~= user_ob:query("rid") then
pre_ob:set("account_rid", "")
pre_ob:relay_comm(self)
pre_ob:connection_lost(true)
end
user_ob:accept_relay(self, is_reconnect)
user_ob:set("account_rid", self:get_rid())
self:set("user_rid", user_ob:get_rid())
end
function ACCOUNT_TDCLS:get_user_ob()
return find_object_by_rid(self:query("user_rid"))
end
function ACCOUNT_TDCLS:connection_lost()
local user_ob = find_object_by_rid(self:query("user_rid"))
if is_object(user_ob) then
user_ob:connection_lost(true)
else
destruct_object(self)
end
end
function ACCOUNT_TDCLS:get_ob_class()
return "ACCOUNT_TDCLS";
end
function ACCOUNT_TDCLS:is_account()
return true
end