Exemple #1
0
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
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;
}
Exemple #2
0
	/*! 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); }