bool SubscribeDB::findFromAndTo( const UtlString& callid, const UtlString& fromtag, const UtlString& totag, UtlString& from, UtlString& to) const { mongo::BSONObj query = BSON(Subscription::callId_fld() << callid.str()); mongo::ScopedDbConnection conn(_info.getConnectionString()); auto_ptr<mongo::DBClientCursor> pCursor = conn->query(_info.getNS(), query); while (pCursor.get() && pCursor->more()) { Subscription row = pCursor->next(); UtlBoolean r; UtlString seen_tag; // Get the tag on the URI in the "from" column. Url fromUri(row.fromUri().c_str(), FALSE); r = fromUri.getFieldParameter("tag", seen_tag); // If it matches... if (r && seen_tag.compareTo(fromtag) == 0) { // Get the tag on the URI in the "to" column. Url toUri(row.toUri().c_str(), FALSE); r = toUri.getFieldParameter("tag", seen_tag); // If it matches... if (r && seen_tag.compareTo(totag) == 0) { // We have found a match. Record the full URIs. from = row.fromUri().c_str(); to = row.toUri().c_str(); conn.done(); return true; } } } conn.done(); return false; }