Как работает

Страницы: 1
RSS
Как работает
 
Кратенько:
Нужно снять все заявки ...
Нажимаем левую кнопку мыши и через установленный обработчик(методом SetTableNotificationCallback) на это нажатие
выполянем kill_all_order() ... также установлен OnOrder()...OnTrade()

-- убираем 1 заявку
function kill_order(atri)
   local trans = {
   ["ACTION"] = "KILL_ORDER",
....тыр-тыр
   }
   local res = sendTransaction(trans)
end

local function fnorder(psecode,pflags)
   if psecode ~= sec then return false end
   if bit.band(pflags, 1)~=0 then return true end
end

-- убираем все заявки
function kill_all_order()
local t1 = SearchItems("orders", 0, getNumberOf("orders") +1, fnorder,"sec_code,flags")
           if t1 ~= nil then
               for i = 1, #t1, 1 do
                   atri = getItem("orders", t1[i])
                   kill_order(atri)
               end
           end
end

Вопрос!
1) Во время работы kill_all_order() будут срабатывать OnOrder(),OnTrade() ?
2) Если выполняется OnOrder() остальные On...() ждут последовательно в очереди или пришло событие начинаем отрабатывать ?
3) Нельзя ли это осветить в документации ?
 
Во 2) пункте общий вопрос имелся ввиду "Во время любого On...() может ли он прерватся новым On...() или отработается текущий On...() до конца и затем другие On...() последовательно из очереди будут отработаны. И кстати эта очередь есть или пришел On...() отработать не смог - выкидываем"
 
Цитата
dimka пишет:
1) Во время работы kill_all_order() будут срабатывать OnOrder(),OnTrade() ?
OnOrder сработает столько раз сколько изменится статусы заявок которые Вы снимаете
OnTrade вообще не сработает, так как Вы работаете с заявками а не со сделками.
Цитата
dimka пишет:
2) Если выполняется OnOrder() остальные On...()
Колбеки в LUA работают в одном потоке. пока один колбек занят остальные ждут. Именно поэтому мы не рекомендуем выполнять в колбеках какие-либо тяжелый манипуляции.
Цитата
dimka пишет:
3) Нельзя ли это осветить в документации ?
Что осветить?
 
Цитата
Sergey Gorokhov пишет:

Цитата
dimka пишет:
2) Если выполняется OnOrder() остальные On...()
Колбеки в LUA работают в одном потоке. пока один колбек занят остальные ждут. Именно поэтому мы не рекомендуем выполнять в колбеках какие-либо тяжелый манипуляции.
SetTableNotificationCallback() - я так понимаю устанавливает тоже колбэк на события в таблице ? Значит получается отрабатывая колбэк нажатия кнопки мыши - kill_all_order()  ... OnOrder() не сработает или я неправильно понял?
 
Цитата
dimka пишет:
SetTableNotificationCallback() - я так понимаю устанавливает тоже колбэк на события в таблице ? Значит получается отрабатывая колбэк нажатия кнопки мыши - kill_all_order()... OnOrder() не сработает или я неправильно понял?
SetTableNotificationCallback тоже работает в основном потоке
Соответственно пока работает цикл в kill_all_order остальные колбеки не придут.
Соответственно, как уже было сказано, мы не рекомендуем выполнять в колбеках какие-либо тяжелые манипуляции.
 
Цитата
Sergey Gorokhov пишет:
Колбеки в LUA работают в одном потоке. пока один колбек занят остальные ждут.
  • т.е. у вас, получается,  реализован механизм очереди колбеков и петля её обработки (на манер windows getmessageque, dispatchmessage и т.п. только, разумеется,  с использованием других функций)?
  • а также, вы, таким образом, нам гарантируете, что ни один колбек не пропадёт/будет добавлен в очередь и когда-нибудь обработан?
 
Цитата
sam063rus пишет:
а также, вы, таким образом, нам гарантируете, что ни один колбек не пропадёт/будет добавлен в очередь и когда-нибудь обработан?
если один колбек занял терминал, то он не получает данных с сервера.
как только отвиснет, получит пропущенные данные. таким образом, хронология восстановится.
 
Цитата
Sergey Gorokhov пишет:
если один колбек занял терминал, то он не получает данных с сервера.
как только отвиснет, получит пропущенные данные. таким образом, хронология восстановится.
Имеется ввиду хронология среди однотипных колбеков?
Разнотипные колбеки придут в произвольном порядке, и не обязательно в том, в каком они бы пришли, не будь этой задержки, верно?
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Серж пишет:
Имеется ввиду хронология среди однотипных колбеков?
Разнотипные колбеки придут в произвольном порядке, и не обязательно в том, в каком они бы пришли, не будь этой задержки, верно?
Да все верно сказанно
Страницы: 1
Читают тему
Наверх