2016-01-09 4 views
0

Я использую libtorrent в приложении на C++, которое я создаю, и загружает работу отлично, но я хотел бы попросить трекера указать количество семян и одноранговых узлов, которые он подключил, прежде чем пытаться для запуска загрузки.scrape_tracker не дает никакого предупреждения с помощью libtorrent

Я пробовал с scrape_tracker(), но я никогда не получаю предупреждения. Я думаю, что я не использую предупреждения правильно, но я не нахожу код, который я могу использовать. Это то, что я делаю:

while (running) 
{ 
    sleep(1000); 

    std::vector<alert*> alerts; 
    s.pop_alerts(&alerts); 

    for (std::vector<alert*>::iterator i = alerts.begin(), end(alerts.end()); i != end; ++i) 
    { 
     scrape_failed_alert* tpf = alert_cast<scrape_failed_alert>(*i); 
     if (tpf) 
      MessageBox(0,"alert",0,0); 

     scrape_reply_alert* tpr = alert_cast<scrape_reply_alert>(*i); 
     if (tpr) 
      MessageBox(0,"alert",0,0); 
    } 
} 

ответ

2

Существует mask, что включает и отключает категории оповещений, которые будут опубликованы. (некоторые категории могут быть довольно многословными). По умолчанию публикуются только ошибки, а также ответы на конкретные вызовы (например, сохранение данных возобновления, добавление торрента и т. Д.)

Оказалось, что запрос scrape отправляется только в том случае, если включена категория предупреждений alert::tracker_notification. Это, скорее всего, недосмотр, поскольку оповещения о царапинах публикуются только в ответ на активный вызов для выполнения очистки, ответ должен быть отправлен независимо от маски предупреждения.

Однако, если вы включаете оповещения уведомления трекера, я предполагаю, что вы получите ответ scrape.

s.set_alert_mask(alert::tracker_notification | alert::error_notification); 
+0

У вас его есть! Я получаю только «отсутствующую или недействительную» хэш-запись, но, по крайней мере, у меня есть ответ. благодаря – Entretoize

 Смежные вопросы

  • Нет связанных вопросов^_^