/*****************************************************************************
* 	Project 	: Network Based Message Queue System		    **
*	Course		: CIS 650 - Software Engineering		    **
*	Location 	: /research/paraducks3/courses/cis650/proj/rt	    **
*	File		: rtlog.cc					    **
*	Description 	: Logging Module.			   	    **
*****************************************************************************/
#include <rtincl.h>

Log::Log()
{
	/* create a log file - overwrite the earlier one */
	logFd = creat (LOG_FILE_NAME, r->permissions);
	/* use the default message queue permissions to create the log file */
	err_dump(logFd,"Error in creating log file");
}

Log::~Log()
{
	close(logFd); /* close the log file */

}

int	Log::log_message(Connection *c, Message *m)
{
char buf[128+MAX_MESSAGE_SIZE];
nmsqid_ds *request;

	if(m->header->opcode != CONTROL_MESSAGE)
	{
	sprintf(buf,"%d %d %d %d - %s",m->header->opcode, m->header->msgLength,
		m->header->msgType, m->header->uniqueId, m->data);
	}
	else
	{
	request = (nmsqid_ds *) m->data; 
	/* the  request has to be printed */
	sprintf(buf,"%d %d %d %d - %d %d %d %d %d\n",m->header->opcode, m->header->msgLength,
		m->header->msgType, m->header->uniqueId, 
		request->numberMsgsType, request->numberMsgs, request->numberBytes, request->numberPendingProcesses, request->numberConnections);
	}
	ret = write(logFd,buf,strlen(buf));



	return (ret>0? SUCCESS: FAILURE);
}

