//------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- bool ClientConnection::connect() { unsigned attempts(0); const LoginParameters& lparam(_session.get_login_parameters()); Poco::Timespan timeout(1000000); while (attempts < lparam._login_retries) { ostringstream ostr; try { ostr.str(""); ostr << "Trying to connect to: " << _addr.toString() << " (" << ++attempts << ')'; _session.log(ostr.str()); const LoginParameters& lparam(_session.get_login_parameters()); _sock->connect(_addr, timeout); if (lparam._recv_buf_sz) set_recv_buf_sz(lparam._recv_buf_sz); if (lparam._send_buf_sz) set_send_buf_sz(lparam._send_buf_sz); _sock->setLinger(false, 0); _sock->setNoDelay(_no_delay); _session.log("Connection successful"); return _connected = true; } catch (exception& e) // also catches Poco::Net::NetException { ostr.str(""); ostr << "exception: "; if (dynamic_cast<Poco::Exception*>(&e)) ostr << (static_cast<Poco::Exception&>(e)).displayText(); else ostr << e.what(); _session.log(ostr.str()); hypersleep<h_milliseconds>(lparam._login_retry_interval); } } _session.log("Connection failed"); return false; }
/*! Set the socket send buffer sz \param sz new size */ void set_send_buf_sz(const unsigned sz) const { set_send_buf_sz(sz, _sock); }