Ejemplo n.º 1
0
bool pimpl<Thread>::start(boost::function<void ()> runCallback)
{
	OS_LOCK(m_cs);

	if(m_status != isReady)
		return false;

	m_status = isRunning;
	m_thread.reset(OS_NEW_T(boost::thread)(runCallback), os_delete_t());

	return true;
}
Ejemplo n.º 2
0
void NTPClient::responseCallback(const boost::system::error_code &e, size_t transferredBytes, const NTPTime &destinationTime, shared_ptr<ConnectionScope> scope)
{
    scope->cancelTimeout();

    if(e)
        throw boost::system::system_error(e);

    if(transferredBytes < sizeof(Packet))
        OS_EXCEPTION("response error");

    m_response.reset(OS_NEW_T(NTPResponse), os_delete_t());
    m_response->stratum = m_responsePacket.basic.stratum;
    m_response->leap_indicator = (m_responsePacket.basic.liVnMode & 0xC0) >> 6;
    m_response->originate_time = m_responsePacket.basic.originate_time;
    m_response->receive_time = m_responsePacket.basic.receive_time;
    m_response->transmit_time = m_responsePacket.basic.transmit_time;
    m_response->roundtrip_delay = (destinationTime - m_response->originate_time) - (m_response->transmit_time - m_response->receive_time);
    m_response->localclock_offset = ((m_response->receive_time - m_response->originate_time) + (m_response->transmit_time - destinationTime)) / 2;
}
Ejemplo n.º 3
0
uint32 EntitiesEntity::getChildsCount(const shared_ptr<IPortalDatabase> &database, const ObjectsTypes &types, shared_ptr<DbSqlSelect> select) const
{
	OS_ASSERT(select == nullptr || select->count);		// Se  stata specificata una select valida dovrebbe essere di conteggio

	OS_LOCK(m_cs);

	String sql;
	// Genera l'sql di caricamento dei figli
	_getSql(database, types, RangeUint32::EMPTY, true, select, sql);

	String childsKey = getChildsKey(types);

	ChildCounterMap::iterator i = m_countersMap.find(childsKey);
	// Controlla se il totale  gi stato caricato in precedenza
	if(i != m_countersMap.end())
	{
		// Verifica che l'sql utilizzata in precedenza coincida con quella richiesta
		if(i->second->sql == sql)
		{
			return i->second->count;
		}
		else
		{
			// Resetta il calcolo precedente
			m_countersMap.erase(i);
		}
	}

	uint32 count = 0;

	DataTable result;
	if(database->execute(sql, result))
		count = *result[0][0];

	m_countersMap[childsKey] = shared_ptr<ChildsInfo>(OS_NEW_T(ChildsInfo(count, sql)), os_delete_t());
	return count;
}
Ejemplo n.º 4
0
NetExport shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket> > createAsioSSLObject<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>, boost::asio::ssl::context &>(boost::asio::io_service &service, boost::asio::ssl::context &param)
{
    return shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket> >(OS_NEW_T(boost::asio::ssl::stream<boost::asio::ip::tcp::socket>)(service, param), boost::bind(&deallocAsioSSLObject<boost::asio::ssl::stream<boost::asio::ip::tcp::socket> >, _1));
}
Ejemplo n.º 5
0
NetExport shared_ptr<boost::asio::ssl::context> createAsioSSLObject<boost::asio::ssl::context, boost::asio::ssl::context_base::method>(boost::asio::io_service &service, boost::asio::ssl::context_base::method param)
{
    return shared_ptr<boost::asio::ssl::context>(OS_NEW_T(boost::asio::ssl::context)(service, param), boost::bind(&deallocAsioSSLObject<boost::asio::ssl::context>, _1));
}
Ejemplo n.º 6
0
NetExport shared_ptr<boost::asio::ip::udp::socket> createAsioObject(boost::asio::io_service &service)
{
    return shared_ptr<boost::asio::ip::udp::socket>(OS_NEW_T(boost::asio::ip::udp::socket)(service), boost::bind(&deallocAsioObject<boost::asio::ip::udp::socket>, _1));
}
Ejemplo n.º 7
0
NetExport shared_ptr<boost::asio::ip::tcp::resolver> createAsioObject(boost::asio::io_service &service)
{
	return shared_ptr<boost::asio::ip::tcp::resolver>(OS_NEW_T(boost::asio::ip::tcp::resolver)(service), boost::bind(&deallocAsioObject<boost::asio::ip::tcp::resolver>, _1));
}
Ejemplo n.º 8
0
NetExport shared_ptr<boost::asio::io_service> createAsioService()
{
	return shared_ptr<boost::asio::io_service>(OS_NEW_T(boost::asio::io_service), boost::bind(&deallocAsioObject<boost::asio::io_service>, _1));
}
Ejemplo n.º 9
0
IRCRoom::IRCRoom(shared_ptr<IIRCTarget> target) : m_target(target),
												  m_cs(OS_NEW_T(boost::recursive_mutex), os_delete_t()),
												  m_modified(true)		// Notifica lo stato iniziale
{
	OS_ASSERT(target != nullptr);
}