response.c 1.02 KB
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif

#include <search.h>
#include <stdlib.h>
#include <stdarg.h>

#include "class.h"
#include "interface/class.h"

#include "http/response.h"


static
void
_free(void ** data)
{
	if (NULL != *data) {
		free(*data);
	}
}

static
void
ctor(void * _this, va_list * params)
{
	char * version;
	char * reason;

	HttpResponse this = _this;

	version      = va_arg(* params, char *);
	this->status = va_arg(* params, unsigned int);
	reason       = va_arg(* params, char *);

	this->version = calloc(1, strlen(version)+1);
	strcpy(this->version, version);

	this->reason  = calloc(1, strlen(reason)+1);
	strcpy(this->reason, reason);
}

static
inline
void
tDelete(void * node)
{
	delete(&node);
}

static
void
dtor(void * _this)
{
	HttpResponse this = _this;

	_free((void **)&(this->version));
	_free((void **)&(this->reason));

	tdestroy(this->header, tDelete);

	_free((void **)&(this->body));
} 

INIT_IFACE(Class, ctor, dtor, NULL);
CREATE_CLASS(HttpResponse, NULL, IFACE(Class));

// vim: set ts=4 sw=4: