[CCode (cheader_filename = "microhttpd.h")] namespace MHD { [CCode (cname = "enum MHD_ValueKind", cprefix = "MHD_")] public enum ValueKind { RESPONSE_HEADER_KIND, HEADER_KIND, COOKIE_KIND, POSTDATA_KIND, GET_ARGUMENT_KIND, FOOTER_KIND } [CCode (cname = "enum MHD_RequestTerminationCode", cprefix = "MHD_REQUEST_TERMINATED_")] public enum RequestTerminationCode { COMPLETED_OK, WITH_ERROR, TIMEOUT_REACHED, DAEMON_SHUTDOWN, READ_ERROR, CLIENT_ABORT } [CCode (cname = "enum MHD_ResponseMemoryMode", cprefix = "MHD_")] public enum ResponseMemoryMode { RESPMEM_PERSISTENT, RESPMEM_MUST_FREE, RESPMEM_MUST_COPY } [CCode (cname = "MHD_USE_SELECT_INTERNALLY")] public const uint USE_SELECT_INTERNALLY; [CCode (cname = "MHD_USE_THREAD_PER_CONNECTION")] public const uint USE_THREAD_PER_CONNECTION; [CCode (cname = "MHD_USE_DEBUG")] public const uint USE_DEBUG; [CCode (cname = "MHD_ALLOW_SUSPEND_RESUME")] public const uint ALLOW_SUSPEND_RESUME; [CCode (cname = "MHD_OPTION_END")] public const int OPTION_END; [SimpleType] [CCode (cname = "struct MHD_Connection*")] public struct Connection {} [CCode (cname = "int", cprefix = "MHD_")] public enum Result { YES = 1, NO = 0 } [Compact] [CCode (cname = "struct MHD_Response", free_function = "MHD_destroy_response")] public class Response { [CCode (cname = "MHD_create_response_from_buffer")] public Response.from_buffer (size_t size, [CCode(array_length=false)] uint8[] buffer, ResponseMemoryMode mode); [CCode (cname = "MHD_add_response_header")] public int add_header (string header, string content); } [Compact] [CCode (cname = "struct MHD_Daemon", free_function = "MHD_stop_daemon")] public class Daemon { [CCode (cname = "MHD_start_daemon")] public static Daemon start (uint flags, uint16 port, AcceptPolicyCallback? apc, AccessHandlerCallback dh, ...); } [CCode (instance_pos = 0)] public delegate int AcceptPolicyCallback (void* cls, void* addr, uint addrlen); [CCode (instance_pos = 0)] public delegate int AccessHandlerCallback (Connection connection, string? url, string? method, string? version, string? upload_data, [CCode(array_length=false)] size_t* upload_data_size, void** con_cls); [CCode (cname = "MHD_queue_response")] public int queue_response (Connection connection, uint status_code, Response response); [CCode (cname = "MHD_suspend_connection")] public int suspend_connection (Connection connection); [CCode (cname = "MHD_resume_connection")] public int resume_connection (Connection connection); [CCode (cname = "MHD_lookup_connection_value")] public unowned string? lookup_connection_value (Connection connection, ValueKind kind, string key); }