Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 0c3b27e96d9e34935eb8f552af26d2e9 > files > 7

libtux-devel-2.1.1-2mdk.i586.rpm

/*
 * demo2.c: sample event-driven module.
 */

#include <unistd.h>

#include "tuxmodule.h"

#define REPLY_HEADER "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
#define REPLY_HEADER_LEN (sizeof(REPLY_HEADER)-1)

int TUXAPI_handle_events (user_req_t *req)
{
	int ret = TUX_RETURN_USERSPACE_REQUEST;

	switch (req->event) {
		/*
		 * A new request starts with event code 0.
		 */
		case 0:
			if (!req->query[0])
				goto abort;
        		write (req->sock, REPLY_HEADER, REPLY_HEADER_LEN);
			req->http_status = 200;

			/*
			 * set req->objectname is to the requested object
			 * in the query string. This simulates
			 * simple static GETs.
			 */
			strcpy(req->objectname, req->query);

			req->event = 1;
			ret = tux(TUX_ACTION_GET_OBJECT, req);
			break;

		case 1:
			req->event = 2;
			ret = tux(TUX_ACTION_SEND_OBJECT, req);
			break;

		case 2:
abort:
			ret = tux(TUX_ACTION_FINISH_CLOSE_REQ, req);
			break;
	}
	return ret;
}