change reconnect implementation

This commit is contained in:
melo.yao 2015-04-11 00:26:13 +08:00
parent 0ad11aa607
commit 9da4979d7f
4 changed files with 58 additions and 28 deletions

View File

@ -411,27 +411,27 @@ namespace sio
}
void client_impl::reconnect(const std::string& uri)
{
if(m_network_thread)
{
if(m_con_state == con_closing)
{
m_network_thread->join();
}
else
{
return;
}
}
if(m_con_state == con_closed)
{
m_con_state = con_opening;
// void client_impl::reconnect(const std::string& uri)
// {
// if(m_network_thread)
// {
// if(m_con_state == con_closing)
// {
// m_network_thread->join();
// }
// else
// {
// return;
// }
// }
// if(m_con_state == con_closed)
// {
// m_con_state = con_opening;
m_client.get_io_service().dispatch(lib::bind(&client_impl::__connect,this,uri));
m_network_thread.reset(new std::thread(lib::bind(&client_impl::run_loop,this)));//uri
}
}
// m_client.get_io_service().dispatch(lib::bind(&client_impl::__connect,this,uri));
// m_network_thread.reset(new std::thread(lib::bind(&client_impl::run_loop,this)));//uri
// }
// }
socket::ptr const& client_impl::socket(std::string const& nsp)
{

View File

@ -83,7 +83,7 @@ void set_##__FIELD__(__TYPE__ const& l) \
// Client Functions - such as send, etc.
void connect(const std::string& uri);
void reconnect(const std::string& uri);
// void reconnect(const std::string& uri);
socket::ptr const& socket(const std::string& nsp);
@ -95,8 +95,13 @@ void set_##__FIELD__(__TYPE__ const& l) \
bool opened() const { return m_con_state == con_opened; }
std::string const& get_sessionid() const { return m_sid; }
void set_reconnect_attempts(unsigned attempts) {m_reconn_attempts = attempts;}
void set_reconnect_delay(unsigned millis) {m_reconn_delay = millis;if(m_reconn_delay_max<millis) m_reconn_delay_max = millis;}
void set_reconnect_delay_max(unsigned millis) {m_reconn_delay_max = millis;if(m_reconn_delay>millis) m_reconn_delay = millis;}
friend class client;
protected:
void send(packet& p);
@ -173,6 +178,12 @@ void set_##__FIELD__(__TYPE__ const& l) \
std::map<const std::string,socket::ptr> m_sockets;
std::mutex m_socket_mutex;
unsigned m_reconn_delay;
unsigned m_reconn_delay_max;
unsigned m_reconn_attempts;
friend class sio::client;
friend class sio::socket;

View File

@ -64,10 +64,10 @@ namespace sio
m_impl->connect(uri);
}
void client::reconnect(const std::string& uri)
{
m_impl->reconnect(uri);
}
// void client::reconnect(const std::string& uri)
// {
// m_impl->reconnect(uri);
// }
socket::ptr const& client::socket(const std::string& nsp)
{
@ -94,5 +94,20 @@ namespace sio
{
return m_impl->get_sessionid();
}
void client::set_reconnect_attempts(int attempts)
{
m_impl->set_reconnect_attempts(attempts);
}
void client::set_reconnect_delay(unsigned millis)
{
m_impl->set_reconnect_delay(millis);
}
void client::set_reconnect_delay_max(unsigned millis)
{
m_impl->set_reconnect_delay_max(millis);
}
}

View File

@ -49,8 +49,12 @@ namespace sio
// Client Functions - such as send, etc.
void connect(const std::string& uri);
void reconnect(const std::string& uri);
void set_reconnect_attempts(int attempts);
void set_reconnect_delay(unsigned millis);
void set_reconnect_delay_max(unsigned millis);
socket::ptr const& socket(const std::string& nsp = "");