int getFrames(int id, char* fname, callback cb) { state s; s.id = id; s.buffer = NULL; s.pCodec = NULL; s.pFrame = NULL; s.sws_ctx = NULL; s.pCodecCtx = NULL; s.pFrameRGB = NULL; s.pFormatCtx = NULL; s.optionsDict = NULL; if (-1 == initState(fname, &s)) { return -1; } processFrames(&s, cb); cleanupState(&s); return 7; }
void RPCRequestHandler::handleRequest(Transport *transport) { if (needReset()) { cleanupState(); initState(); } ++m_requestsSinceReset; ExecutionProfiler ep(ThreadInfo::RuntimeFunctions); Logger::OnNewRequest(); HttpRequestHandler::GetAccessLog().onNewRequest(); m_context->setTransport(transport); transport->enableCompression(); ServerStatsHelper ssh("all", ServerStatsHelper::TRACK_MEMORY); Logger::Verbose("receiving %s", transport->getCommand().c_str()); // will clear all extra logging when this function goes out of scope StackTraceNoHeap::ExtraLoggingClearer clearer; StackTraceNoHeap::AddExtraLogging("RPC-URL", transport->getUrl()); // authentication const set<string> &passwords = m_serverInfo->getPasswords(); if (!passwords.empty()) { set<string>::const_iterator iter = passwords.find(transport->getParam("auth")); if (iter == passwords.end()) { transport->sendString("Unauthorized", 401); transport->onSendEnd(); HttpRequestHandler::GetAccessLog().log(transport, nullptr); /* * HPHP logs may need to access data in ServerStats, so we have to * clear the hashtable after writing the log entry. */ ServerStats::Reset(); return; } } else { const string &password = m_serverInfo->getPassword(); if (!password.empty() && password != transport->getParam("auth")) { transport->sendString("Unauthorized", 401); transport->onSendEnd(); HttpRequestHandler::GetAccessLog().log(transport, nullptr); /* * HPHP logs may need to access data in ServerStats, so we have to * clear the hashtable after writing the log entry. */ ServerStats::Reset(); return; } } // return encoding type ReturnEncodeType returnEncodeType = m_returnEncodeType; if (transport->getParam("return") == "serialize") { returnEncodeType = ReturnEncodeType::Serialize; } // resolve virtual host const VirtualHost *vhost = HttpProtocol::GetVirtualHost(transport); assert(vhost); if (vhost->disabled()) { transport->sendString("Virtual host disabled.", 404); transport->onSendEnd(); HttpRequestHandler::GetAccessLog().log(transport, vhost); return; } ThreadInfo::s_threadInfo->m_reqInjectionData. setTimeout(vhost->getRequestTimeoutSeconds(getDefaultTimeout())); // resolve source root string host = transport->getHeader("Host"); SourceRootInfo sourceRootInfo(host.c_str()); // set thread type switch (m_serverInfo->getType()) { case SatelliteServer::Type::KindOfRPCServer: transport->setThreadType(Transport::ThreadType::RpcThread); break; case SatelliteServer::Type::KindOfXboxServer: transport->setThreadType(Transport::ThreadType::XboxThread); break; default: break; } // record request for debugging purpose std::string tmpfile = HttpProtocol::RecordRequest(transport); bool ret = executePHPFunction(transport, sourceRootInfo, returnEncodeType); HttpRequestHandler::GetAccessLog().log(transport, vhost); /* * HPHP logs may need to access data in ServerStats, so we have to * clear the hashtable after writing the log entry. */ ServerStats::Reset(); HttpProtocol::ClearRecord(ret, tmpfile); }
RPCRequestHandler::~RPCRequestHandler() { cleanupState(); }
void AMDetector::setCleanupRequired() { if(!acceptableChangeCleanupState(CleanupRequired)) AMErrorMon::debug(this, AMDETECTOR_NOTIFIED_CLEANUPREQUIRED_UNEXPECTEDLY, QString("An unexpected transition occured to Cleanup Required. Detector name: %1. Current state: %2.").arg(name()).arg(cleanupStateDescription(cleanupState())) ); setCleanupState(CleanupRequired); }