📄 message.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 + -