예제 #1
0
파일: Message.cpp 프로젝트: 3Nigma/frayon
void MessageHeader::remove(const char* key)
{
    if( ! *key)
        throw std::invalid_argument("header key is NULL");

    char* p = eptr();

    ConstIterator it = begin();
    while (it != end())
    {
        if (compareIgnoreCase(key, it->name()) == 0)
        {
            std::size_t slen = it->value() - it->name() + std::strlen(it->value()) + 1;

            std::memcpy(
                const_cast<char*>(it->name()),
                it->name() + slen,
                p - it->name() + slen);

            p -= slen;

            it.fixup();
        }
        else
            ++it;
    }

    _endOffset = p - _rawdata;
}
예제 #2
0
파일: Message.cpp 프로젝트: 3Nigma/frayon
bool MessageHeader::isSet(const char* key, const char* value) const
{
    const char* h = get(key);
    if (h == 0)
        return false;
    return compareIgnoreCase(h, value) == 0;
}
예제 #3
0
파일: mime.cpp 프로젝트: maekitalo/cxxtools
std::string MimeHeader::getHeader(const std::string& key, const std::string& def) const
{
    for (HeadersType::const_iterator it = headers.begin(); it != headers.end(); ++it)
        if (compareIgnoreCase(key, it->first) == 0)
            return it->second;
    return def;
}
예제 #4
0
파일: Message.cpp 프로젝트: 3Nigma/frayon
const char* MessageHeader::get(const char* key) const
{
    for (ConstIterator it = begin(); it != end(); ++it)
    {
        if (compareIgnoreCase(key, it->name()) == 0)
            return it->value();
    }

    return 0;
}
예제 #5
0
파일: Message.cpp 프로젝트: 3Nigma/frayon
bool MessageHeader::isKeepAlive() const
{
    const char* ch = get("Connection");

    if (ch == 0)
        return versionMajor() == 1
            && versionMinor() >= 1;
    else
        return compareIgnoreCase(ch, "keep-alive") == 0;
}
예제 #6
0
파일: mime.cpp 프로젝트: maekitalo/cxxtools
void MimeHeader::unsetHeader(const std::string& key)
{
    for (HeadersType::size_type n = 0; n < headers.size(); )
    {
        if (compareIgnoreCase(key, headers[n].first) == 0)
            headers.erase(headers.begin() + n);
        else
            ++n;
    }
}
예제 #7
0
파일: log.cpp 프로젝트: acklinr/cxxtools
    Logger::log_flag_type str2logflag(const char* level)
    {
      // Converts a log level string (FATAL, ERROR, ...) to log_level_type.
      // When the log level is not identified, 0 is returned.

      if (compareIgnoreCase(level, "FATAL") == 0)
        return Logger::LOG_FATAL;

      if (compareIgnoreCase(level, "ERROR") == 0)
        return Logger::LOG_ERROR;

      if (compareIgnoreCase(level, "WARN") == 0)
        return Logger::LOG_WARN;

      if (compareIgnoreCase(level, "INFO") == 0)
        return Logger::LOG_INFO;

      if (compareIgnoreCase(level, "DEBUG") == 0)
        return Logger::LOG_DEBUG;

      if (compareIgnoreCase(level, "FINE") == 0)
        return Logger::LOG_FINE;

      if (compareIgnoreCase(level, "FINER") == 0)
        return Logger::LOG_FINER;

      if (compareIgnoreCase(level, "FINEST") == 0)
        return Logger::LOG_FINEST;

      switch (level[0])
      {
        case 'f': case 'F': return Logger::LOG_FATAL;
        case 'e': case 'E': return Logger::LOG_ERROR;
        case 'w': case 'W': return Logger::LOG_WARN;
        case 'i': case 'I': return Logger::LOG_INFO;
        case 'd': case 'D': return Logger::LOG_DEBUG;
        case 't': case 'T': return Logger::LOG_TRACE;
        default:            return static_cast<Logger::log_flag_type>(0);
      }
    }