static.h
author Tero Marttila <terom@fixme.fi>
Mon, 07 Jul 2008 04:36:03 +0300
changeset 27 1e79b4cc8f1b
permissions -rw-r--r--
support for static files (.css, .html, .js), and tiles - serves up a full viewer at / now, but the JS code needs cleaning up

committer: Tero Marttila <terom@fixme.fi>
#ifndef STATIC_H
#define STATIC_H

#include <event2/http.h>

/*
 * I serve up simple static files over HTTP by just loading them directly into memory.
 *
 * This is inefficient, but for small files it's OK.
 */

struct static_file {
    // the file descriptor
    int fh;

    // the size of the file in bytes
    off_t size;

    // the mmap address
    void *mmap_addr;
};

int static_init (struct static_file *ctx, struct evhttp *http_server, const char *url, const char *path);
void static_deinit (struct static_file *ctx);

#define STATIC_DIR_MAX 16
#define STATIC_PATH_MAX 1024

struct static_dir {
    struct static_file files[STATIC_DIR_MAX];

    int file_count;
};

int static_dir_init (struct static_dir *ctx, struct evhttp *http_server, const char *url_prefix, const char *dir_path);
void static_dir_deinit (struct static_dir *ctx);

#endif /* STATIC_H */