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

📄 storemgr.cpp

📁 概述:数据的纵向收集
💻 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 + -