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; }
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; }
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; }
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 ¶m) { 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)); }
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)); }
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)); }
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)); }
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)); }
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); }