Code Search for Developers
 
 
  

imap_debug.h from AlphaMail at Krugle


Show imap_debug.h syntax highlighted

#ifndef IMAP_DEBUG_H
#define IMAP_DEBUG_H

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <boost/thread/mutex.hpp>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

#ifndef LOGFILE
#define LOGFILE "/var/log/imap_webcache.log"
#endif

extern boost::recursive_mutex stdio_mutex;

class Logger
{
   public:
      static Logger *getLogger();
      static void deleteLogger() { delete logger; logger = NULL; }
      void log_info(const char *message, const char *file, int line);
      void log_debug(const char *message, const char *file, int line);
      void log_warning(const char *message, const char *file, int line);
      void log_error(const char *message, const char *file, int line);
      void log_assertion(const char *message, const char *file, int line);
   private:
      static Logger *logger;
      std::ofstream out;
      Logger();
};

namespace IMAP {
   extern bool debug_logging;
   extern bool info_logging;
};

inline void imap_assert(bool condition, const char *message, const char *filename = "unspecified file", int line = 0)
{
   if(condition) return;

   boost::recursive_mutex::scoped_lock lk(stdio_mutex);

   Logger::getLogger()->log_assertion(message, filename, line);
   abort();
}
inline void imap_assert(bool condition, const std::string &message, const char *filename = "unspecified file", int line = 0) {
   imap_assert(condition, message.c_str(), filename, line);
}

inline void log_info(const char *message, const char *filename = "unspecified file", int line = 0)
{
   if(!IMAP::info_logging) return;
   Logger::getLogger()->log_info(message, filename, line);
}
inline void log_info(const std::string &message, const char *filename = "unspecified file", int line = 0) {
   log_info(message.c_str(), filename, line);
}

inline void log_debug(const char *message, const char *filename = "unspecified file", int line = 0)
{
   if(!IMAP::debug_logging) return;
   Logger::getLogger()->log_debug(message, filename, line);
}
inline void log_debug(const std::string &message, const char *filename = "unspecified file", int line = 0) {
   log_debug(message.c_str(), filename, line);
}

inline void log_warn(const char *message, const char *filename = "unspecified file", int line = 0)
{
   Logger::getLogger()->log_warning(message, filename, line);
}
inline void log_warn(const std::string &message, const char *filename = "unspecified file", int line = 0) {
   log_warn(message.c_str(), filename, line);
}

inline void log_error(const char *message, const char *filename = "unspecified file", int line = 0)
{
   Logger::getLogger()->log_error(message, filename, line);
}
inline void log_error(const std::string &message, const char *filename = "unspecified file", int line = 0) {
   log_error(message.c_str(), filename, line);
}

#define WARN(msg) log_warn(msg, __FILE__, __LINE__)
#define ERROR(msg) log_error(msg, __FILE__, __LINE__)
#define INFO(msg) log_info(msg, __FILE__, __LINE__)
#define DEBUG(msg) log_debug(msg, __FILE__, __LINE__)
#define ASSERT(cond, msg) imap_assert(cond, msg, __FILE__, __LINE__)

#endif




See more files for this project here

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  CacheManager.h
  IMAPFolder.h
  IMAPParser.h
  IMAPRegexParser.h
  IMAPTypes.h
  MessageAttributes.h
  RequestProcessor.h
  Runnable.h
  imap_debug.h
  middleware.h