#include "CS.h"

void Data(DataP thisP, DebugP callerDeP) {
	DebugP deP = &(thisP->debug);
	DEBID("%s DATA", callerDeP->id);
	thisP->dataLen = sizeof(HeaderT) + sizeof(PayloadT) + strlen(csP->text);
   thisP->contP = (ContainerP)malloc(thisP->dataLen);
	thisP->contP->hdr.ttl = 0;
	thisP->contP->hdr.ts = 0;
	strcpy(&(thisP->contP->payl.text), "EMPTY");
	LOG(5, "Data instance established");
}
int dttlData(DataP thisP) {
	thisP->contP->hdr.ttl--;
	return thisP->contP->hdr.ttl;
}
int ttlData(DataP thisP) {
	return thisP->contP->hdr.ttl;
}
int remPortData(DataP thisP) {
	return thisP->contP->hdr.listPort;
}
DataP loadData(DataP thisP, int ttl, char *loadP) {
	DebugP deP = &(thisP->debug);
	thisP->contP->hdr.ttl = ttl;
	thisP->contP->payl.ts = time(NULL);
	strcpy(&(thisP->contP->payl.text), csP->text);
	LOG(5, "payload loaded to container");
	return thisP;
}
char *unldData(DataP thisP) {
	return &(thisP->contP->payl.text);
}
char *digest24Data(DataP thisP, char *digest) {
	char *text = &(thisP->contP->payl.text);
	if(strlen(text) < 24) strcpy(digest, text);
	else { strncpy(digest, text, 8); strcpy(digest+8, "-------"); strcpy(digest+15, text+strlen(text)-8); }
	return digest;
}
void sabotageData(DataP thisP) {
	thisP->contP->payl.text = '?'; }
int chkData(DataP thisP) {
	return (int)(strcmp(csP->text, &(thisP->contP->payl.text)) == 0);
}
int tsData(DataP thisP) {
	return thisP->contP->hdr.ts;
}
