⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.cpp

📁 本代码是基于LINUX系统下的
💻 CPP
字号:
#include "stdafx.h"
#include "AnEn.h"

CMessage* CAnalyse::m = 0;

CAnalyse::CAnalyse(char *totalStr, int length)
{
	assert(totalStr != NULL);
	if(totalStr[0] == 0)
	{
		m = new CSessionMessage(totalStr,length);
	}
	else
	{
		m = new CContactMessage(totalStr,length);
	}
}
//##ModelId=46417F390216
CMessage *CAnalyse::GetObject()
{
	return m;
}
//##ModelId=46417F390217
void CAnalyse::Release()
{
}
//##ModelId=46417F39021D
CAnalyse::~CAnalyse()
{

}




//##ModelId=46417F39023C
CEncapsulation::CEncapsulation(int type, int uid , char *pwdOname , int sid )
{
	c = new CContactMessage(type,uid,pwdOname,sid);
	s = NULL;
}

CEncapsulation::CEncapsulation(int type, char *name , char *pwd )
{
	c = new CContactMessage(type,name,pwd);
	s = NULL;
}//注册封装

CEncapsulation::CEncapsulation(int type, int sid , int count , char *contentOfStr )
{
		s = new CSessionMessage(type,sid,count,contentOfStr);
		c = NULL;
}

char *CEncapsulation::GetContent()
{
	if(s != NULL)
	{
		return s->GetTotalStr();
	}
	else
	{
		return c->GetTotalStr();
	}
}

int CEncapsulation::GetLength()
{
	if(s != NULL)
	{
		return s->GetTotalStrLen();
	}
	else
	{
		return c->GetTotalStrLen();
	}
}

void CEncapsulation::Release()
{
	if(s != NULL)
	{
		delete s;
	}
	else
	{
		delete c;
	}
}

CEncapsulation::~CEncapsulation()
{
	if(s != NULL)
	{
		delete s;
		s = NULL;
	}
	if(c != NULL)
	{
		delete c;
		c = NULL;
	}
	
}

//##ModelId=46417F39005B
CContactMessage::CContactMessage(char *buff,int buf_length):CMessage(buff,buf_length)
{
	char s[15];
	CMessage::GetsingleStr(PwdName,17,15);
	if(Type == 12)
	{
		CMessage::GetsingleStr(Name,2,15);//注册信息
		Uid = 0;
	}
	else
	{
		CMessage::GetsingleStr(s,2,15);
		Uid = atoi(s);
	}
	memset(s,'\0',15);
	CMessage::GetsingleStr(s,32,15);
	Sid = atoi(s);
}

//##ModelId=46417F390064
CContactMessage::CContactMessage(int type,int uid ,char *name ,int sid ):CMessage()
{
	total_length = 47;
	Type = type;
	Sid = sid;
	Uid = uid;
	strcpy(PwdName,name);
	total_Str = NULL;
}


CContactMessage::CContactMessage(int type,char *name ,char *pwd):CMessage()//注册封装
{
	total_length = 47;
	Type = type;
	Sid = 0;
	Uid = 0;
	strcpy(Name,name);
	strcpy(PwdName,pwd);
	total_Str = NULL;
}
//##ModelId=46417F390069
char *CContactMessage::GetTotalStr()
{
	if(total_Str == NULL)
	{
		char s[15];
		total_Str = new char[total_length];
		total_Str[0] = 1;
		total_Str[1] = Type;
		if(Type == 12)
		{
			CMessage::SetSingleStr(Name, 2,15);
		}
		else
		{
			sprintf(s,"%d",Uid);
			CMessage::SetSingleStr(s, 2,15);
		}
		CMessage::SetSingleStr(PwdName, 17,15);
		sprintf(s,"%d",Sid);
		CMessage::SetSingleStr(s, 32,15);
	}
	return total_Str;
}

//##ModelId=46417F39006E
int CContactMessage::GetUID()
{
	return Uid;
}
//##ModelId=46417F39006F
char *CContactMessage::GetPWD()
{
	return PwdName;
}
//##ModelId=46417F390070
char *CContactMessage::GetName()
{
	if(Type == 12)
		return Name;
	else
		return PwdName;
}

