📄 storemgr.cpp
字号:
#include "stdafx.h"
#include "StoreMgr.h"
#include <Wininet.h>
FDBHANDLE CStoreMgr::s_hDbAlbum=INVALID_FDBHANDLE;
FDBHANDLE CStoreMgr::s_hDbSong=INVALID_FDBHANDLE;
FDBHANDLE CStoreMgr::s_hDbLyric=INVALID_FDBHANDLE;
FDBHANDLE CStoreMgr::s_hDbLink=INVALID_FDBHANDLE;
FDBHANDLE CStoreMgr::s_hDbInfo=INVALID_FDBHANDLE;
FDBHANDLE CStoreMgr::GetDB(STORE_TYPE sType)
{
if(sType == ST_PAGESONG)
{
if( s_hDbSong==INVALID_FDBHANDLE)
{
CHAR strHost[MAX_PATH]={0};
sprintf(strHost,"%d",g_nSid);
s_hDbSong=::fdb_openrw(sType,strHost);
return s_hDbSong;
}
else
{
return s_hDbSong;
}
}
else if(sType == ST_PAGEALBUM)
{
if( s_hDbAlbum==INVALID_FDBHANDLE)
{
CHAR strHost[MAX_PATH]={0};
sprintf(strHost,"%d",g_nSid);
s_hDbAlbum=::fdb_openrw(sType,strHost);
return s_hDbAlbum;
}
else
{
return s_hDbAlbum;
}
}
else if(sType == ST_PAGELYRIC)
{
if( s_hDbLyric==INVALID_FDBHANDLE)
{
CHAR strHost[MAX_PATH]={0};
sprintf(strHost,"%d",g_nSid);
s_hDbLyric=::fdb_openrw(sType,strHost);
return s_hDbLyric;
}
else
{
return s_hDbLyric;
}
}
else if(sType == ST_PAGELINK)
{
if( s_hDbLink==INVALID_FDBHANDLE)
{
CHAR strHost[MAX_PATH]={0};
sprintf(strHost,"%d",g_nSid);
s_hDbLink=::fdb_openrw(sType,strHost);
return s_hDbLink;
}
else
{
return s_hDbLink;
}
}
else if(sType == ST_PAGEINFO)
{
if( s_hDbInfo==INVALID_FDBHANDLE)
{
CHAR strHost[MAX_PATH]={0};
sprintf(strHost,"%d",g_nSid);
s_hDbInfo=::fdb_openrw(sType,strHost);
return s_hDbInfo;
}
else
{
return s_hDbInfo;
}
}
return INVALID_FDBHANDLE;
}
void CStoreMgr::FreeDB()
{
if(s_hDbSong!=INVALID_FDBHANDLE)
{
::fdb_close(s_hDbSong);
s_hDbSong=INVALID_FDBHANDLE;
}
if(s_hDbAlbum!=INVALID_FDBHANDLE)
{
::fdb_close(s_hDbAlbum);
s_hDbAlbum=INVALID_FDBHANDLE;
}
if(s_hDbLyric!=INVALID_FDBHANDLE)
{
::fdb_close(s_hDbLyric);
s_hDbLyric=INVALID_FDBHANDLE;
}
if(s_hDbLink!=INVALID_FDBHANDLE)
{
::fdb_close(s_hDbLink);
s_hDbLink=INVALID_FDBHANDLE;
}
if(s_hDbInfo!=INVALID_FDBHANDLE)
{
::fdb_close(s_hDbInfo);
s_hDbInfo=INVALID_FDBHANDLE;
}
return;
}
void CStoreMgr::AddTaskStoreAlbum(LPCSTR lpszReferUrl,LPCSTR lpszUrl,LPCSTR lpszContent)
{
if(f_strlen(lpszUrl) >=INTERNET_MAX_PATH_LENGTH)
{
DebugString("CCrawler::AddTaskStoreAlbum","too long packet for (%s)",lpszUrl);
return;
}
//转换成绝对路径
char szPath[INTERNET_MAX_PATH_LENGTH] ={0};
int len = INTERNET_MAX_PATH_LENGTH;
InternetCombineUrl(lpszReferUrl,lpszUrl,szPath,(LPDWORD)&len,0);
FDBHANDLE hDb = GetDB(ST_PAGEALBUM);
if(hDb!=INVALID_FDBHANDLE)
{
FITHANDLE hKey = ::fdb_getitem();
FITHANDLE hValue = ::fdb_getitem();
fdb_writeb(hKey,szPath,(int)f_strlen(szPath));
fdb_writeb(hValue,lpszContent,(int)f_strlen(lpszContent));
fdb_put(hDb,hKey,hValue);
::fdb_putitem(hKey);
::fdb_putitem(hValue);
::InterlockedIncrement((LONG*)&g_nTaskDone);
if(g_nTaskDone % 20 == 0)
{
Sync();
}
}
else
{
DebugString("CCrawler::AddTaskStoreAlbum","GetDB error");
return;
}
}
void CStoreMgr::AddTaskStoreSong(LPCSTR lpszReferUrl,LPCSTR lpszUrl,LPCSTR lpszContent1,LPCSTR lpszContent2)
{
if(f_strlen(lpszUrl) >=INTERNET_MAX_PATH_LENGTH)
{
DebugString("CCrawler::AddTaskStoreSong","too long packet for (%s)",lpszUrl);
return;
}
//转换成绝对路径
char szPath[INTERNET_MAX_PATH_LENGTH] ={0};
int len = INTERNET_MAX_PATH_LENGTH;
InternetCombineUrl(lpszReferUrl,lpszUrl,szPath,(LPDWORD)&len,0);
FDBHANDLE hDb = GetDB(ST_PAGESONG);
if(hDb!=INVALID_FDBHANDLE)
{
FITHANDLE hKey = ::fdb_getitem();
FITHANDLE hValue = ::fdb_getitem();
fdb_writeb(hKey,szPath,(int)f_strlen(szPath));
fdb_writeb(hValue,lpszContent1,(int)f_strlen(lpszContent1));
fdb_writeb(hValue,lpszContent2,(int)f_strlen(lpszContent2));
fdb_put(hDb,hKey,hValue);
::fdb_putitem(hKey);
::fdb_putitem(hValue);
::InterlockedIncrement((LONG*)&g_nTaskDone);
if(g_nTaskDone % 20 == 0)
{
Sync();
}
}
else
{
DebugString("CCrawler::AddTaskStoreSong","GetDB error");
return;
}
}
void CStoreMgr::AddTaskStoreLyric(LPCSTR lpszReferUrl,LPCSTR lpszUrl,LPCSTR lpszContent)
{
if(f_strlen(lpszUrl) >=INTERNET_MAX_PATH_LENGTH)
{
DebugString("CCrawler::AddTaskStoreLyric","too long packet for (%s)",lpszUrl);
return;
}
//转换成绝对路径
char szPath[INTERNET_MAX_PATH_LENGTH] ={0};
int len = INTERNET_MAX_PATH_LENGTH;
InternetCombineUrl(lpszReferUrl,lpszUrl,szPath,(LPDWORD)&len,0);
FDBHANDLE hDb = GetDB(ST_PAGELYRIC);
if(hDb!=INVALID_FDBHANDLE)
{
FITHANDLE hKey = ::fdb_getitem();
FITHANDLE hValue = ::fdb_getitem();
fdb_writeb(hKey,szPath,(int)f_strlen(szPath));
fdb_writeb(hValue,lpszContent,(int)f_strlen(lpszContent));
fdb_put(hDb,hKey,hValue);
::fdb_putitem(hKey);
::fdb_putitem(hValue);
::InterlockedIncrement((LONG*)&g_nTaskDone);
if(g_nTaskDone % 20 == 0)
{
Sync();
}
}
else
{
DebugString("CCrawler::AddTaskStoreLyric","GetDB error");
return;
}
}
void CStoreMgr::AddTaskStoreLink(LPCSTR lpszReferUrl,LPCSTR lpszUrl,LPCSTR lpszContent)
{
if(f_strlen(lpszUrl) >=INTERNET_MAX_PATH_LENGTH)
{
DebugString("CCrawler::AddTaskStoreLink","too long packet for (%s)",lpszUrl);
return;
}
//转换成绝对路径
char szPath[INTERNET_MAX_PATH_LENGTH] ={0};
int len = INTERNET_MAX_PATH_LENGTH;
InternetCombineUrl(lpszReferUrl,lpszUrl,szPath,(LPDWORD)&len,0);
FDBHANDLE hDb = GetDB(ST_PAGELINK);
if(hDb!=INVALID_FDBHANDLE)
{
FITHANDLE hKey = ::fdb_getitem();
FITHANDLE hValue = ::fdb_getitem();
fdb_writeb(hKey,szPath,(int)f_strlen(szPath));
fdb_writeb(hValue,lpszContent,(int)f_strlen(lpszContent));
fdb_put(hDb,hKey,hValue);
::fdb_putitem(hKey);
::fdb_putitem(hValue);
::InterlockedIncrement((LONG*)&g_nTaskDone);
if(g_nTaskDone % 20 == 0)
{
Sync();
}
}
else
{
DebugString("CCrawler::AddTaskStoreLink","GetDB error");
return;
}
}
void CStoreMgr::AddTaskStoreInfo(LPCSTR lpszReferUrl,LPCSTR lpszUrl,LPCSTR lpszTitle,LPCSTR lpszContent,LPCSTR lpszSubType)
{
if(f_strlen(lpszUrl) >=INTERNET_MAX_PATH_LENGTH)
{
DebugString("CCrawler::AddTaskStoreInfo","too long packet for (%s)",lpszUrl);
return;
}
//转换成绝对路径
char szPath[INTERNET_MAX_PATH_LENGTH] ={0};
int len = INTERNET_MAX_PATH_LENGTH;
InternetCombineUrl(lpszReferUrl,lpszUrl,szPath,(LPDWORD)&len,0);
FDBHANDLE hDb = GetDB(ST_PAGEINFO);
if(hDb!=INVALID_FDBHANDLE)
{
FITHANDLE hKey = ::fdb_getitem();
FITHANDLE hValue = ::fdb_getitem();
fdb_writeb(hKey,szPath,(int)f_strlen(szPath));
fdb_writeb(hValue,lpszTitle,(int)f_strlen(lpszTitle));
fdb_writeb(hValue,lpszContent,(int)f_strlen(lpszContent));
fdb_writeb(hValue,lpszSubType,(int)f_strlen(lpszSubType));
fdb_put(hDb,hKey,hValue);
::fdb_putitem(hKey);
::fdb_putitem(hValue);
::InterlockedIncrement((LONG*)&g_nTaskDone);
if(g_nTaskDone % 20 == 0)
{
Sync();
}
}
else
{
DebugString("CCrawler::AddTaskStoreInfo","GetDB error");
return;
}
}
void CStoreMgr::Sync()
{
if(s_hDbAlbum != INVALID_FDBHANDLE)
fdb_sync(s_hDbAlbum);
if(s_hDbSong != INVALID_FDBHANDLE)
fdb_sync(s_hDbSong);
if(s_hDbLyric != INVALID_FDBHANDLE)
fdb_sync(s_hDbLyric);
if(s_hDbLink != INVALID_FDBHANDLE)
fdb_sync(s_hDbLink);
if(s_hDbInfo != INVALID_FDBHANDLE)
fdb_sync(s_hDbInfo);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -