das news
oldstatus
2005-08-11, Nathan Walp
* @file log.h Logging API * Gaim is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA /******************************************************** * DATA STRUCTURES ************************************** ********************************************************/ typedef struct _GaimLog GaimLog; typedef struct _GaimLogLogger GaimLogLogger; GAIM_LOG_READ_NO_NEWLINE = 1, #include "conversation.h" * This struct gets filled out and is included in the GaimLog. It contains everything * needed to write and read from logs. char *name; /**< The logger's name */ char *id; /**< an identifier to refer to this logger */ /** This gets called when the log is first created. I don't think this is actually needed. */ void(*create)(GaimLog *log); /** This is used to write to the log file */ void(*write)(GaimLog *log, /** Called when the log is destroyed */ void (*finalize)(GaimLog *log); /** This function returns a sorted GList of available GaimLogs */ GList *(*list)(GaimLogType type, const char *name, GaimAccount *account); /** Given one of the logs returned by the logger's list function, * this returns the contents of the log in GtkIMHtml markup */ char *(*read)(GaimLog *log, GaimLogReadFlags *flags); /** Given one of the logs returned by the logger's list function, * this returns the size of the log in bytes */ int (*size)(GaimLog *log); /** Returns the total size of all the logs. If this is undefined a default * implementation is used */ int (*total_size)(GaimLogType type, const char *name, GaimAccount *account); /** This function returns a sorted GList of available system GaimLogs */ GList *(*list_syslog)(GaimAccount *account); * A log. Not the wooden type. GaimLogType type; /**< The type of log this is */ char *name; /**< The name of this log */ GaimAccount *account; /**< The account this log is taking time_t time; /**< The time this conversation GaimLogLogger *logger; /**< The logging mechanism this log void *logger_data; /**< Data used by the log logger */ /*************************************** ** LOG FUNCTIONS ********************** ***************************************/ * @param type The type of log this is. * @param name The name of this conversation (Screenname, chat name, * @param account The account the conversation is occurring on * @param time The time this conversation started GaimLog *gaim_log_new(GaimLogType type, const char *name, GaimAccount *account, time_t time); * @param log The log to destroy void gaim_log_free(GaimLog *log); * Writes to a log file. Assumes you have already checked if logging is appropriate. * @param log The log to write to * @param type The type of message being logged * @param from Whom this message is coming from, or NULL for * @param time A timestamp in UNIX time * @param message The message to log void gaim_log_write(GaimLog *log, * @param log The log to read from * @param flags The returned logging flags. * @return The contents of this log in Gaim Markup. char *gaim_log_read(GaimLog *log, GaimLogReadFlags *flags); * Returns a list of all available logs * @param type The type of the log * @param name The name of the log * @param account The account * @return A sorted list of GaimLogs GList *gaim_log_get_logs(GaimLogType type, const char *name, GaimAccount *account); * Returns a list of all available system logs * @param account The account * @return A sorted list of GaimLogs GList *gaim_log_get_system_logs(GaimAccount *account); * Returns the size of a log * @return The size of the log, in bytes int gaim_log_get_size(GaimLog *log); * Returns the size, in bytes, of all available logs in this conversation * @param type The type of the log * @param name The name of the log * @param account The account * @return The size in bytes int gaim_log_get_total_size(GaimLogType type, const char *name, GaimAccount *account); * Implements GCompareFunc * @param z Another GaimLog * @return A value as specified by GCompareFunc gint gaim_log_compare(gconstpointer y, gconstpointer z); /****************************************** ** LOGGER FUNCTIONS ********************** ******************************************/ * @param create The logger's new function. * @param write The logger's write function. * @param finalize The logger's finalize function. * @param list The logger's list function. * @param read The logger's read function. * @param size The logger's size function. GaimLogLogger *gaim_log_logger_new( void(*create)(GaimLog *), void(*write)(GaimLog *, GaimMessageFlags, const char *, time_t, const char *), void(*finalize)(GaimLog *), GList*(*list)(GaimLogType type, const char*, GaimAccount*), char*(*read)(GaimLog*, GaimLogReadFlags*), * @param logger The logger to free void gaim_log_logger_free(GaimLogLogger *logger); * @param logger The new logger to add void gaim_log_logger_add (GaimLogLogger *logger); * @param logger The logger to remove void gaim_log_logger_remove (GaimLogLogger *logger); * Sets the current logger * @param logger The logger to set void gaim_log_logger_set (GaimLogLogger *logger); * Returns the current logger * @return logger The current logger GaimLogLogger *gaim_log_logger_get (void); * Returns a GList containing the IDs and Names of the registered log * @return The list of IDs and names. GList *gaim_log_logger_get_options(void); void gaim_log_init(void); #endif /* _GAIM_LOG_H_ */