about summary refs log tree commit diff stats
path: root/lua/sandborb/src/sandbird.h
diff options
context:
space:
mode:
Diffstat (limited to 'lua/sandborb/src/sandbird.h')
-rw-r--r--lua/sandborb/src/sandbird.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/lua/sandborb/src/sandbird.h b/lua/sandborb/src/sandbird.h
new file mode 100644
index 0000000..e1c0e7c
--- /dev/null
+++ b/lua/sandborb/src/sandbird.h
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2016 rxi
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the MIT license. See LICENSE for details.
+ */
+
+
+#ifndef SANDBIRD_H
+#define SANDBIRD_H
+
+#include <stddef.h>
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SB_VERSION "0.1.3"
+
+typedef struct sb_Server  sb_Server;
+typedef struct sb_Stream  sb_Stream;
+typedef struct sb_Event   sb_Event;
+typedef struct sb_Options sb_Options;
+typedef int (*sb_Handler)(sb_Event*);
+
+struct sb_Event {
+  int type;
+  void *udata;
+  sb_Server *server;
+  sb_Stream *stream;
+  const char *address;
+  const char *method;
+  const char *path;
+};
+
+struct sb_Options {
+  sb_Handler handler;
+  void *udata;
+  const char *host;
+  const char *port;
+  const char *timeout;
+  const char *max_lifetime;
+  const char *max_request_size;
+};
+
+enum {
+  SB_ESUCCESS     =  0,
+  SB_EFAILURE     = -1,
+  SB_EOUTOFMEM    = -2,
+  SB_ETRUNCATED   = -3,
+  SB_EBADSTATE    = -4,
+  SB_EBADRESULT   = -5,
+  SB_ECANTOPEN    = -6,
+  SB_ENOTFOUND    = -7,
+  SB_EFDTOOBIG    = -8
+};
+
+enum {
+  SB_EV_CONNECT,
+  SB_EV_CLOSE,
+  SB_EV_REQUEST
+};
+
+enum {
+  SB_RES_OK,
+  SB_RES_CLOSE
+};
+
+const char *sb_error_str(int code);
+sb_Server *sb_new_server(const sb_Options *opt);
+void sb_close_server(sb_Server *srv);
+int sb_poll_server(sb_Server *srv, int timeout);
+int sb_send_status(sb_Stream *st, int code, const char *msg);
+int sb_send_header(sb_Stream *st, const char *field, const char *val);
+int sb_send_file(sb_Stream *st, const char *filename);
+int sb_write(sb_Stream *st, const void *data, size_t len);
+int sb_vwritef(sb_Stream *st, const char *fmt, va_list args);
+int sb_writef(sb_Stream *st, const char *fmt, ...);
+int sb_get_header(sb_Stream *st, const char *field, char *dst, size_t len);
+int sb_get_var(sb_Stream *st, const char *name, char *dst, size_t len);
+int sb_get_cookie(sb_Stream *st, const char *name, char *dst, size_t len);
+const void *sb_get_multipart(sb_Stream *st, const char *name, size_t *len);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif
+
+