Инструменты пользователя

Инструменты сайта


lm3:ce:t_master

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
lm3:ce:t_master [2020/11/25 17:32]
ruben
lm3:ce:t_master [2020/11/30 15:07] (текущий)
ruben
Строка 31: Строка 31:
 ==== Репозитарий ==== ==== Репозитарий ====
  
-…+Файловая структура проекта представлена ниже. 
 + 
 +Необходимые скрипты туториала находятся в репозитарии [[https://gitlab.com/lambda-mu/lm.ver3/lm3.examples/master|lm3.examples/master]]. 
 + 
 +Чтобы запустить платформу скачайте бинарный файл и необходимые библиотеки из репозитария [[https://gitlab.com/lambda-mu/lm.ver3/lm3.engine.ce|lm3.engine.ce]] и скопируйте в корень проекта.
  
 ==== Исходные данные ==== ==== Исходные данные ====
Строка 172: Строка 176:
 Диаграмма связей: Диаграмма связей:
  
-{{ :lm3:ce:lm.png?direct |}}+{{  :lm3:ce:lm.png?direct&  }} 
 + 
 +==== Скрипты ==== 
 + 
 +**main / start.lua** 
 + 
 +<code lua> 
 +lm3:Log("Starting master server... ServersCount = "..tostring(#lmconf.Servers)) 
 + 
 +lm3:LoadLibrary( {Alias = "sys", FileName = "lm3system"} ) 
 +lm3:Include("main_lib.lua") 
 + 
 +-- Объект TCP-сервер: прием/передача данных клиентам 
 +lm3:CreateLObject( { LibAlias = "sys", Type = "TCPServer", Name = "server" } ) 
 +server:SetAttr("SocCount", lmconf.MaxClientCount) 
 +server:SetAttr("Port", lmconf.Port) 
 + 
 +-- Объект DataPack: распаковка/запаковка данных клиентов 
 +lm3:CreateLObject( { LibAlias = "sys", Type = "DataPack", Name = "packer" } ) 
 +packer:SetAttr("BufCount", lmconf.MaxClientCount) 
 + 
 +-- Объект Servers (наследник объекта LMList): работает с локальными ЛМ (по одному на сервер) 
 +init_Servers("servers") 
 +-- Объект Master (наследник объекта Base) - основной объект мастер-сервера: 
 +-- запускает ЛМ 
 +-- актуализирует данные с ЛМ: информацию о серверах 
 +-- выдает наиболее подходящий сервер  
 +init_Master("master") 
 + 
 +-- Объект Timer: по тику проверяется, что существует хотя бы один живой сервер 
 +lm3:CreateObject( { Type = "Timer", Name = "timer" } ) 
 +timer:SetAttr("Interval", 3 * lmconf.Interval) 
 + 
 +-- OnStart: выполняется при старте текущей (основной) ЛМ 
 +lm3:AddHandler("OnStart", function(o, ev) 
 +    -- проверяет конфиг остальных ЛМ на валидность 
 +    servers:DoPrepare(lmconf.BasePath.."servers_lm/config.lua") 
 +    -- старт остальных ЛМ 
 +    master:DoStart() 
 +    -- старт проверок 
 +    timer:DoEnable(true) 
 +end) 
 + 
 +timer:AddHandler("OnTick", function(o, ev) 
 +    master:DoCheckAtLeastOneExist() 
 +end) 
 + 
 +-- связи объектов: 
 +server:Connect("OnIncoming", "packer", "DoUnpack") 
 +packer:Connect("OnUnpack", "master", "DoIncoming") 
 +packer:Connect("OnPack", "server", "DoSend") 
 +master:Connect("OnReply", "packer", "DoPackTagged") 
 +master:Connect("OnStartClientLM", "servers", "DoStartWithData") 
 +master:Connect("OnStopClientLM", "servers", "DoStop") 
 +master:Connect("OnClientEvent", "servers", "DoEvent") 
 +servers:Connect("OnEvent", "master", "DoClientEvent") 
 +</code> 
 + 
 +**main / main_lib.lua** 
 + 
 +<code lua> 
 +-- Объект Servers: работает с локальными ЛМ (по одному на сервер) 
 +function init_Servers(_name) 
 +    local obj = lm3:CreateObject( { Type = "LMList", Name = _name } ) 
 + 
 +    -- обертка над протоколом DoStart 
 +    -- обновляет конфиг данными IP и Port 
 +    obj:AddInProc("DoStartWithData", "table[Name:string,Data:table[IP:string,Port:int]]", "bool", function(o, ev) 
 +        lm3:Log("DoStartWithData: Name: "..ev.Name.."; IP: "..ev.Data.IP.."; Port: "..ev.Data.Port) 
 +        local conf = obj:GetAttr("ConfigData") 
 +        conf.IP = ev.Data.IP 
 +        conf.Port = ev.Data.Port 
 +        conf.Interval = lmconf.Interval 
 +        --lm3:Log("config: "..lm3:DataToString(conf)) 
 +        return obj:DoStart({ Name = ev.Name, Config = conf }) == true 
 +    end) 
 +end 
 + 
 +-- Объект Master - основной объект мастер-сервера: 
 +-- запускает ЛМ 
 +-- актуализирует данные с ЛМ: информацию о серверах 
 +-- выдает наиболее подходящий сервер  
 +function init_Master(_name) 
 +    local obj = lm3:CreateObject( { Type = "Base", Name = _name } ) 
 + 
 +    -- структура данных о серверах 
 +    obj.Servers = {} 
 +    for i = 1, #lmconf.Servers do 
 +        obj.Servers[i] = { 
 +            Port = lmconf.Servers[i].Port, 
 +            IP = lmconf.Servers[i].IP, 
 +            Alive = false, 
 +            CurrentUsers = 0, 
 +            TimeStamp = 0, 
 +            LMName = "clm_"..i, 
 +            LMConnected = false 
 +        } 
 +    end 
 + 
 +    -- DoStart: старт ЛМ 
 +    obj:AddInEvent("DoStart", "nil", function(o, ev) 
 +        lm3:Log("DoStart") 
 +        for i = 1, #obj.Servers do 
 +            lm3:Log("Server: "..i.."; IP: "..obj.Servers[i].IP.."; Port: "..obj.Servers[i].Port) 
 +            lm3:Log("Start client LM: "..obj.Servers[i].LMName) 
 +            if obj:OnStartClientLM( { Name = obj.Servers[i].LMName, Data = { IP = obj.Servers[i].IP, Port = obj.Servers[i].Port} } ) == true then 
 +                lm3:Log("Start client LM complete.") 
 +            else 
 +                lm3:Log("ERROR: Start client LM failed.") 
 +                obj.Servers[i].LMConnected = false 
 +            end 
 +        end 
 +    end) 
 + 
 +    -- FindServer: находит наиболее подходящий сервер (nil, если не найден) 
 +    function obj.FindServer() 
 +        if #obj.Servers == 0 then 
 +            return nil 
 +        end 
 + 
 +        local server = nil 
 + 
 +        for i = 1, #obj.Servers do 
 +            if obj.Servers[i].Alive then 
 +                --lm3:Log("os.time(): "..os.time()) 
 +                --lm3:Log("stamp    : "..obj.Servers[i].TimeStamp) 
 +                if (os.time() - obj.Servers[i].TimeStamp) < (3 * lmconf.Interval / 1000)  then 
 +                    if server == nil then 
 +                        server = obj.Servers[i] 
 +                    else 
 +                        if server.CurrentUsers > obj.Servers[i].CurrentUsers then 
 +                            server = obj.Servers[i] 
 +                        end 
 +                    end 
 +                else 
 +                    lm3:Log("ERROR! Server: "..obj.Servers[i].IP.."; "..obj.Servers[i].Port.." has old time stamp!") 
 +                end 
 +            else 
 +                lm3:Log("ERROR! Server: "..obj.Servers[i].IP.."; "..obj.Servers[i].Port.." not alive!") 
 +            end 
 +        end 
 + 
 +        lm3:Log("FindServer: result: "..lm3:DataToString(server)) 
 +        return server 
 +    end 
 + 
 +    -- DoIncoming: обрабатывает данные от клиента 
 +    -- на SendServerInfo возвращает сервер (или "not found") 
 +    obj:AddInEvent("DoIncoming", "table[Tag:int,Data:array[table[Object:string,Command:string,Name:string,[Data]:any]]]", function(o, ev) 
 +        lm3:Log("Incoming data from client with tag: "..tostring(ev.Tag).." : "..lm3:DataToString(ev.Data)) 
 +        for i = 1,#ev.Data do 
 +            if ev.Data[i].Object == "Master" then 
 +                if ev.Data[i].Command == "Event" then 
 +                    if ev.Data[i].Name == "DoSendServer" then 
 +                        local server = obj.FindServer() 
 +                        if server == nil then 
 +                            obj:OnReply( { Tag = ev.Tag, Data = { {Object = "Master", Command = "Value", Name = "Server", Data =  
 +                                { 
 +                                    Result = "not found" 
 +                                } 
 +                            }}}) 
 +                        else 
 +                            obj:OnReply( { Tag = ev.Tag, Data = { {Object = "Master", Command = "Value", Name = "Server", Data =  
 +                                { 
 +                                    Result = "found",  
 +                                    Data = { IP = server.IP, Port = server.Port } 
 +                                } 
 +                            }}}) 
 +                        end 
 +                    end 
 +                end 
 +            end 
 +        end 
 +    end) 
 + 
 +    function obj.TagFromLMName(_name) 
 +        return tonumber(_name:sub(5)) 
 +    end 
 + 
 +    -- DoClientEvent: обрабатывает данные от ЛМ 
 +    obj:AddInEvent("DoClientEvent", "table[LMName:string,EventName:string,Data:any]", function(o, ev) 
 +        local i = obj.TagFromLMName(ev.LMName) 
 +        obj.Servers[i].Alive = ev.Data.Alive 
 +        obj.Servers[i].CurrentUsers = ev.Data.CurrentUsers 
 +        obj.Servers[i].TimeStamp = ev.Data.TimeStamp 
 +    end) 
 + 
 +    -- DoCheckAtLeastOneExist: проверить, что хотя бы один сервер жив 
 +    obj:AddInEvent("DoCheckAtLeastOneExist", "nil", function(o, ev) 
 +        local table = obj.FindServer() 
 +        if table ~= nil then 
 +            lm3:Log("DoCheckAtLeastOneExist: GOOD! Server found") 
 +        else 
 +            lm3:Log("DoCheckAtLeastOneExist: BAD! Server not found") 
 +        end 
 +    end) 
 + 
 +    obj:AddOutEvent("OnReply", "table[Tag:int,Data:array[table[Object:string,Command:string,Name:string,[Data]:any]]]") 
 + 
 +    obj:AddOutProc("OnClientEvent", "table[LMName:string,EventName:string,Data:any]", "bool") 
 + 
 +    obj:AddOutProc("OnStartClientLM", "table[Name:string,Data:table[IP:string,Port:int]]", "bool") 
 + 
 +    obj:AddOutProc("OnStopClientLM", "string", "bool") 
 + 
 + 
 +    return obj 
 +end 
 +</code> 
 + 
 +**main / servers_lm / start.lua** 
 + 
 +<code lua> 
 +lm3:Log("Start!") 
 +lm3:Log("IP: "..lmconf.IP.."; Port: "..lmconf.Port) 
 + 
 +lm3:LoadLibrary( {Alias = "sys", FileName = "lm3system"} ) 
 + 
 +-- объект TCP-клиент: получает/отправляет данные 
 +lm3:CreateLObject( { LibAlias = "sys", Type = "TCPClient", Name = "client" } ) 
 +client:SetAttr("IP", lmconf.IP) 
 +client:SetAttr("Port", lmconf.Port) 
 + 
 +-- объект DataPack: запаковывает/распаковывает данные 
 +lm3:CreateLObject( { LibAlias = "sys", Type = "DataPack", Name = "packer" } ) 
 + 
 +-- структура данных: результат запроса серверу 
 +result = {} 
 +result.Alive = false 
 +result.CurrentUsers = 0 
 +result.TimeStamp = os.time() 
 + 
 +-- две проверки: 
 +-- получить имя объекта Task 
 +-- получить количество клиентов 
 +checkCounter = 2 
 + 
 +-- таймер "подключись/отключись от сервера" 
 +lm3:CreateObject( { Type = "Timer", Name = "timer" } ) 
 +timer:SetAttr("Interval", lmconf.Interval) 
 + 
 +-- таймер "отправь запрос" 
 +lm3:CreateObject( { Type = "Timer", Name = "timerSend" } ) 
 +timerSend:SetAttr("Interval", 1000) 
 +timerSend:SetAttr("OneTime", true) 
 + 
 +-- OnStart: старт текущей ЛМ 
 +lm3:AddHandler("OnStart", function(o, ev) 
 +    -- активация таймера "подключись/отключись от сервера" 
 +    timer:DoEnable(true) 
 +end) 
 + 
 +-- обработчик таймера "подключись/отключись от сервера" 
 +timer:AddHandler("OnTick", function(o, ev) 
 +    checkCounter = 2 
 +    if client:GetAttr("Connected") then 
 +        lm3:Log("timer: OnTick: do disconnect") 
 +        client:DoConnect(false) 
 +    else 
 +        lm3:Log("timer: OnTick: do connect") 
 +        client:DoConnect(true) 
 +        timerSend:DoEnable(true) 
 +    end 
 +end) 
 + 
 +-- обработчик таймера "отправь запрос" 
 +-- если Connected: отправим запрос 
 +-- если не Connected: вернем основной ЛМ Alive = false 
 +timerSend:AddHandler("OnTick", function(o, ev) 
 +    if client:GetAttr("Connected") then 
 +        lm3:Log("timerSend: OnTick: send request") 
 +        packer:DoPack( { 
 +            { Object = "Auth", Command = "Set", Name = "UserName", Data = "master"}, 
 +            { Object = "Auth", Command = "Set", Name = "UserMail", Data = "master"}, 
 +          } ) 
 +        packer:DoPack( { { Object = "System", Command = "Get", Name = "UserCount" } } ) 
 +    else 
 +        lm3:Log("timerSend: OnTick: not connected!") 
 +        result.Alive = false 
 +        result.CurrentUsers = 0 
 +        result.TimeStamp = os.time() 
 +        lm3:DoExtEvent(result) 
 +    end 
 +end) 
 + 
 +-- обработка данных от сервера 
 +packer:AddHandler("OnUnpack", function(o, ev) 
 +    local data = ev 
 +    for i = 1,#data do 
 +        if data[i].Object == "System" then 
 +            if data[i].Command == "Value" then 
 +                if data[i].Name == "UserCount" then 
 +                    result.Alive = true 
 +                    result.CurrentUsers = data[i].Data 
 +                    result.TimeStamp = os.time() 
 +                     
 +                    checkCounter = checkCounter - 1 
 +                end 
 +            end 
 +        elseif data[i].Object == "Auth" then 
 +            if data[i].Command == "Value" then 
 +                if data[i].Name == "TaskObject" then 
 +                    checkCounter = checkCounter - 1 
 +                end 
 +            end 
 +        end 
 +    end 
 + 
 +    if checkCounter == 0 then 
 +        lm3:Log("client: checkCounter==0, result: "..lm3:DataToString(result)) 
 +        lm3:DoExtEvent(result) 
 +        checkCounter = 2 
 +    end 
 +end) 
 + 
 +-- связи объектов 
 +packer:Connect("OnPack", "client", "DoSend") 
 +client:Connect("OnIncoming", "packer", "DoUnpack") 
 +</code> 
 + 
 +==== Логи ==== 
 + 
 +**[master] LM_main.log** 
 + 
 +<code> 
 +[2020-11-25 15:32:29][INFO:LMInit][Start logic machine v3.3(Build:555) ----------------------------------] 
 +[2020-11-25 15:32:29][LUA:LMCore][Starting master server... ServersCount = 2] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: server] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: packer] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: servers] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: master] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: timer] 
 +[2020-11-25 15:32:29][INFO:LMInit][Initialization complete.] 
 +[2020-11-25 15:32:29][LUA:LMCore][DoStart] 
 +[2020-11-25 15:32:29][LUA:LMCore][Server: 1; IP: 192.168.50.64; Port: 11023] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start client LM: clm_1] 
 +[2020-11-25 15:32:29][LUA:LMCore][DoStartWithData: Name: clm_1; IP: 192.168.50.64; Port: 11023] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start client LM complete.] 
 +[2020-11-25 15:32:29][LUA:LMCore][Server: 2; IP: 192.168.50.64; Port: 11024] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start client LM: clm_2] 
 +[2020-11-25 15:32:29][LUA:LMCore][DoStartWithData: Name: clm_2; IP: 192.168.50.64; Port: 11024] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start client LM complete.] 
 +-- запрос клиента 
 +[2020-11-25 15:33:01][LUA:LMCore][Incoming data from client with tag: 1 : [Array:1] 
 +  1 = [Table:3] 
 +    "Command" = [String] "Event" 
 +    "Name" = [String] "DoSendServer" 
 +    "Object" = [String] "Master"] 
 +[2020-11-25 15:33:01][LUA:LMCore][ERROR! Server: 192.168.50.64; 11024 not alive!] 
 +[2020-11-25 15:33:01][LUA:LMCore][FindServer: result: [Table:7] 
 +  "Alive" = [Boolean] true 
 +  "CurrentUsers" = [Integer] 1 
 +  "IP" = [String] "192.168.50.64" 
 +  "LMConnected" = [Boolean] false 
 +  "LMName" = [String] "clm_1" 
 +  "Port" = [Integer] 11023 
 +  "TimeStamp" = [Integer] 1606307565] 
 +[2020-11-25 15:33:14][LUA:LMCore][ERROR! Server: 192.168.50.64; 11024 not alive!] 
 +-- самопроверка 
 +[2020-11-25 15:33:14][LUA:LMCore][FindServer: result: [Table:7] 
 +  "Alive" = [Boolean] true 
 +  "CurrentUsers" = [Integer] 1 
 +  "IP" = [String] "192.168.50.64" 
 +  "LMConnected" = [Boolean] false 
 +  "LMName" = [String] "clm_1" 
 +  "Port" = [Integer] 11023 
 +  "TimeStamp" = [Integer] 1606307565] 
 +[2020-11-25 15:33:14][LUA:LMCore][DoCheckAtLeastOneExist: GOOD! Server found] 
 +</code> 
 + 
 +**[master] LM_clm_1.log** 
 + 
 +<code> 
 +-- ЛМ связанная с работающим экземпляром 
 +[2020-11-25 15:32:29][INFO:LMInit][Start logic machine v3.3(Build:555) ----------------------------------] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start!] 
 +[2020-11-25 15:32:29][LUA:LMCore][IP: 192.168.50.64; Port: 11023] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: client] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: packer] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: timer] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: timerSend] 
 +[2020-11-25 15:32:29][INFO:LMInit][Initialization complete.] 
 +[2020-11-25 15:32:44][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:32:45][LUA:LMCore][timerSend: OnTick: send request] 
 +[2020-11-25 15:32:45][LUA:LMCore][client: checkCounter==0, result: [Table:3] 
 +  "Alive" = [Boolean] true 
 +  "CurrentUsers" = [Integer] 1 
 +  "TimeStamp" = [Integer] 1606307565] 
 +[2020-11-25 15:32:59][LUA:LMCore][timer: OnTick: do disconnect] 
 +[2020-11-25 15:33:14][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:33:15][LUA:LMCore][timerSend: OnTick: send request] 
 +[2020-11-25 15:33:15][LUA:LMCore][client: checkCounter==0, result: [Table:3] 
 +  "Alive" = [Boolean] true 
 +  "CurrentUsers" = [Integer] 1 
 +  "TimeStamp" = [Integer] 1606307595] 
 +[2020-11-25 15:33:29][LUA:LMCore][timer: OnTick: do disconnect] 
 +</code> 
 + 
 +**[master] LM_clm_2.log** 
 + 
 +<code> 
 +-- ЛМ связанная с неработающий экземляром 
 +[2020-11-25 15:32:29][INFO:LMInit][Start logic machine v3.3(Build:555) ----------------------------------] 
 +[2020-11-25 15:32:29][LUA:LMCore][Start!] 
 +[2020-11-25 15:32:29][LUA:LMCore][IP: 192.168.50.64; Port: 11024] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: client] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create library object: packer] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: timer] 
 +[2020-11-25 15:32:29][TRACE:LMInit][Create object: timerSend] 
 +[2020-11-25 15:32:29][INFO:LMInit][Initialization complete.] 
 +[2020-11-25 15:32:44][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:32:45][LUA:LMCore][timerSend: OnTick: not connected!] 
 +[2020-11-25 15:32:59][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:33:00][LUA:LMCore][timerSend: OnTick: not connected!] 
 +[2020-11-25 15:33:14][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:33:15][LUA:LMCore][timerSend: OnTick: not connected!] 
 +[2020-11-25 15:33:29][LUA:LMCore][timer: OnTick: do connect] 
 +[2020-11-25 15:33:30][LUA:LMCore][timerSend: OnTick: not connected!] 
 +</code> 
 + 
 + 
 +**[server] LM_main.log** 
 + 
 +<code> 
 +[2020-11-25 15:32:25][INFO:LMInit][Start logic machine v3.3(Build:555) ----------------------------------] 
 +[2020-11-25 15:32:25][LUA:LMCore][Starting central server... MaxClientCount = 50] 
 +[2020-11-25 15:32:25][TRACE:LMInit][Create library object: server] 
 +[2020-11-25 15:32:25][TRACE:LMInit][Create library object: packer] 
 +[2020-11-25 15:32:25][TRACE:LMInit][Create object: clients] 
 +[2020-11-25 15:32:25][TRACE:LMInit][Create object: Auth] 
 +[2020-11-25 15:32:25][INFO:LMInit][Initialization complete.] 
 +-- проверка 
 +[2020-11-25 15:32:44][LUA:LMCore][New client connected:1] 
 +[2020-11-25 15:32:44][LUA:LMCore][Start client LM...] 
 +[2020-11-25 15:32:44][LUA:LMCore][Start client LM complete.] 
 +[2020-11-25 15:32:45][LUA:LMCore][Incoming data from client with tag: 1 : [Array:2] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "master" 
 +    "Name" = [String] "UserName" 
 +    "Object" = [String] "Auth" 
 +  2 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "master" 
 +    "Name" = [String] "UserMail" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:32:45][LUA:LMCore][Auth: OnReply: tag: 1 : [Array:1] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Value" 
 +    "Data" = [String] "Task" 
 +    "Name" = [String] "TaskObject" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:32:45][LUA:LMCore][System: UserCount: 1] 
 +[2020-11-25 15:32:45][LUA:LMCore][Incoming data from client with tag: 1 : [Array:1] 
 +  1 = [Table:3] 
 +    "Command" = [String] "Get" 
 +    "Name" = [String] "UserCount" 
 +    "Object" = [String] "System"] 
 +[2020-11-25 15:32:59][LUA:LMCore][Client disconnected:1] 
 +-- клиент 
 +[2020-11-25 15:33:01][LUA:LMCore][New client connected:1] 
 +[2020-11-25 15:33:01][LUA:LMCore][Start client LM...] 
 +[2020-11-25 15:33:01][LUA:LMCore][Start client LM complete.] 
 +[2020-11-25 15:33:01][LUA:LMCore][Incoming data from client with tag: 1 : [Array:1] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "user" 
 +    "Name" = [String] "UserName" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:33:01][LUA:LMCore][Incoming data from client with tag: 1 : [Array:1] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "user mail" 
 +    "Name" = [String] "UserMail" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:33:01][LUA:LMCore][Auth: OnReply: tag: 1 : [Array:1] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Value" 
 +    "Data" = [String] "Task" 
 +    "Name" = [String] "TaskObject" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:33:07][LUA:LMCore][Client disconnected:1] 
 +-- проверка 
 +[2020-11-25 15:33:14][LUA:LMCore][New client connected:1] 
 +[2020-11-25 15:33:14][LUA:LMCore][Start client LM...] 
 +[2020-11-25 15:33:14][LUA:LMCore][Start client LM complete.] 
 +[2020-11-25 15:33:15][LUA:LMCore][Incoming data from client with tag: 1 : [Array:2] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "master" 
 +    "Name" = [String] "UserName" 
 +    "Object" = [String] "Auth" 
 +  2 = [Table:4] 
 +    "Command" = [String] "Set" 
 +    "Data" = [String] "master" 
 +    "Name" = [String] "UserMail" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:33:15][LUA:LMCore][Auth: OnReply: tag: 1 : [Array:1] 
 +  1 = [Table:4] 
 +    "Command" = [String] "Value" 
 +    "Data" = [String] "Task" 
 +    "Name" = [String] "TaskObject" 
 +    "Object" = [String] "Auth"] 
 +[2020-11-25 15:33:15][LUA:LMCore][System: UserCount: 1] 
 +[2020-11-25 15:33:15][LUA:LMCore][Incoming data from client with tag: 1 : [Array:1] 
 +  1 = [Table:3] 
 +    "Command" = [String] "Get" 
 +    "Name" = [String] "UserCount" 
 +    "Object" = [String] "System"] 
 +[2020-11-25 15:33:29][LUA:LMCore][Client disconnected:1] 
 +</code> 
 + 
 +**[client]** 
 + 
 +<code> 
 +2020-11-25 13:57:52.207 27416-27416/com.example.lm3_client D/lm3: application: onCreate 
 +2020-11-25 13:57:52.221 27416-27416/com.example.lm3_client D/lm3: application: setNetworkStatus: 2 
 +-- подключение к мастеру 
 +2020-11-25 13:57:52.221 27416-27416/com.example.lm3_client D/lm3: connect: master: startServerConnection 
 +2020-11-25 13:57:52.222 27416-27442/com.example.lm3_client D/lm3: connect: master: start 
 +2020-11-25 13:57:52.223 27416-27441/com.example.lm3_client D/lm3: application: setNetworkStatus: 2 
 +2020-11-25 13:57:52.246 27416-27416/com.example.lm3_client D/lm3: activity: main: OnCreate 
 +2020-11-25 13:57:52.322 27416-27416/com.example.lm3_client D/lm3: activity: main: onResume 
 +2020-11-25 13:57:52.327 27416-27442/com.example.lm3_client D/lm3: connect: master: setServerConnection: true 
 +2020-11-25 13:57:52.328 27416-27442/com.example.lm3_client D/lm3: connect: master: done 
 +2020-11-25 13:57:52.328 27416-27442/com.example.lm3_client D/lm3: connect: master: end 
 +2020-11-25 13:57:52.328 27416-27443/com.example.lm3_client D/lm3: connect: master: start listen 
 +-- отправка запроса 
 +-- получение ответа 
 +2020-11-25 13:57:52.359 27416-27443/com.example.lm3_client D/lm3: listen: master: DoUnpack: message len: 224 
 +2020-11-25 13:57:52.360 27416-27443/com.example.lm3_client D/lm3: listen: master: DoUnpack: from master: server found: IP: 192.168.50.64; Port: 11023 
 +-- отключение от мастера 
 +2020-11-25 13:57:52.360 27416-27443/com.example.lm3_client D/lm3: connect: master: setServerConnection: false 
 +2020-11-25 13:57:52.362 27416-27443/com.example.lm3_client D/lm3: connect: master: setServerConnection: close socket 
 +2020-11-25 13:57:52.392 27416-27443/com.example.lm3_client D/lm3: connect: master: end listen 
 +-- подключение к выбранному экземпляру 
 +2020-11-25 13:57:52.393 27416-27443/com.example.lm3_client D/lm3: connect: slave: startServerConnection 
 +2020-11-25 13:57:52.393 27416-27447/com.example.lm3_client D/lm3: connect: slave: start 
 +2020-11-25 13:57:52.396 27416-27447/com.example.lm3_client D/lm3: connect: slave: setServerConnection: true 
 +2020-11-25 13:57:52.396 27416-27447/com.example.lm3_client D/lm3: connect: slave: done 
 +2020-11-25 13:57:52.396 27416-27447/com.example.lm3_client D/lm3: connect: slave: end 
 +2020-11-25 13:57:52.397 27416-27448/com.example.lm3_client D/lm3: connect: slave: start listen 
 +-- запрос авторизации 
 +-- ответ 
 +2020-11-25 13:57:52.457 27416-27448/com.example.lm3_client D/lm3: listen: slave: DoUnpack: message len: 128 
 +2020-11-25 13:57:52.457 27416-27448/com.example.lm3_client D/lm3: listen: slave: DoUnpack: from slave: taskObject: Task 
 +</code> 
  
lm3/ce/t_master.1606314759.txt.gz · Последнее изменение: 2020/11/30 14:12 (внешнее изменение)