示例#1
0
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);
}
示例#2
0
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);
	}
}
示例#6
0
/*!
  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;
}