elelel / qluacpp

C++ interface for Quik trading terminal via lua bindings
48 stars 26 forks source link

несколько SetUpdateCallback - вызывается только последний callback #21

Closed lvnvlad closed 5 years ago

lvnvlad commented 5 years ago

Создал несколько data_source с помощью CreateDataSource, для каждого назначил callback функцию с помощью SetUpdateCallback. В результате вызывается только последняя установленная callback функция, в которую приходят данных от всех data_source.

elelel commented 5 years ago

Добавил поддержку нескольких датасорс/коллбеков в 19965b618cd04334e7c7afabce542d39ac65eb7c, но протестировать пока у меня возможности нет.

elelel commented 5 years ago

Вообще оно должно было работать и со старым вариантом, покажите, пожалуйста код, как создаете функции колбека.

lvnvlad commented 5 years ago

LUACPP_STATIC_FUNCTION3(OnCandleMoex10, OnCandleMoex10, unsigned int) LUACPP_STATIC_FUNCTION3(OnCandleMoex, OnCandleMoex, unsigned int) ... ::lua::function::OnCandleMoex10().register_in_lua(l, OnCandleMoex10); ::lua::function::OnCandleMoex().register_inlua(l, OnCandleMoex); ... unsigned int interval = q_->constant("INTERVAL_M1"); ds = std::unique_ptr(new ::qlua::datasource(q->CreateDataSource("INDX", "MOEX10", interval_))); if (!ds->SetUpdateCallback("OnCandleMoex10") { std::cout << "ERROR: Failed to set update callback on datasource: false returned"; } ds = std::unique_ptr(new ::qlua::datasource(q->CreateDataSource("INDX", "MOEX", interval_))); if (!ds->SetUpdateCallback("OnCandleMoex") { std::cout << "ERROR: Failed to set update callback on datasource: false returned"; }

elelel commented 5 years ago

Спасибо, нашел ошибку в luacpp и исправил: https://github.com/elelel/luacpp/commit/749dbd8598fddb1a814718e08fce6fce38eca356