//##ModelId=46417F390078
CContactMessage::~CContactMessage()
{
	if(total_Str != NULL)
		delete[]total_Str;
	total_Str = NULL;
//delete[15]PwdName;
//	free(PwdName);
}

//##ModelId=46417F380353
CSessionMessage::CSessionMessage(char *buff,int buf_length):CMessage(buff,buf_length)
{
	char s[15];
	CMessage::GetsingleStr(s,2,15);
	Sid = atoi(s);
	memset(s,'\0',15);
	CMessage::GetsingleStr(s,17,15);
	Count = atoi(s);
	Mes = new char[Count];
	CMessage::GetsingleStr(Mes,32,Count);
}


//##ModelId=46417F38035C
CSessionMessage::CSessionMessage(int type, int sid, int count, char *contentOfStr):CMessage()
{
	Count = count;
	total_length = 32+Count;
	Type = type;
	Sid = sid;
	Mes = new char[Count+1];
	int i;
	for(i =0 ; i < Count;i++)
	{
		Mes[i] = contentOfStr[i];
	}
	Mes[Count] = '\0';
	total_Str = NULL;
}

//##ModelId=46417F380361
char *CSessionMessage::GetTotalStr()
{
	if(total_Str == NULL)
	{
		char s[15];
		total_Str = new char[total_length];
		total_Str[0] = 0;
		total_Str[1] = Type;
		sprintf(s,"%d",Sid);
		CMessage::SetSingleStr(s, 2,15);
		sprintf(s,"%d",Count);
		CMessage::SetSingleStr(s, 17,15);
		CMessage::SetSingleStr(Mes, 32,Count);
	}
	return total_Str;
}
//##ModelId=46417F380366
int CSessionMessage::GetLMCount()
{
	return Count;
}
//##ModelId=46417F380367
char *CSessionMessage::GetList()
{
	return Mes;
}
//##ModelId=46417F380368
char *CSessionMessage::GetMessage()
{
	return Mes;
}
//##ModelId=46417F380370
CSessionMessage::~CSessionMessage()
{
	if(Mes != NULL)delete[]Mes;
	Mes = NULL;

	if(total_Str != NULL)
		delete[]total_Str;
	total_Str = NULL;
}

//##ModelId=46417F38039A
CMessage::CMessage(char *buff, int buf_length)
{
	assert(buff != NULL);
	total_length = buf_length;
	total_Str = new char[total_length];
	if(total_Str != NULL)
	cout<< "make success!"<< endl;
	int i=0;
	while(i < total_length)
	{
		total_Str[i] = buff[i];
		i++;
	}
	Type = buff[1];
	Sid = 0;
}

//##ModelId=46417F3803A4
void CMessage::SetSingleStr(char *str, int startc,int length)
{
		assert((startc+length) <= total_length);
		int i = 0,j = startc;
		while(i < length)
		{
			total_Str[j] = str[i];
			i++;
			j++;
		}
}

//##ModelId=46417F3803AD
void CMessage::GetsingleStr(char *str,  int startc, int length)
{
	assert(total_Str != NULL);
	int i = 0,j = startc;
	while(i < length)
	{
		str[i] = total_Str[j];
		i++;
		j++;
	}
	str[length] = '\0';
}

//##ModelId=46417F3803B7
int CMessage::GetTotalStrLen()
{
		return total_length;
}

//##ModelId=46417F3803B6
int CMessage::GetType()
{	
	if(total_Str == NULL)
	cout<< "null"<< endl;
	else 
	cout<< "not null"<< endl;
	assert(total_Str != NULL);
	int i = total_Str[1];
	return i;
}

//##ModelId=46417F3803B8
int CMessage::GetSID()
{
	return Sid;
}

//##ModelId=46417F3803D7
CMessage::~CMessage()
{
	if(total_Str != NULL)delete[]total_Str;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -