larbin源碼分析(十二) global文件中的四個init初始化模塊函數(shù)
一 在global.cc文件中的global構(gòu)造函數(shù)中,存在四個初始化模塊函數(shù) initSpecific() , initInput() , initOutput() , initSite() 。
下面分別分析這四個初始化函數(shù)的作用。
(1) initSpecific 函數(shù)定義在 file.cc文件中。然而卻沒有具體的實現(xiàn),據(jù)估計是用作 處理 網(wǎng)頁中出現(xiàn)的jpg 等多媒體文件的。
(2)initInput() 函數(shù) ,實際上只有定義了thread_output才有實現(xiàn)。
(3)initOutput()函數(shù),實際上該函數(shù)主要是調(diào)用了useroutput.cc中的inituseroutput()函數(shù)。
函數(shù)的主要作用是將爬取的網(wǎng)頁存儲在計算機硬盤中。
根據(jù)options.h頭文件中,可以使用不同的
#ifdef SIMPLE_SAVE
#include "interf/saveuseroutput.cc"
該類文件的具體實現(xiàn)
void initUserOutput () { 實質(zhì)上是構(gòu)建存儲文件
mkdir(saveDir, S_IRWXU); //創(chuàng)建存儲目錄 /save
endFileName = strlen(saveDir); //獲取文件的長度
fileName = new char[endFileName+maxUrlSize+50]; //分配文件名稱
strcpy(fileName, saveDir);
if (fileName[endFileName-1] != '/') fileName[endFileName++] = '/';
strcpy(fileName+endFileName, "d00000/f00000");
endFileName += 12; // indique le dernier char ecrit
}
#elif defined(MIRROR_SAVE)
#include "interf/mirrorsaveuseroutput.cc"
#elif defined(STATS_OUTPUT)
#include "interf/statsuseroutput.cc"
#else // DEFAULT_OUTPUT
#include "interf/defaultuseroutput.cc" 該文件中基本無定義實現(xiàn)