00001
00025 #ifndef _GAIM_LOG_H_
00026 #define _GAIM_LOG_H_
00027
00028 #include <stdio.h>
00029
00030
00031
00032
00033
00034
00035 typedef struct _GaimLog GaimLog;
00036 typedef struct _GaimLogLogger GaimLogLogger;
00037
00038 typedef enum {
00039 GAIM_LOG_IM,
00040 GAIM_LOG_CHAT,
00041 GAIM_LOG_SYSTEM,
00042 } GaimLogType;
00043
00044 typedef enum {
00045 GAIM_LOG_READ_NO_NEWLINE = 1,
00046 } GaimLogReadFlags;
00047
00048 #include "account.h"
00049 #include "conversation.h"
00050
00058 struct _GaimLogLogger {
00059 char *name;
00060 char *id;
00064 void(*create)(GaimLog *log);
00065
00067 void(*write)(GaimLog *log,
00068 GaimMessageFlags type,
00069 const char *from,
00070 time_t time,
00071 const char *message);
00072
00074 void (*finalize)(GaimLog *log);
00075
00077 GList *(*list)(GaimLogType type, const char *name, GaimAccount *account);
00078
00081 char *(*read)(GaimLog *log, GaimLogReadFlags *flags);
00082
00085 int (*size)(GaimLog *log);
00086
00089 int (*total_size)(GaimLogType type, const char *name, GaimAccount *account);
00090
00092 GList *(*list_syslog)(GaimAccount *account);
00093 };
00094
00098 struct _GaimLog {
00099 GaimLogType type;
00100 char *name;
00101 GaimAccount *account;
00103 time_t time;
00105 GaimLogLogger *logger;
00107 void *logger_data;
00108 };
00109
00110
00111 #ifdef __cplusplus
00112 extern "C" {
00113 #endif
00114
00115
00116
00117
00118
00129 GaimLog *gaim_log_new(GaimLogType type, const char *name,
00130 GaimAccount *account, time_t time);
00131
00137 void gaim_log_free(GaimLog *log);
00138
00149 void gaim_log_write(GaimLog *log,
00150 GaimMessageFlags type,
00151 const char *from,
00152 time_t time,
00153 const char *message);
00154
00163 char *gaim_log_read(GaimLog *log, GaimLogReadFlags *flags);
00164
00173 GList *gaim_log_get_logs(GaimLogType type, const char *name, GaimAccount *account);
00174
00181 GList *gaim_log_get_system_logs(GaimAccount *account);
00182
00189 int gaim_log_get_size(GaimLog *log);
00190
00199 int gaim_log_get_total_size(GaimLogType type, const char *name, GaimAccount *account);
00200
00208 gint gaim_log_compare(gconstpointer y, gconstpointer z);
00209
00210
00211
00212
00213
00226 GaimLogLogger *gaim_log_logger_new(
00227 void(*create)(GaimLog *),
00228 void(*write)(GaimLog *, GaimMessageFlags, const char *, time_t, const char *),
00229 void(*finalize)(GaimLog *),
00230 GList*(*list)(GaimLogType type, const char*, GaimAccount*),
00231 char*(*read)(GaimLog*, GaimLogReadFlags*),
00232 int(*size)(GaimLog*));
00238 void gaim_log_logger_free(GaimLogLogger *logger);
00239
00245 void gaim_log_logger_add (GaimLogLogger *logger);
00246
00253 void gaim_log_logger_remove (GaimLogLogger *logger);
00254
00261 void gaim_log_logger_set (GaimLogLogger *logger);
00262
00269 GaimLogLogger *gaim_log_logger_get (void);
00270
00277 GList *gaim_log_logger_get_options(void);
00278
00279 void gaim_log_init(void);
00283 #ifdef __cplusplus
00284 }
00285 #endif
00286
00287 #endif