📄 config.cpp
字号:
#include "minifc.h"
#include "main.h"
#include "config.h"
/////////////////DLConfig/////////////////////
DLConfig::DLConfig()
{
m_nfm=NULL;
//m_db_sem=NULL;
m_nfm=new NetManager(2,1000);
}
DLConfig::~DLConfig()
{
//MGRBaseClient *client;
//m_db_cs.Lock(DEBUGMTPARAM);
//while( !m_db_clients.IsEmpty())
//{
// client=(MGRBaseClient *)m_db_clients.RemoveHead();
// delete client;
//}
//m_db_cs.Unlock();
//if(m_db_sem)
//{
// delete m_db_sem;
// m_db_sem=NULL;
//}
if(m_nfm)
{
delete m_nfm;
m_nfm=NULL;
}
}
BOOL DLConfig:: readpf(LPCSTR profile)
{
JProfile pf(profile);
m_maxthreads=(long)pf.ReadNumber( "dlsrv.maxdownthreads", MAXDOWNTHREADS);
return TRUE;
}
BOOL DLConfig:: init_db(LPCSTR mgrbase_addr, int mgrbase_port, LPCSTR db_name, long maxconn)
{
//MGRBaseClient *client;
m_db_addr=mgrbase_addr;
m_db_port=mgrbase_port;
m_db_maxconn=maxconn;
m_db_name=db_name;
//m_db_cs.Lock(DEBUGMTPARAM);
//m_db_sem=new CSem(0,maxconn);
//m_db_clients.RemoveAll();
//for(int i=0;i<m_db_maxconn;i++)
//{
// client=new MGRBaseClient(m_nfm);
// client->SetServer(mgrbase_addr,mgrbase_port);
// if( !client->TestConnect())
// {
// return FALSE;
// }
// m_db_clients.AddTail(client);
// m_db_sem->Unlock();
//}
//m_db_cs.Unlock();
if( !init_tables())
return FALSE;
return TRUE;
}
MGRBaseClient* DLConfig::take_db()
{
//MGRBaseClient *client;
//m_db_sem->Lock(DEBUGMTPARAM);
//m_db_cs.Lock(DEBUGMTPARAM);
//ASSERT( !m_db_clients.IsEmpty());
//client=(MGRBaseClient *)m_db_clients.RemoveHead();
//m_db_cs.Unlock();
MGRBaseClient *client;
client=new MGRBaseClient(m_nfm);
client->SetServer(m_db_addr,m_db_port);
return client;
}
void DLConfig::free_db(MGRBaseClient *client)
{
//m_db_cs.Lock(DEBUGMTPARAM);
//m_db_clients.AddTail(client);
//m_db_cs.Unlock();
//m_db_sem->Unlock();
delete client;
}
BOOL DLConfig::init(LPCSTR profile)
{
if(!readpf(profile))
return FALSE;
/*
m_save_sem=new CSem(0,MAXTMPFILE);
JThread *p;
for(int i=0;i<m_savethread_count;i++)
{
p=new JThread;
p->m_userdata=(superint_ut)this;
p->Start((THREADFUN)th_savemail);
m_saveth_array.Add(p);
}
*/
return TRUE;
}
BOOL DLConfig::init_dc(LPCSTR dc_addr,int dc_port,int dc_maxconn)
{
m_dc_addr=dc_addr;
m_dc_port=dc_port;
m_dc_maxconn=dc_maxconn;
return TRUE;
}
BaseNetClient* DLConfig::take_dc()
{
BaseNetClient* clnt=new BaseNetClient(m_nfm);
clnt->SetServer(m_dc_addr,m_dc_port);
return clnt;
}
void DLConfig::free_dc(BaseNetClient *clnt)
{
delete clnt;
}
BaseNetClient *DLConfig::take_hammer(LPCSTR hammerip)
{
BaseNetClient* clnt=new BaseNetClient(m_nfm);
clnt->SetServer(hammerip,DEFAULT_HAMMER_PORT);
return clnt;
}
void DLConfig::free_hammer(BaseNetClient *clnt)
{
delete clnt;
}
//db
BOOL DLConfig::init_tables()
{
if( !create_downque())
return FALSE;
return TRUE;
}
BOOL DLConfig::create_downque()
{
MGRBaseClient *client=take_db();
BOOL bret=TRUE;
if(!client->TableIsExist(m_db_name,TABLE_DOWNQUE))
{
if( !client->TableCreate(m_db_name,TABLE_DOWNQUE,
"uid int,"
"boxid string(30),"
"mfid string(100),"
"bid string(50),"
"readkey string(255),"
"encode string(50),"
"pipeid string(50),"
"startpos int,"
"endpos int,"
"gettype char,"
"size int,"
"clntip string(20),"
"pipename string(50),"
"curpos int,"
"status int,"
"time datetime,"
"dtime datetime" ))
bret=FALSE;
if( !client->IndexCreate(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE1,TRUE, "pipeid"))
bret=FALSE;
if( !client->IndexCreate(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE2,FALSE,"status,time"))
bret=FALSE;
if( !client->IndexCreate(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE3,FALSE,"dtime"))
bret=FALSE;
//if( !client->IndexCreate(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE4,FALSE,"time"))
// bret=FALSE;
}
free_db(client);
return bret;
}
//dowo que
BOOL DLConfig::downque_insert(int uid,LPCSTR boxid,LPCSTR mfid,LPCSTR bid,LPCSTR readkey,LPCSTR encode,
LPCSTR pipeid,LPCSTR pipename,int startpos,int endpos,char gettype,int size,
LPCSTR clntip, superint_ut& rowid)
{
MGRBaseClient *client=take_db();
NetTable data;
BOOL bret;
//"uid int,"
//"boxid string(30),"
//"mfid string(100),"
//"bid string(50),"
//"readkey string(255),"
//"encode string(50),"
//"pipeid string(50),"
//"startpos int,"
//"endpos int,"
//"gettype char,"
//"size int,"
//"clntip string(20),"
//"pipename string(50),"
//"curpos int,"
//"status int,"
//"time datetime,"
//"dtime datetime" ))
data.Clear();
data.AddCol("uid",NET_LONG);
data.AddCol("boxid",NET_STRING,30);
data.AddCol("mfid",NET_STRING,100);
data.AddCol("bid",NET_STRING,50);
data.AddCol("readkey",NET_STRING,255);
data.AddCol("encode",NET_STRING,50);
data.AddCol("pipeid",NET_STRING,50);
data.AddCol("startpos",NET_LONG);
data.AddCol("endpos",NET_LONG);
data.AddCol("gettype",NET_CHAR);
data.AddCol("size",NET_LONG);
data.AddCol("clntip",NET_STRING,20);
data.AddCol("pipename",NET_STRING,50);
data.AddCol("curpos",NET_LONG);
data.AddCol("status",NET_LONG);
data.AddCol("time",NET_DATETIME);
data.AddCol("dtime",NET_DATETIME);
data.AddRow();
data.SetLong(1,"uid",uid);
data.SetString(1,"boxid",boxid);
data.SetString(1,"mfid",mfid);
data.SetString(1,"bid",bid);
data.SetString(1,"readkey",readkey);
data.SetString(1,"encode",encode);
data.SetString(1,"pipeid",pipeid);
data.SetLong(1,"startpos",startpos);
data.SetLong(1,"endpos",endpos);
data.SetChar(1,"gettype",gettype);
data.SetLong(1,"size",size);
data.SetString(1,"clntip",clntip);
data.SetString(1,"pipename",pipename);
data.SetLong(1,"curpos",startpos);
data.SetLong(1,"status",STATUS_READY);
data.SetDatetime(1,"time",nowtime());
data.SetDatetime(1,"dtime",nowtime());
bret=client->TableInsert(m_db_name,TABLE_DOWNQUE,data);
NetTable rowids;
MFTKEY key;
key.SetFieldCount(1);
key.SetFieldType(0,NET_STRING,50);
key.SetString(0,pipeid);
client->IndexQuery(m_db_name,INDEX_DOWNQUE1,key,0,1,&rowids);
if( rowids.RowCount()==0)
bret=FALSE;
else
rowid=rowids.GetSuperLong(1,"$rowid");
free_db(client);
return bret;
}
BOOL DLConfig::downque_find(LPCSTR pipeid,superint_ut& rowid)
{
MGRBaseClient *client=take_db();
BOOL bret;
NetTable rowids;
MFTKEY key;
key.SetFieldCount(1);
key.SetFieldType(0,NET_STRING,50);
key.SetString(0,pipeid);
bret=client->IndexQuery(m_db_name,INDEX_DOWNQUE1,key,0,1,&rowids);
if( rowids.RowCount()==0)
bret=FALSE;
else
rowid=rowids.GetSuperLong(1,"$rowid");
free_db(client);
return bret;
}
BOOL DLConfig::downque_remove(LPCSTR pipeid)
{
MGRBaseClient *client=take_db();
MFTKEY key;
BOOL bret;
key.SetFieldCount(1);
key.SetFieldType(0,NET_STRING,50);
key.SetString(0,pipeid);
bret=client->IndexDeleteData(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE1,key);
free_db(client);
return bret;
}
BOOL DLConfig::downque_remove(NetTable &rowids)
{
MGRBaseClient *client=take_db();
MFTKEY key;
BOOL bret;
bret=client->TableDelete(m_db_name,TABLE_DOWNQUE,rowids);
free_db(client);
return bret;
}
BOOL DLConfig::downque_updatestatus(superint_ut rowid,int status)
{
MGRBaseClient *client=take_db();
NetTable data;
BOOL bret;
data.Clear();
data.AddCol("status",NET_LONG);
data.AddCol("dtime", NET_DATETIME);
data.AddCol("$rowid",NET_SUPERLONG);
data.AddRow();
data.SetLong(1,"status",status);
data.SetDatetime(1,"dtime",nowtime());
data.SetSuperLong(1,"$rowid",rowid);
bret=client->TableUpdate(m_db_name,TABLE_DOWNQUE,data);
free_db(client);
return bret;
}
BOOL DLConfig::downque_updatepos(superint_ut rowid,int curpos)
{
MGRBaseClient *client=take_db();
NetTable data;
BOOL bret;
data.Clear();
data.AddCol("curpos",NET_LONG);
data.AddCol("dtime",NET_DATETIME);
data.AddCol("$rowid",NET_SUPERLONG);
data.AddRow();
data.SetLong(1,"curpos",curpos);
data.SetDatetime(1,"dtime",nowtime());
data.SetSuperLong(1,"$rowid",rowid);
bret=client->TableUpdate(m_db_name,TABLE_DOWNQUE,data);
free_db(client);
return bret;
}
int DLConfig::count_downque(int status)
{
//"uid int,"
//"boxid string(30),"
//"mfid string(100),"
//"bid string(50),"
//"readkey string(255),"
//"encode string(50),"
//"pipeid string(50),"
//"startpos int,"
//"endpos int,"
//"gettype char,"
//"size int,"
//"clntip string(20),"
//"pipename string(50),"
//"curpos int,"
//"status int,"
//"time datetime,"
//"dtime datetime" ))
MGRBaseClient *client=take_db();
NetTable mails;
MFTKEY key;
int c;
key.SetFieldCount(1);
key.SetFieldType(0,NET_LONG);
key.SetLong(0,status);
c=(int)client->IndexCountKey(m_db_name,INDEX_DOWNQUE2,key);
free_db(client);
return c;
}
BOOL DLConfig::query_downque(NetTable& mails,int num)
{
MGRBaseClient *client=take_db();
MFTKEY key;
BOOL bret;
key.SetFieldCount(1);
key.SetFieldType(0,NET_LONG);
key.SetLong(0,STATUS_READY);
bret=client->IndexQueryData(m_db_name,TABLE_DOWNQUE,INDEX_DOWNQUE2,key,0,num,"",&mails);
free_db(client);
return bret;
}
BOOL DLConfig::take_downitem(NetTable& olddata)
//BOOL DLConfig::take_mail(superint_ut rowid)
{
//update status
MGRBaseClient *client=take_db();
BOOL bret;
NetTable newdata;
/*
NetData olddata,newdata;
olddata.AddCol("status",NET_LONG);
olddata.AddCol("$rowid",NET_SUPERLONG);
olddata.AddRow();
olddata.SetLong(1,"status",STATUS_WRITE_END);
olddata.SetSuperLong(1,"$rowid",rowid);
olddata.CopyTo(&newdata);
newdata.SetLong(1,"status",STATUS_SENDING);
*/
olddata.CopyTo(&newdata);
ASSERT(newdata.RowCount()==1);
newdata.SetLong(1,"status",STATUS_PROCESS);
bret=client->TableMutexUpdate(m_db_name,TABLE_DOWNQUE,olddata,newdata);
free_db(client);
return bret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -