Пример #1
0
PNode *PNode_new(void)
{
	PNode *self = calloc(1, sizeof(PNode));
	self->pid           = Datum_new(); // pid
	self->pidPath       = Datum_new(); // pid/m/
	self->keyPath       = Datum_new(); // pid/m/key
	self->sizePath      = Datum_new();
	self->parentPid     = Datum_new();
	
	return self;
}
Пример #2
0
HttpRequest *HttpRequest_new(void)
{
	HttpRequest *self = calloc(1, sizeof(HttpRequest));
	self->post = Datum_new();
	self->uri = Datum_new(); 
	self->uriPath = Datum_new(); 
	
	self->query = CHash_new();	
	CHash_setEqualFunc_(self->query, (CHashEqualFunc *)Datum_equals_);
	CHash_setHash1Func_(self->query, (CHashHashFunc *)Datum_hash1);
	CHash_setHash2Func_(self->query, (CHashHashFunc *)Datum_hash2);

	self->emptyDatum = Datum_new();

	return self;
}
Пример #3
0
int VertexServer_api_transaction(VertexServer *self)
{
	Datum *uri = Datum_new();
	Datum *post = Datum_new();
	int error = 0;
	int r, result;
	
	PDB_commit(self->pdb);
	
	Datum_copy_(post, HttpRequest_postData(self->httpRequest));
	
	do
	{
		Datum_copy_(uri, post);
		r = Datum_sepOnChars_with_(uri, "\n", post);

		if (Datum_size(uri) == 0) 
		{
			VertexServer_setErrorCString_(self, "empty line in transaction");
			error = 1;
			break;
		}
		
		HttpRequest_parseUri_(self->httpRequest, Datum_data(uri));
		error = VertexServer_process(self);
		Pool_globalPoolFreeRefs();
	} while ((r != -1) && (!error));
	
	if (error)
	{
		PDB_abort(self->pdb);
		result = -1;
	}
	else
	{
		PDB_commit(self->pdb);
		result = 0;
	}
		
	Datum_free(uri);
	return result;
}
Пример #4
0
File *File_new(void)
{
	File *self = calloc(1, sizeof(File));
	self->path = Datum_new();
	return self;
}