ничего повторно делать не нужно, только один раз, если терминал сам реконнектится каждое утро, и вообще настроен переподключаться сам при дисконнекте
у меня так в connection_status_callback
Код |
---|
if (nEvent == TRANS2QUIK_QUIK_CONNECTED){
instance->m_connected = true;
printf("\n[quik_order] СОЕДИНЕНИЕ УСТАНОВЛЕНО\n");
/*long n = TRANS2QUIK_UNSUBSCRIBE_ORDERS();
printf("\n[quik_order] TRANS2QUIK_UNSUBSCRIBE_ORDERS: %ld\n", n);
n = TRANS2QUIK_SUBSCRIBE_ORDERS((LPSTR)instance->m_classCode.c_str(), (LPSTR)m_tickersList.c_str());
printf("\n[quik_order] TRANS2QUIK_SUBSCRIBE_ORDERS: %ld\n", n);
n = TRANS2QUIK_START_ORDERS(_order_status_callback);
printf("\n[quik_order] TRANS2QUIK_START_ORDERS: %ld\n", n); */
} else{
printf("\n[quik_order] СОЕДИНЕНИЕ РАЗОРВАНО {%ld %ld %s}\n", nEvent, nExtendedCode, message);
instance->m_connected = false;
}
|
обрати внимание, что там почти всё закомментировано.
а так в ините
Код |
---|
static bool set = false;
if (set)
return;
if (!m_connected) {
TRANS2QUIK_CONNECT((LPSTR)m_lib.c_str(), &code, message, MSG_LEN);
m_connected = TRANS2QUIK_IS_QUIK_CONNECTED(&code, message, MSG_LEN) == TRANS2QUIK_QUIK_CONNECTED;
}
if (m_connected && !set) {
printf("\n[quik_order] Выполняется первоначальная установка колбэков...");
set = true;
TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK(_connection_status_callback, &code, message, MSG_LEN);
TRANS2QUIK_SET_TRANSACTIONS_REPLY_CALLBACK(_transaction_reply_callback, &code, message, MSG_LEN);
TRANS2QUIK_SUBSCRIBE_ORDERS((LPSTR)instance->m_classCode.c_str(), (LPSTR)m_tickersList.c_str());
TRANS2QUIK_START_ORDERS(_order_status_callback);
printf("готово.\n");
}
|
я честно говоря этот m_connected больше нигде не проверяю и не трогаю, т.к. у меня в случае недоступности сервера просто не приходят данные и никаких новых заявок тоже не будет
но это моя реализация, можно проверять конечно. раньше когда-то давно я проверял, потом перестал
колбеки устанавливаются 1 раз на много дней и работают пока работает робот
каждое утро при переподключении я вижу портянку приходящих заявок с прошлой сессии
и при любом переподключении