CTianwangFile

 1 #ifndef _TIANWANG_FILE_H_031104_
 2 #define _TIANWANG_FILE_H_031104_
 3 
 4 #include "Tse.h"
 5 #include "Url.h"
 6 #include "Page.h"
 7 #include "FileEngine.h"
 8 
 9 class CTianwangFile : public CFileEngine
10 {
11 public:
12     CTianwangFile(string str);
13     CTianwangFile();
14     virtual ~CTianwangFile();
15 
16     inline int GetFileType() { return TIANWANG; }
17 
18     virtual bool Write(void *arg);
19 };
20 
21 #endif /* _TIANWANG_FILE_H_031104_ */

 

 1 #include "TianwangFile.h"
 2 
 3 extern map<string,string> mapCacheHostLookup;
 4 
 5 CTianwangFile::CTianwangFile()
 6 {
 7 }
 8 
 9 CTianwangFile::CTianwangFile(string str) : CFileEngine(str)
10 {
11 }
12 
13 CTianwangFile::~CTianwangFile()
14 {
15     m_ofsFile.close();
16 }
17 
18 bool CTianwangFile::Write(void * arg)
19 {
20     if( !arg || !m_ofsFile ){
21         return false;
22     }
23 
24     file_arg *pFile = (file_arg *)arg;
25 
26     CUrl *iUrl = pFile->pUrl;
27     CPage *iPage = pFile->pPage;
28 
29     char strDownloadTime[128];
30     time_t tDate;
31 
32     memset(strDownloadTime, 0, 128);
33     time(&tDate);
34     strftime(strDownloadTime, 128, "%a, %d %b %Y %H:%M:%S GMT", gmtime(&tDate));
35 
36     m_ofsFile << "version: 1.0\n";
37     if( iPage->m_sLocation.length() == 0 ){//没有重定向
38         m_ofsFile << "url: " << iUrl->m_sUrl;
39     } else {//重定向了
40         m_ofsFile << "url: " << iPage->m_sLocation;
41         m_ofsFile << "\norigin: " << iUrl->m_sUrl;
42     }
43 
44     m_ofsFile << "\ndate: " << strDownloadTime;//记录下下载时间
45 
46     //保存IP地址信息
47     if( mapCacheHostLookup.find(iUrl->m_sHost) == mapCacheHostLookup.end() ){
48         m_ofsFile << "\nip: " << iUrl->m_sHost;
49     } else {
50         m_ofsFile << "\nip: " << ( *(mapCacheHostLookup.find(iUrl->m_sHost)) ).second;
51     }
52 
53     //保存网页长度
54     m_ofsFile << "\nlength: " << iPage->m_nLenContent + iPage->m_nLenHeader + 1
55         << "\n\n" << iPage->m_sHeader << "\n";
56 
57     m_ofsFile.write( iPage->m_sContent.c_str(), iPage->m_nLenContent );
58     m_ofsFile << endl;
59 
60     return true;
61 }

posted on 2012-07-07 16:54  kakamilan  阅读(222)  评论(0编辑  收藏  举报

导航