uint32 Connection::doExecute(sqlite3 *connection, const String &sql) { if(m_showSql) OS_LOG_NOTICE(sql); _check(connection); scoped_ptr<Result> result(OS_NEW Result(connection, m_cs)); result->execute(sql); // Restituisce il numero di records affetti return sqlite3_changes(connection); }
void start() { // // Create the dummy house keeper and start the io_service thread // _houseKeepingTimer.async_wait(boost::bind(&TimerService::onHouseKeepingTimer, this, boost::asio::placeholders::error)); _pIoServiceThread1 = new boost::thread(boost::bind(&boost::asio::io_service::run, &(_ioService))); _pIoServiceThread2 = new boost::thread(boost::bind(&boost::asio::io_service::run, &(_ioService))); OS_LOG_NOTICE(FAC_KERNEL, "OsTimer::TimerService STARTED."); _lastTick = OsTimer::now(); }
shared_ptr<Result> Connection::doQuery(sqlite3 *connection, const String &sql) { if(m_showSql) OS_LOG_NOTICE(sql); // Nota: la bind del risultato al DataTable va loccata altrimenti si può generare un errore di tipo "Commands out of sync" (essendo la funzione chiamata da threads diversi) _check(connection); shared_ptr<Result> result(OS_NEW Result(connection, m_cs)); result->prepare(sql); return result; }
bool SipRedirectorAliasDB::resolveAlias( const SipMessage& message, UtlString& requestString, Url& requestUri ) { bool isDomainAlias = false; bool isUserAlias = false; UtlString domain; UtlString hostAlias; UtlString userAlias; requestUri.getHostAddress(domain); UtlBoolean isMyHostAlias = mpSipUserAgent->isMyHostAlias(requestUri); if (mpSipUserAgent && domain != _localDomain && isMyHostAlias) { isDomainAlias = true; hostAlias = domain; } UtlString requestIdentity; requestUri.getIdentity(requestIdentity); EntityDB::Aliases aliases; bool isUserIdentity = false; EntityDB* entityDb = SipRegistrar::getInstance(NULL)->getEntityDB(); entityDb->getAliasContacts(requestUri, aliases, isUserIdentity); int numAliasContacts = aliases.size(); EntityDB::Aliases::iterator iter = aliases.begin(); if (numAliasContacts == 1 && iter != aliases.end()) { // If disableForwarding and the relation value is "userforward", // do not record this contact. if (isUserIdentity && iter->relation != ALIASDB_RELATION_USERFORWARD && iter->relation != "callgroup") { UtlString contact = iter->contact.c_str(); Url contactUri(contact); isUserAlias = true; contactUri.getUserId(userAlias); } } if (isUserAlias) { requestUri.setUserId(userAlias.data()); requestUri.getUri(requestString); } if (isDomainAlias) { requestUri.setHostAddress(hostAlias); requestUri.getUri(requestString); } if (isUserAlias || isDomainAlias) { OS_LOG_NOTICE(FAC_SIP, "SipRedirectorAliasDB::lookUp normalized request-uri to " << requestString.data()); } return isUserAlias || isDomainAlias; }
void StateQueuePublisher::internal_run() { zmq::context_t context(1); zmq::socket_t socket(context, ZMQ_PUB); try { socket.bind(_zmqBindAddress.c_str()); } catch(zmq::error_t& error_) { return; } OS_LOG_NOTICE(FAC_NET, "StateQueuePublisher::internal_run() " << "Started accepting subscriptions at " << _zmqBindAddress); while(!_terminate) { StateQueueRecord record; if (_queue.dequeue(record)) { // // exit // if (_terminate) break; // // publish // std::string eventId = record.id; if (!record.watcherData && eventId.size() < 7) { OS_LOG_ERROR(FAC_NET, "StateQueuePublisher::publish eventId is too short - " << eventId); continue; } try { s_sendmore(socket, eventId); std::string data; if (!record.watcherData) { for (std::vector<std::string>::const_iterator iter = record.exclude.begin(); iter != record.exclude.end(); iter++) { data += *iter; data += " "; } if (data.empty()) data = "initial_data"; OS_LOG_DEBUG(FAC_NET, "StateQueuePublisher::publish " << " message-id: " << eventId << " exclude-app-id: " << data); } else { data = record.data; } // // Send the address // s_sendmore(socket, _zmqBindAddress); // // Send the data vector // s_sendmore(socket, data); // // Send the number of subscribers // std::string ev = eventId.substr(0, 7); int count = countSubscribers(ev); std::string strcount = boost::lexical_cast<std::string>(count); s_send(socket, strcount); OS_LOG_DEBUG(FAC_NET, "StateQueuePublisher::publish ZeroMQ send: " << eventId << ":" << data); if (!record.watcherData && !count) { OS_LOG_WARNING(FAC_NET, "StateQueuePublisher::publish " << "ZERO subscribers to handle message-id: " << eventId); } } catch(zmq::error_t& error_) { OS_LOG_WARNING(FAC_NET, "StateQueuePublisher::publish " << "ZMQ Error sending publish " << eventId << " Error: " << error_.what()); } } else { OS_LOG_ERROR(FAC_NET, "FAILED TO DEQUEUE!"); } } OS_LOG_NOTICE(FAC_NET, "StateQueuePublisher::internal_run() TERMINATED."); }
RedirectPlugin::LookUpStatus SipRedirectorAliasDB::lookUp( const SipMessage& message, UtlString& requestString, Url& requestUri, const UtlString& method, ContactList& contactList, RequestSeqNo requestSeqNo, int redirectorNo, SipRedirectorPrivateStorage*& privateStorage, ErrorDescriptor& errorDescriptor) { // If url param sipx-userforward = false, do not redirect to user-forward // aliases. UtlString userforwardParam; requestUri.getUrlParameter("sipx-userforward", userforwardParam); bool disableForwarding = userforwardParam.compareTo("false", UtlString::ignoreCase) == 0; if (disableForwarding) { Os::Logger::instance().log(FAC_SIP, PRI_DEBUG, "%s::lookUp user forwarding disabled by parameter", mLogName.data()); } bool isDomainAlias = false; UtlString domain; UtlString hostAlias; requestUri.getHostAddress(domain); UtlBoolean isMyHostAlias = mpSipUserAgent->isMyHostAlias(requestUri); if (mpSipUserAgent && domain != _localDomain && isMyHostAlias) { isDomainAlias = true; hostAlias = domain; requestUri.setHostAddress(_localDomain); } UtlString requestIdentity; requestUri.getIdentity(requestIdentity); OS_LOG_DEBUG(FAC_SIP, mLogName.data() << "::lookUp identity: " << requestIdentity.data() << " domain: " << domain.data() << " local-domain: " << _localDomain.data() << " isHostAlias: " << isMyHostAlias); //ResultSet aliases; //AliasDB::getInstance()->getContacts(requestUri, aliases); //int numAliasContacts = aliases.getSize(); EntityDB::Aliases aliases; bool isUserIdentity = false; EntityDB* entityDb = SipRegistrar::getInstance(NULL)->getEntityDB(); entityDb->getAliasContacts(requestUri, aliases, isUserIdentity); int numAliasContacts = aliases.size(); if (numAliasContacts > 0) { Os::Logger::instance().log(FAC_SIP, PRI_DEBUG, "%s::lookUp " "got %d AliasDB contacts", mLogName.data(), numAliasContacts); // Check if the request identity is a real user/extension UtlString realm; UtlString authType; SipXauthIdentity authIdentity; authIdentity.setIdentity(requestIdentity); for (EntityDB::Aliases::iterator iter = aliases.begin(); iter != aliases.end(); iter++) { // If disableForwarding and the relation value is "userforward", // do not record this contact. if (!(disableForwarding && iter->relation == ALIASDB_RELATION_USERFORWARD)) { UtlString contact = iter->contact.c_str(); Url contactUri(contact); // if the request identity is a real user if (isUserIdentity) { // Encode AuthIdentity into the URI authIdentity.encodeUri(contactUri, message); } contactUri.setUrlParameter(SIP_SIPX_CALL_DEST_FIELD, "AL"); if (numAliasContacts == 1 && isDomainAlias && isUserIdentity) { UtlString userId; contactUri.getUserId(userId); requestUri.setUserId(userId.data()); requestUri.getUri(requestString); OS_LOG_NOTICE(FAC_SIP, "SipRedirectorAliasDB::lookUp normalized request-uri to " << requestString.data()); } else { // Add the contact. contactList.add( contactUri, *this ); } } } } else if (isDomainAlias) { // // No alias found. If this is was towards a domain alias, make sure to reset it back to // the old value prior to feeding it to the rest of the redirectors. // requestUri.setHostAddress(hostAlias); requestUri.getUri(requestString); } return RedirectPlugin::SUCCESS; }