void Logger::wthrow(Priority prio, const char *fmt, ...) { char buffer[0x1000]; va_list ap; va_start(ap, fmt); if (m_output == SWSS_SYSLOG) { vsyslog(prio, fmt, ap); } else { std::stringstream ss; ss << std::setw(6) << std::right << priorityToString(prio); ss << fmt << std::endl; std::lock_guard<std::mutex> lock(m_mutex); if (m_output == SWSS_STDOUT) { vprintf(ss.str().c_str(), ap); } else { vfprintf(stderr, ss.str().c_str(), ap); } } va_end(ap); va_start(ap, fmt); vsnprintf(buffer, 0x1000, fmt, ap); va_end(ap); throw std::runtime_error(buffer); }
void Logger::write(Priority prio, const char *fmt, ...) { if (prio > m_minPrio) return; // TODO // + add thread id using std::thread::id this_id = std::this_thread::get_id(); // + add timestmap with millisecond resolution va_list ap; va_start(ap, fmt); if (m_output == SWSS_SYSLOG) { vsyslog(prio, fmt, ap); } else { std::stringstream ss; ss << std::setw(6) << std::right << priorityToString(prio); ss << fmt << std::endl; std::lock_guard<std::mutex> lock(m_mutex); if (m_output == SWSS_STDOUT) { vprintf(ss.str().c_str(), ap); } else { vfprintf(stderr, ss.str().c_str(), ap); } } va_end(ap); }
void LLPluginClassMedia::setPriority(EPriority priority) { if(mPriority != priority) { mPriority = priority; LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "set_priority"); std::string priority_string = priorityToString(priority); switch(priority) { case PRIORITY_UNLOADED: mSleepTime = 1.0f; break; case PRIORITY_STOPPED: mSleepTime = 1.0f; break; case PRIORITY_HIDDEN: mSleepTime = 1.0f; break; case PRIORITY_SLIDESHOW: mSleepTime = 1.0f; break; case PRIORITY_LOW: mSleepTime = 1.0f / 25.0f; break; case PRIORITY_NORMAL: mSleepTime = 1.0f / 50.0f; break; case PRIORITY_HIGH: mSleepTime = 1.0f / 100.0f; break; } message.setValue("priority", priority_string); sendMessage(message); if(mPlugin) { mPlugin->setSleepTime(mSleepTime); } LL_DEBUGS("PluginPriority") << this << ": setting priority to " << priority_string << LL_ENDL; // This may affect the calculated size, so recalculate it here. setSizeInternal(); } }
void LLPluginClassBasic::setPriority(EPriority priority) { if (mPriority != priority) { mPriority = priority; LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_BASIC, "set_priority"); std::string priority_string = priorityToString(priority); switch(priority) { case PRIORITY_SLEEP: mSleepTime = 1.0f; break; case PRIORITY_LOW: mSleepTime = 1.0f / 25.0f; break; case PRIORITY_NORMAL: mSleepTime = 1.0f / 50.0f; break; case PRIORITY_HIGH: mSleepTime = 1.0f / 100.0f; break; } message.setValue("priority", priority_string); sendMessage(message); if(mPlugin) { mPlugin->setSleepTime(mSleepTime); } LL_DEBUGS("PluginPriority") << this << ": setting priority to " << priority_string << LL_ENDL; priorityChanged(mPriority); } }
void TankFile::readAndValidateHeader() { // Read in the header: fileHeader.productId = readFourCC(); fileHeader.tankId = readFourCC(); fileHeader.headerVersion = readU32(); fileHeader.dirsetOffset = readU32(); fileHeader.filesetOffset = readU32(); fileHeader.indexSize = readU32(); fileHeader.dataOffset = readU32(); fileHeader.productVersion = readProductVersion(); fileHeader.minimumVersion = readProductVersion(); fileHeader.priority = static_cast<TankFile::Priority>(readU32()); fileHeader.flags = readU32(); fileHeader.creatorId = readFourCC(); fileHeader.guid = readGuid(); fileHeader.indexCrc32 = readU32(); fileHeader.dataCrc32 = readU32(); fileHeader.utcBuildTime = readSystemTime(); readBytes(fileHeader.copyrightText, sizeof(fileHeader.copyrightText)); readBytes(fileHeader.buildText, sizeof(fileHeader.buildText)); readBytes(fileHeader.titleText, sizeof(fileHeader.titleText)); readBytes(fileHeader.authorText, sizeof(fileHeader.authorText)); fileHeader.descriptionText = readWNString(); // Optional debug printing: #if SIEGE_TANK_DEBUG SiegeLog("====== TANK HEADER FOR FILE: \"" << fileName << "\" ======"); SiegeLog("productId.........: " << fileHeader.productId); SiegeLog("tankId............: " << fileHeader.tankId); SiegeLog("headerVersion.....: " << versionWordToStr(fileHeader.headerVersion)); SiegeLog("dirsetOffset......: " << toHexa(fileHeader.dirsetOffset) << " (" << utils::formatMemoryUnit(fileHeader.dirsetOffset) << ")"); SiegeLog("filesetOffset.....: " << toHexa(fileHeader.filesetOffset) << " (" << utils::formatMemoryUnit(fileHeader.filesetOffset) << ")"); SiegeLog("indexSize.........: " << utils::formatMemoryUnit(fileHeader.indexSize)); SiegeLog("dataOffset........: " << toHexa(fileHeader.dataOffset) << " (" << utils::formatMemoryUnit(fileHeader.dataOffset) << ")"); SiegeLog("productVersion....: " << fileHeader.productVersion); SiegeLog("minimumVersion....: " << fileHeader.minimumVersion); SiegeLog("priority..........: " << priorityToString(fileHeader.priority)); SiegeLog("flags.............: " << fileHeader.flags); SiegeLog("creatorId.........: " << fileHeader.creatorId); SiegeLog("Guid..............: " << fileHeader.guid); SiegeLog("indexCrc32........: " << toHexa(fileHeader.indexCrc32)); SiegeLog("dataCrc32.........: " << toHexa(fileHeader.dataCrc32)); SiegeLog("utcBuildTime......: " << fileHeader.utcBuildTime); SiegeLog("copyrightText.....: " << toString(fileHeader.copyrightText)); SiegeLog("buildText.........: " << toString(fileHeader.buildText)); SiegeLog("titleText.........: " << toString(fileHeader.titleText)); SiegeLog("authorText........: " << toString(fileHeader.authorText)); SiegeLog("descriptionText...: " << toString(fileHeader.descriptionText)); SiegeLog("====== END TANK HEADER ======"); #endif // SIEGE_TANK_DEBUG // Fatal errors: if (fileHeader.productId != TankFile::ProductId) { SiegeThrow(TankFile::Error, "\"" << fileName << "\": Header product id doesn't match the expected value!"); } if (fileHeader.tankId != TankFile::TankId) { SiegeThrow(TankFile::Error, "\"" << fileName << "\": Header Tank id doesn't match the expected value!"); } // Warnings: if (fileHeader.creatorId != TankFile::CreatorIdGPG && fileHeader.creatorId != TankFile::CreatorIdUser) { SiegeWarn("Tank creator id is unknown: " << fileHeader.creatorId); } if (fileHeader.headerVersion != Header::ExpectedVersion) { SiegeWarn("Unknown Tank header version: " << fileHeader.headerVersion); } }
/*! Converts the log \a log to its textual representation and returns a QByteArray containing the data. */ QByteArray TLogger::logToByteArray(const TLog &log, const QByteArray &layout, const QByteArray &dateTimeFormat, QTextCodec *codec) { QByteArray message; message.reserve(layout.length() + log.message.length() + 100); int pos = 0; while (pos < layout.length()) { char c = layout.at(pos++); if (c != '%') { message.append(c); continue; } QByteArray dig; for (;;) { if (pos >= layout.length()) { message.append('%').append(dig); break; } c = layout.at(pos++); if (c >= '0' && c <= '9') { dig += c; continue; } if (c == 'd') { // %d : timestamp if (!dateTimeFormat.isEmpty()) { message.append(log.timestamp.toString(dateTimeFormat).toLatin1()); } else { message.append(log.timestamp.toString(Qt::ISODate).toLatin1()); } } else if (c == 'p' || c == 'P') { // %p or %P : priority QByteArray pri = priorityToString((TLogger::Priority)log.priority); if (c == 'p') { pri = pri.toLower(); } if (!pri.isEmpty()) { message.append(pri); int d = dig.toInt() - pri.length(); if (d > 0) { message.append(QByteArray(d, ' ')); } } } else if (c == 't' || c == 'T') { // %t or %T : thread ID (dec or hex) QChar fillChar = (dig.length() > 0 && dig[0] == '0') ? QLatin1Char('0') : QLatin1Char(' '); message.append(QString("%1").arg((qulonglong)log.threadId, dig.toInt(), ((c == 't') ? 10 : 16), fillChar).toLatin1()); } else if (c == 'i' || c == 'I') { // %i or %I : PID (dec or hex) QChar fillChar = (dig.length() > 0 && dig[0] == '0') ? QLatin1Char('0') : QLatin1Char(' '); message.append(QString("%1").arg(log.pid, dig.toInt(), ((c == 'i') ? 10 : 16), fillChar).toLatin1()); } else if (c == 'n') { // %n : newline message.append('\n'); } else if (c == 'm') { // %m : message message.append(log.message); } else if (c == '%') { message.append('%').append(dig); dig.clear(); continue; } else { message.append('%').append(dig).append(c); } break; } } return (codec) ? codec->fromUnicode(QString::fromLocal8Bit(message.data(), message.length())) : message; }