2015-08-30 2 views
0

Im пытается получить Session_Status обновляется, но по какой-либо причине значения структуры не обновляются, сеанс начинается так:Libtorrent Session_Status не обновляя

using namespace libtorrent; 
session* Session; 
session_status* Session_Status; 
session_settings* Session_Settings; 

bool Start_Client_Sess () 
{ 
    using namespace libtorrent; 
    Session = new session; 
    Session_Status = new session_status; 
    Session_Settings = new session_settings; 
    Session->settings (); 
    Session->set_settings (*Session_Settings); 

    Session->add_extension (create_ut_pex_plugin); 
    Session->add_extension (create_ut_metadata_plugin); 
    Session->add_extension (create_lt_trackers_plugin); 
    Session->add_extension (create_smart_ban_plugin); 

    Session->start_upnp (); 
    Session->start_natpmp (); 
    Session->start_dht (); 
    Session->start_lsd ();  

    error_code e; 
    Session->listen_on (std::make_pair (6881 , 6889) , e); 

    if (e) 
    { 
     return false; 
    } 
    return true; 
} 

затем на второй таймер для Windows 1 я делаю это :

void RunTimer () 
{ 
    using namespace libtorrent; 
    Session->status (); 
    if (Session->is_listening ()) 
    { 
     if (Session_Status->has_incoming_connections) 
     { 
      INT x = 2; 
      std::cout << x << "\n"; 
     } 
     else 
     { 
      INT x = 1; 
      std::cout << x << "\n"; 
     } 
    } 
    else 
    { 
     INT x = 0; 
     std::cout << x << "\n"; 
    } 
} 

, но независимо от того, что сессия всегда слушает, даже если брандмауэр блокирует Libtorrent и всегда есть связь, даже если интернет выключен.

ответ

3

Я считаю, что вы имели в виду, чтобы присвоить статус сеанса к объекту Session_Status:

*Session_Status = Session->status(); 

Я хотел бы предложить вам не кучного выделить session_status ни session_settings объекты.

+0

Спасибо за это, теперь он работает, но я действительно не понимаю часть кучи, какая другая часть функций ошибочна? – Shrek

+1

Вместо того, чтобы говорить: 'session_status * Session_Status; Session_Status = new session_status; 'вы можете просто сказать:' session_status Session_Status; 'и не нужно выделять объект новым, а не разыменовывать указатель с помощью' * '. (и то же самое для 'session_settings'). – Arvid