📄 dmcthread.cpp
字号:
#include "DMCThread.h"
#include "Log.h"
DMCThread::DMCThread(int interval,char* job,char* ip,int port,char* username,char* password,char* dbname)
{
bzero(clients,sizeof(struct CLIENT*));
bzero(sessions,sizeof(struct SESSION*));
this->interval = interval;
strcpy(this->job,job);
strcpy(this->ip,ip);
this->port= port;
strcpy(this->username,username);
strcpy(this->password,password);
strcpy(this->dbname,dbname);
}
DMCThread::~DMCThread()
{
int i = 0;
for(;i<65536;i++)
{
if(clients[i]!=NULL)
delete clients[i];
if(sessions[i]!=NULL)
{
if(sessions[i]->buffer != NULL)
free(sessions[i]->buffer);
delete sessions[i];
}
}
}
int DMCThread::loadClients()
{
return 1;
}
int DMCThread::updateClients()
{
return 1;
}
bool DMCThread::init(char* desc)
{
return true;
}
void DMCThread::Run()
{
while(1){
sleep(interval);
}
}
struct SESSION* DMCThread::initSession(int fd,char* ip,unsigned short port)
{
if(sessions[fd] == NULL)
{
sessions[fd] = new struct SESSION;
}
bzero(sessions[fd],sizeof(struct SESSION));
strcpy(sessions[fd]->ip,ip);
sessions[fd]->port = port;
return sessions[fd];
}
struct SESSION* DMCThread::getSession(int fd)
{
return sessions[fd];
}
void DMCThread::setSessionInvalid(int fd)
{
sessions[fd]->other = -1;
}
void DMCThread::setConnected(int clientid,int fd1,int fd2)
{
clients[clientid]->fd1= fd1;
clients[clientid]->fd2= fd2;
}
void DMCThread::saveBuffer(int fd,void* buffer,int len)
{
if(sessions[fd]->bufSize<len)
{
if(sessions[fd]->bufSize>0 && sessions[fd]->buffer != NULL)
free(sessions[fd]->buffer);
sessions[fd]->bufSize=len<256?256:len;
sessions[fd]->buffer = (char*)malloc(sessions[fd]->bufSize);
}
memcpy(sessions[fd]->buffer,buffer,len);
sessions[fd]->bufLen = len;
}
void DMCThread::appendBuffer(int fd,void* buffer ,int len)
{
int totalLen = sessions[fd]->bufLen+len;
if(totalLen>sessions[fd]->bufSize)
{
sessions[fd]->bufSize=totalLen<256?256:totalLen;
char* temp = (char*)malloc(sessions[fd]->bufSize);
if(sessions[fd]->bufLen>0)
{
memcpy(temp,sessions[fd]->buffer,sessions[fd]->bufLen);
}
memcpy(temp+sessions[fd]->bufLen,buffer,len);
if(sessions[fd]->buffer!=NULL)
free(sessions[fd]->buffer);
sessions[fd]->buffer = temp;
}
else
{
memcpy(sessions[fd]->buffer+sessions[fd]->bufLen,buffer,len);
}
sessions[fd]->bufLen = totalLen;
}
struct CLIENT* DMCThread::getClientByID(int id)
{
struct CLIENT* c = NULL;
if(id<65536 && id>=0)
c = clients[id];
return c;
}
int DMCThread::getFD1(int id)
{
return clients[id]->fd1;
}
int DMCThread::getFD2(int id)
{
return clients[id]->fd2;
}
void DMCThread::reportMO(int id,int size)
{
clients[id]->MO+=size;
}
void DMCThread::reportMT(int id,int size)
{
clients[id]->MT+=size;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -