static int cmdline_for_bench_sprite_sort(int argc, const char** argv) { { // Register some basic "baseline" benchmark std::vector<paint_session> sessions(1); for (auto& ps : sessions[0].PaintStructs) { ps.basic.next_quadrant_ps = (paint_struct*)(std::size(sessions[0].PaintStructs)); } for (auto& quad : sessions[0].Quadrants) { quad = (paint_struct*)(std::size(sessions[0].Quadrants)); } benchmark::RegisterBenchmark("baseline", BM_paint_session_arrange, sessions); } // Google benchmark does stuff to argv. It doesn't modify the pointees, // but it wants to reorder the pointers, so present a copy of them. std::vector<char*> argv_for_benchmark; // argv[0] is expected to contain the binary name. It's only for logging purposes, don't bother. argv_for_benchmark.push_back(nullptr); // Extract file names from argument list. If there is no such file, consider it benchmark option. for (int i = 0; i < argc; i++) { if (platform_file_exists(argv[i])) { // Register benchmark for sv6 if valid std::vector<paint_session> sessions = extract_paint_session(argv[i]); if (!sessions.empty()) benchmark::RegisterBenchmark(argv[i], BM_paint_session_arrange, sessions); } else { argv_for_benchmark.push_back((char*)argv[i]); } } // Update argc with all the changes made argc = (int)argv_for_benchmark.size(); ::benchmark::Initialize(&argc, &argv_for_benchmark[0]); if (::benchmark::ReportUnrecognizedArguments(argc, &argv_for_benchmark[0])) return -1; ::benchmark::RunSpecifiedBenchmarks(); return 0; }
std::set<SessionId> WebSocketQueue::sessions() const { std::lock_guard<std::mutex> guard(mutex_); std::set<SessionId> sessions(sessions_); return sessions; }
bool EmailServiceProvider::connect() { Q_D(EmailServiceProvider); Q_ASSERT(d->providerInfo); if (!d->providerInfo) return false; Q_ASSERT(!d->session && !d->service); if (d->session || d->service) return false; QScopedPointer<QList<vmime::ref<vmime::net::session> > > sessions( createSessionList(*d->providerInfo)); Q_ASSERT(sessions); if (!sessions) return false; vmime::ref<vmime::net::session> session; vmime::ref<vmime::net::service> service; EmailServiceProviderInfo::ServiceTypes serviceType = d->providerInfo->serviceType(); for(int i = 0; i < sessions->size(); ++i) { vmime::ref<vmime::net::session> currentSession = sessions->at(i); dumpToLog(currentSession); if (serviceType & EmailServiceProviderInfo::SMTP || serviceType & EmailServiceProviderInfo::SMTPS || serviceType & EmailServiceProviderInfo::SENDMAIL) { // transports try { vmime::ref<vmime::net::transport> transport = currentSession->getTransport(); transport->setTimeoutHandlerFactory( vmime::create<EmailServiceTimeoutHandlerFactory>()); if (d->dummyCert) transport->setCertificateVerifier( vmime::create<Security::DummyCertVerifier>()); transport->connect(); session = currentSession; service = transport; // break the for loop break; } catch (vmime::exception& e) { qLog() << e.what(); } } else { // stores try { vmime::ref<vmime::net::store> store = currentSession->getStore(); store->setTimeoutHandlerFactory( vmime::create<EmailServiceTimeoutHandlerFactory>()); if (d->dummyCert) store->setCertificateVerifier( vmime::create<Security::DummyCertVerifier>()); store->connect(); session = currentSession; service = store; // break the for loop break; } catch (vmime::exception& e) { qLog() << e.what(); } } } if (!session || !service) return false; d->session = session; d->service = service; return true; }