00001
00026 #ifndef _GAIM_LOG_H_
00027 #define _GAIM_LOG_H_
00028
00029 #include <stdio.h>
00030
00031
00032
00033
00034
00035
00036 typedef struct _GaimLog GaimLog;
00037 typedef struct _GaimLogLogger GaimLogLogger;
00038
00039 typedef enum {
00040 GAIM_LOG_IM,
00041 GAIM_LOG_CHAT,
00042 GAIM_LOG_SYSTEM,
00043 } GaimLogType;
00044
00045 typedef enum {
00046 GAIM_LOG_READ_NO_NEWLINE = 1,
00047 } GaimLogReadFlags;
00048
00049 #include "account.h"
00050 #include "conversation.h"
00051
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)(const char *name, GaimAccount *account);
00078
00081 char *(*read)(GaimLog *log, GaimLogReadFlags *flags);
00082
00085 int (*size)(GaimLog *log);
00086
00089 int (*total_size)(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
00172 GList *gaim_log_get_logs(const char *name, GaimAccount *account);
00173
00180 GList *gaim_log_get_system_logs(GaimAccount *account);
00181
00188 int gaim_log_get_size(GaimLog *log);
00189
00197 int gaim_log_get_total_size(const char *name, GaimAccount *account);
00198
00206 gint gaim_log_compare(gconstpointer y, gconstpointer z);
00207
00208
00209
00210
00211
00224 GaimLogLogger *gaim_log_logger_new(void(*create)(GaimLog *),
00225 void(*write)(GaimLog *, GaimMessageFlags,
00226 const char *, time_t, const char *),
00227 void(*finalize)(GaimLog *),
00228 GList*(*list)(const char*, GaimAccount*),
00229 char*(*read)(GaimLog*, GaimLogReadFlags*),
00230 int(*size)(GaimLog*));
00236 void gaim_log_logger_free(GaimLogLogger *logger);
00237
00243 void gaim_log_logger_add (GaimLogLogger *logger);
00244
00251 void gaim_log_logger_remove (GaimLogLogger *logger);
00252
00259 void gaim_log_logger_set (GaimLogLogger *logger);
00260
00267 GaimLogLogger *gaim_log_logger_get (void);
00268
00275 GList *gaim_log_logger_get_options(void);
00276
00277 void gaim_log_init(void);
00281 #ifdef __cplusplus
00282 }
00283 #endif
00284
00285 #endif
00286