#ifndef __GSK_CONTROL_SERVER_H__
#define __GSK_CONTROL_SERVER_H__
#include "../gskstream.h"
#include "../gsksocketaddress.h"
G_BEGIN_DECLS
typedef struct _GskControlServer GskControlServer;
GskControlServer *
gsk_control_server_new (void);
typedef gboolean (*GskControlServerCommandFunc) (char **argv,
GskStream *input, /* for POST data */
GskStream **output, /* content: must be plain text */
gpointer data,
GError **error);
void
gsk_control_server_add_command (GskControlServer *server,
const char *command_name,
GskControlServerCommandFunc func,
gpointer data);
void
gsk_control_server_set_default_command
(GskControlServer *server,
GskControlServerCommandFunc func,
gpointer data);
gboolean
gsk_control_server_set_file (GskControlServer *server,
const char *path,
const guint8 *content,
guint content_length,
GError **error);
typedef void (*GskControlServerVFileContentsFunc) (gpointer vfile_data,
guint *len_out,
guint8 **contents_out,
GDestroyNotify *done_with_contents_out,
gpointer *done_with_contents_data_out);
gboolean
gsk_control_server_set_vfile (GskControlServer *server,
const char *path,
GskControlServerVFileContentsFunc vfile_func,
gpointer vfile_data,
GDestroyNotify vfile_data_destroy,
GError **error);
typedef struct
{
const char *domain;
GLogLevelFlags levels;
} GskControlServerLogDomain;
void
gsk_control_server_set_logfile_v (GskControlServer *server,
const char *path,
guint ring_buffer_size,
guint n_log_domains,
const GskControlServerLogDomain *domains);
void
gsk_control_server_set_logfile (GskControlServer *server,
const char *path,
guint ring_buffer_size,
const char *first_log_domain,
GLogLevelFlags first_log_level_flags,
const char *next_log_domain,
...);
gboolean
gsk_control_server_delete_file (GskControlServer *server,
const char *path,
GError **error);
gboolean
gsk_control_server_delete_directory (GskControlServer *server,
const char *path,
GError **error);
typedef enum
{
GSK_CONTROL_SERVER_FILE_RAW,
GSK_CONTROL_SERVER_FILE_VIRTUAL,
GSK_CONTROL_SERVER_FILE_DIR,
GSK_CONTROL_SERVER_FILE_NOT_EXIST
} GskControlServerFileStat;
GskControlServerFileStat
gsk_control_server_stat (GskControlServer *server,
const char *path);
gboolean
gsk_control_server_peek_raw_file (GskControlServer *server,
const char *path,
const guint8 **content_out,
guint *content_length_out);
gboolean
gsk_control_server_get_vfile_contents
(GskControlServer *server,
const char *path,
guint8 **content_out,
guint *content_length_out,
GDestroyNotify *release_func_out,
gpointer *release_func_data_out);
gboolean
gsk_control_server_listen (GskControlServer *server,
GskSocketAddress *address,
GError **error);
G_END_DECLS
#endif
syntax highlighted by Code2HTML, v. 0.9.1