blob: 1882f040e3dd16d82148e67a671e6657c4b6246e [file] [log] [blame]
/**
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Author: jmarantz@google.com (Joshua Marantz)
#include "net/instaweb/util/public/message_handler.h"
#include "base/logging.h"
namespace net_instaweb {
MessageHandler::MessageHandler() : min_message_type_(kInfo) {
}
MessageHandler::~MessageHandler() {
}
const char* MessageHandler::MessageTypeToString(const MessageType type) const {
const char* type_string = NULL;
// Don't include a 'default:' clause so that the compiler can tell us when
// we are missing an enum value. Intead use a null check for 'type_string' to
// indicate a data corruption that avoids hitting any of the cases.
switch (type) {
case kInfo:
type_string = "Info";
break;
case kWarning:
type_string = "Warning";
break;
case kError:
type_string = "Error";
break;
case kFatal:
type_string = "Fatal";
break;
}
CHECK(type_string != NULL) << "INVALID MessageType!";
return type_string;
}
void MessageHandler::Message(MessageType type, const char* msg, ...) {
va_list args;
va_start(args, msg);
MessageV(type, msg, args);
va_end(args);
}
void MessageHandler::MessageV(MessageType type, const char* msg, va_list args) {
if (type >= min_message_type_) {
MessageVImpl(type, msg, args);
}
}
void MessageHandler::FileMessage(MessageType type, const char* file, int line,
const char* msg, ...) {
va_list args;
va_start(args, msg);
FileMessageV(type, file, line, msg, args);
va_end(args);
}
void MessageHandler::FileMessageV(MessageType type, const char* filename,
int line, const char* msg, va_list args) {
if (type >= min_message_type_) {
FileMessageVImpl(type, filename, line, msg, args);
}
}
void MessageHandler::Check(bool condition, const char* msg, ...) {
va_list args;
va_start(args, msg);
CheckV(condition, msg, args);
va_end(args);
}
void MessageHandler::CheckV(bool condition, const char* msg, va_list args) {
if (!condition) {
MessageV(kFatal, msg, args);
}
}
void MessageHandler::Info(const char* file, int line, const char* msg, ...) {
va_list args;
va_start(args, msg);
InfoV(file, line, msg, args);
va_end(args);
}
void MessageHandler::Warning(const char* file, int line, const char* msg, ...) {
va_list args;
va_start(args, msg);
WarningV(file, line, msg, args);
va_end(args);
}
void MessageHandler::Error(const char* file, int line, const char* msg, ...) {
va_list args;
va_start(args, msg);
ErrorV(file, line, msg, args);
va_end(args);
}
void MessageHandler::FatalError(
const char* file, int line, const char* msg, ...) {
va_list args;
va_start(args, msg);
FatalErrorV(file, line, msg, args);
va_end(args);
}
} // namespace net_instaweb