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; }
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; }
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; }
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; }
bool MessageHeader::isKeepAlive() const { const char* ch = get("Connection"); if (ch == 0) return versionMajor() == 1 && versionMinor() >= 1; else return compareIgnoreCase(ch, "keep-alive") == 0; }
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; } }
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); } }