@@ -23,60 +23,54 @@ CBTorrent_Creator::~CBTorrent_Creator()
2323/* *******************************************************************
2424函数名称:BTorrent_Creator_Init
2525函数功能:初始化一个制作工具
26- 参数.一:pxhToken
27- In/Out:In
28- 类型:句柄
29- 可空:N
30- 意思:导出一个句柄
31- 参数.二:lpszBTPath
26+ 参数.一:lpszBTPath
3227 In/Out:In
3328 类型:常量字符指针
3429 可空:N
3530 意思:要制作的文件地址路径
36- 参数.三 :nPieceSize
31+ 参数.二 :nPieceSize
3732 In/Out:In
3833 类型:整数型
3934 可空:N
4035 意思:块大小,默认16K
4136返回值
42- 类型:逻辑型
43- 意思:是否成功
37+ 类型:句柄
38+ 意思:导出一个句柄
4439备注:
4540*********************************************************************/
46- bool CBTorrent_Creator::BTorrent_Creator_Init (XNETHANDLE* pxhToken, LPCXSTR lpszBTPath, int nPieceSize)
41+ XHANDLE CBTorrent_Creator::BTorrent_Creator_Init (LPCXSTR lpszBTPath, int nPieceSize)
4742{
4843 BTDload_IsErrorOccur = false ;
4944
50- if ((NULL == pxhToken) || ( NULL == lpszBTPath))
45+ if ((NULL == lpszBTPath))
5146 {
5247 BTDload_IsErrorOccur = true ;
5348 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_INIT_PARAMENT;
54- return false ;
49+ return NULL ;
5550 }
5651 // 申请空间
57- BTORRENT_CREATORINFO st_BTCreator;
58- memset (&st_BTCreator, ' \0 ' , sizeof (BTORRENT_CREATORINFO));
59-
52+ BTORRENT_CREATORINFO* pSt_BTCreator = new BTORRENT_CREATORINFO;
53+ if (NULL == pSt_BTCreator)
54+ {
55+ BTDload_IsErrorOccur = true ;
56+ BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_INIT_MALLOC;
57+ return NULL ;
58+ }
59+ *pSt_BTCreator = {};
6060 // 申请内存
61- st_BTCreator.pStl_ListNode = new list<BTORRENT_PARSEMAP>;
62- st_BTCreator.pStl_ListSeeds = new list<BTORRENT_PARSEMAP>;
63- st_BTCreator.pStl_ListTracker = new list<BTORRENT_PARSEMAP>;
64-
65- if ((NULL == st_BTCreator.pStl_ListNode ) || (NULL == st_BTCreator.pStl_ListSeeds ) || (NULL == st_BTCreator.pStl_ListTracker ))
61+ pSt_BTCreator->pStl_ListNode = new list<BTORRENT_PARSEMAP>;
62+ pSt_BTCreator->pStl_ListSeeds = new list<BTORRENT_PARSEMAP>;
63+ pSt_BTCreator->pStl_ListTracker = new list<BTORRENT_PARSEMAP>;
64+ if ((NULL == pSt_BTCreator->pStl_ListNode ) || (NULL == pSt_BTCreator->pStl_ListSeeds ) || (NULL == pSt_BTCreator->pStl_ListTracker ))
6665 {
6766 BTDload_IsErrorOccur = true ;
6867 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_INIT_MALLOC;
69- return false ;
68+ return NULL ;
7069 }
7170
72- st_BTCreator.m_nPieceSize = nPieceSize;
73- _tcsxcpy (st_BTCreator.tszBTPath , lpszBTPath);
74-
75- BaseLib_Handle_Create (pxhToken);
76- st_Locker.lock ();
77- stl_MapBTCreator.insert (make_pair (*pxhToken, st_BTCreator));
78- st_Locker.unlock ();
79- return true ;
71+ pSt_BTCreator->m_nPieceSize = nPieceSize;
72+ _tcsxcpy (pSt_BTCreator->tszBTPath , lpszBTPath);
73+ return pSt_BTCreator;
8074}
8175/* *******************************************************************
8276函数名称:BTorrent_Creator_AddNode
@@ -101,7 +95,7 @@ bool CBTorrent_Creator::BTorrent_Creator_Init(XNETHANDLE* pxhToken, LPCXSTR lpsz
10195 意思:是否成功
10296备注:
10397*********************************************************************/
104- bool CBTorrent_Creator::BTorrent_Creator_AddNode (XNETHANDLE xhToken, LPCXSTR lpszAddr, int nIndex)
98+ bool CBTorrent_Creator::BTorrent_Creator_AddNode (XHANDLE xhToken, LPCXSTR lpszAddr, int nIndex)
10599{
106100 BTDload_IsErrorOccur = false ;
107101
@@ -111,22 +105,19 @@ bool CBTorrent_Creator::BTorrent_Creator_AddNode(XNETHANDLE xhToken, LPCXSTR lps
111105 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_NODE_PARAMENT;
112106 return false ;
113107 }
114- st_Locker.lock_shared ();
115- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::const_iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
116- if (stl_MapIterator == stl_MapBTCreator.end ())
108+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
109+ if (NULL == pSt_BTCreator)
117110 {
118111 BTDload_IsErrorOccur = true ;
119112 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_NODE_NOTFOUND;
120- st_Locker.unlock_shared ();
121113 return false ;
122114 }
123115 BTORRENT_PARSEMAP st_BTInfo;
124116 memset (&st_BTInfo, ' \0 ' , sizeof (BTORRENT_PARSEMAP));
125117
126118 st_BTInfo.nValue = nIndex;
127119 _tcsxcpy (st_BTInfo.tszValue , lpszAddr);
128- stl_MapIterator->second .pStl_ListNode ->push_back (st_BTInfo);
129- st_Locker.unlock_shared ();
120+ pSt_BTCreator->pStl_ListNode ->push_back (st_BTInfo);
130121 return true ;
131122}
132123/* *******************************************************************
@@ -152,7 +143,7 @@ bool CBTorrent_Creator::BTorrent_Creator_AddNode(XNETHANDLE xhToken, LPCXSTR lps
152143 意思:是否成功
153144备注:
154145*********************************************************************/
155- bool CBTorrent_Creator::BTorrent_Creator_AddTracker (XNETHANDLE xhToken, LPCXSTR lpszAddr, int nIndex)
146+ bool CBTorrent_Creator::BTorrent_Creator_AddTracker (XHANDLE xhToken, LPCXSTR lpszAddr, int nIndex)
156147{
157148 BTDload_IsErrorOccur = false ;
158149
@@ -162,22 +153,19 @@ bool CBTorrent_Creator::BTorrent_Creator_AddTracker(XNETHANDLE xhToken, LPCXSTR
162153 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_TRACKER_PARAMENT;
163154 return false ;
164155 }
165- st_Locker.lock_shared ();
166- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::const_iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
167- if (stl_MapIterator == stl_MapBTCreator.end ())
156+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
157+ if (NULL == pSt_BTCreator)
168158 {
169159 BTDload_IsErrorOccur = true ;
170160 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_TRACKER_NOTFOUND;
171- st_Locker.unlock_shared ();
172161 return false ;
173162 }
174163 BTORRENT_PARSEMAP st_BTInfo;
175164 memset (&st_BTInfo, ' \0 ' , sizeof (BTORRENT_PARSEMAP));
176165
177166 st_BTInfo.nValue = nIndex;
178167 _tcsxcpy (st_BTInfo.tszValue , lpszAddr);
179- stl_MapIterator->second .pStl_ListTracker ->push_back (st_BTInfo);
180- st_Locker.unlock_shared ();
168+ pSt_BTCreator->pStl_ListTracker ->push_back (st_BTInfo);
181169 return true ;
182170}
183171/* *******************************************************************
@@ -203,7 +191,7 @@ bool CBTorrent_Creator::BTorrent_Creator_AddTracker(XNETHANDLE xhToken, LPCXSTR
203191 意思:是否成功
204192备注:
205193*********************************************************************/
206- bool CBTorrent_Creator::BTorrent_Creator_AddSeeds (XNETHANDLE xhToken, LPCXSTR lpszAddr, bool bSingle)
194+ bool CBTorrent_Creator::BTorrent_Creator_AddSeeds (XHANDLE xhToken, LPCXSTR lpszAddr, bool bSingle)
207195{
208196 BTDload_IsErrorOccur = false ;
209197
@@ -213,22 +201,19 @@ bool CBTorrent_Creator::BTorrent_Creator_AddSeeds(XNETHANDLE xhToken, LPCXSTR lp
213201 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_SEEDS_PARAMENT;
214202 return false ;
215203 }
216- st_Locker.lock_shared ();
217- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::const_iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
218- if (stl_MapIterator == stl_MapBTCreator.end ())
204+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
205+ if (NULL == pSt_BTCreator)
219206 {
220207 BTDload_IsErrorOccur = true ;
221208 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_SEEDS_NOTFOUND;
222- st_Locker.unlock_shared ();
223209 return false ;
224210 }
225211 BTORRENT_PARSEMAP st_BTInfo;
226212 memset (&st_BTInfo, ' \0 ' , sizeof (BTORRENT_PARSEMAP));
227213
228214 st_BTInfo.nValue = bSingle;
229215 _tcsxcpy (st_BTInfo.tszValue , lpszAddr);
230- stl_MapIterator->second .pStl_ListSeeds ->push_back (st_BTInfo);
231- st_Locker.unlock_shared ();
216+ pSt_BTCreator->pStl_ListSeeds ->push_back (st_BTInfo);
232217 return true ;
233218}
234219/* *******************************************************************
@@ -259,7 +244,7 @@ bool CBTorrent_Creator::BTorrent_Creator_AddSeeds(XNETHANDLE xhToken, LPCXSTR lp
259244 意思:是否成功
260245备注:
261246*********************************************************************/
262- bool CBTorrent_Creator::BTorrent_Creator_SetInfo (XNETHANDLE xhToken, LPCXSTR lpszCreator, LPCXSTR lpszComment /* = NULL */ , LPCXSTR lpszCertBuffer /* = NULL */ )
247+ bool CBTorrent_Creator::BTorrent_Creator_SetInfo (XHANDLE xhToken, LPCXSTR lpszCreator, LPCXSTR lpszComment /* = NULL */ , LPCXSTR lpszCertBuffer /* = NULL */ )
263248{
264249 BTDload_IsErrorOccur = false ;
265250
@@ -269,25 +254,22 @@ bool CBTorrent_Creator::BTorrent_Creator_SetInfo(XNETHANDLE xhToken, LPCXSTR lps
269254 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_INFO_PARAMENT;
270255 return false ;
271256 }
272- st_Locker.lock_shared ();
273- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
274- if (stl_MapIterator == stl_MapBTCreator.end ())
257+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
258+ if (NULL == pSt_BTCreator)
275259 {
276260 BTDload_IsErrorOccur = true ;
277261 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_INFO_NOTFOUND;
278- st_Locker.unlock_shared ();
279262 return false ;
280263 }
281- _tcsxcpy (stl_MapIterator-> second . tszCreate , lpszCreator);
264+ _tcsxcpy (pSt_BTCreator-> tszCreate , lpszCreator);
282265 if (NULL != lpszComment)
283266 {
284- _tcsxcpy (stl_MapIterator-> second . tszComment , lpszComment);
267+ _tcsxcpy (pSt_BTCreator-> tszComment , lpszComment);
285268 }
286269 if (NULL != lpszCertBuffer)
287270 {
288- _tcsxcpy (stl_MapIterator-> second . tszPEMCert , lpszCertBuffer);
271+ _tcsxcpy (pSt_BTCreator-> tszPEMCert , lpszCertBuffer);
289272 }
290- st_Locker.unlock_shared ();
291273 return true ;
292274}
293275/* *******************************************************************
@@ -318,7 +300,7 @@ bool CBTorrent_Creator::BTorrent_Creator_SetInfo(XNETHANDLE xhToken, LPCXSTR lps
318300 意思:是否成功
319301备注:
320302*********************************************************************/
321- bool CBTorrent_Creator::BTorrent_Creator_GetTorrent (XNETHANDLE xhToken, LPCXSTR lpszBTFile /* = NULL */ , XCHAR* ptszMsgBuffer /* = NULL */ , int * pInt_MsgLen /* = NULL */ )
303+ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent (XHANDLE xhToken, LPCXSTR lpszBTFile /* = NULL */ , XCHAR* ptszMsgBuffer /* = NULL */ , int * pInt_MsgLen /* = NULL */ )
322304{
323305 BTDload_IsErrorOccur = false ;
324306
@@ -328,13 +310,11 @@ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent(XNETHANDLE xhToken, LPCXSTR
328310 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_FILE_PARAMENT;
329311 return false ;
330312 }
331- st_Locker.lock_shared ();
332- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
333- if (stl_MapIterator == stl_MapBTCreator.end ())
313+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
314+ if (NULL == pSt_BTCreator)
334315 {
335316 BTDload_IsErrorOccur = true ;
336317 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_FILE_NOTFOUND;
337- st_Locker.unlock_shared ();
338318 return false ;
339319 }
340320#if 1 == _XENGIEN_STORAGE_BUILDSWITCH_BTORRENT
@@ -343,34 +323,34 @@ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent(XNETHANDLE xhToken, LPCXSTR
343323 // 种子的标示
344324 m_BTFlags |= lt::create_torrent::modification_time;
345325 // 解析文件
346- lt::add_files (m_BTFile, stl_MapIterator-> second . tszBTPath , m_BTFlags);
326+ lt::add_files (m_BTFile, pSt_BTCreator-> tszBTPath , m_BTFlags);
347327 if (m_BTFile.num_files () <= 0 )
348328 {
349329 BTDload_IsErrorOccur = true ;
350330 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_FILE_PARSE;
351331 return false ;
352332 }
353333 // 创建BT种子,种子文件解析的数据,块大小,附加信息,种子标志
354- lt::create_torrent m_BTCreator (m_BTFile, stl_MapIterator-> second . m_nPieceSize , m_BTFlags);
334+ lt::create_torrent m_BTCreator (m_BTFile, pSt_BTCreator-> m_nPieceSize , m_BTFlags);
355335 // 给创建起赋值
356- m_BTCreator.set_creator (stl_MapIterator-> second . tszCreate );
357- m_BTCreator.set_comment (stl_MapIterator-> second . tszComment );
358- m_BTCreator.set_root_cert (stl_MapIterator-> second . tszPEMCert );
336+ m_BTCreator.set_creator (pSt_BTCreator-> tszCreate );
337+ m_BTCreator.set_comment (pSt_BTCreator-> tszComment );
338+ m_BTCreator.set_root_cert (pSt_BTCreator-> tszPEMCert );
359339 // 节点添加
360- list<BTORRENT_PARSEMAP>::const_iterator stl_ListNodeIterator = stl_MapIterator-> second . pStl_ListNode ->begin ();
361- for (; stl_ListNodeIterator != stl_MapIterator-> second . pStl_ListNode ->end (); stl_MapIterator++)
340+ list<BTORRENT_PARSEMAP>::const_iterator stl_ListNodeIterator = pSt_BTCreator-> pStl_ListNode ->begin ();
341+ for (; stl_ListNodeIterator != pSt_BTCreator-> pStl_ListNode ->end (); stl_MapIterator++)
362342 {
363343 m_BTCreator.add_node (make_pair (stl_ListNodeIterator->tszValue , stl_ListNodeIterator->nValue ));
364344 }
365345 // 添加服务
366- list<BTORRENT_PARSEMAP>::const_iterator stl_ListTrackerIterator = stl_MapIterator-> second . pStl_ListTracker ->begin ();
367- for (; stl_ListTrackerIterator != stl_MapIterator-> second . pStl_ListTracker ->end (); stl_ListTrackerIterator++)
346+ list<BTORRENT_PARSEMAP>::const_iterator stl_ListTrackerIterator = pSt_BTCreator-> pStl_ListTracker ->begin ();
347+ for (; stl_ListTrackerIterator != pSt_BTCreator-> pStl_ListTracker ->end (); stl_ListTrackerIterator++)
368348 {
369349 m_BTCreator.add_tracker (stl_ListTrackerIterator->tszValue , stl_ListTrackerIterator->nValue );
370350 }
371351 // 添加SEED服务
372- list<BTORRENT_PARSEMAP>::const_iterator stl_ListSeedIterator = stl_MapIterator-> second . pStl_ListSeeds ->begin ();
373- for (; stl_ListSeedIterator != stl_MapIterator-> second . pStl_ListSeeds ->end (); stl_ListSeedIterator++)
352+ list<BTORRENT_PARSEMAP>::const_iterator stl_ListSeedIterator = pSt_BTCreator-> pStl_ListSeeds ->begin ();
353+ for (; stl_ListSeedIterator != pSt_BTCreator-> pStl_ListSeeds ->end (); stl_ListSeedIterator++)
374354 {
375355 // 添加URL种子,单文件为HTTP的URL,多文件为SEED
376356 if (stl_ListSeedIterator->nValue )
@@ -395,7 +375,6 @@ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent(XNETHANDLE xhToken, LPCXSTR
395375 {
396376 BTDload_IsErrorOccur = true ;
397377 BTDload_dwErrorCode = ERROR_STORAGE_MODULE_BTORRENT_CREATOR_FILE_FAILED;
398- st_Locker.unlock_shared ();
399378 return false ;
400379 }
401380 m_FStream.write (stl_ListTorrent.data (), stl_ListTorrent.size ());
@@ -408,8 +387,6 @@ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent(XNETHANDLE xhToken, LPCXSTR
408387 memcpy (ptszMsgBuffer, stl_ListTorrent.data (), *pInt_MsgLen);
409388 }
410389#endif
411- st_Locker.unlock_shared ();
412-
413390 return true ;
414391}
415392/* *******************************************************************
@@ -425,28 +402,24 @@ bool CBTorrent_Creator::BTorrent_Creator_GetTorrent(XNETHANDLE xhToken, LPCXSTR
425402 意思:是否成功
426403备注:
427404*********************************************************************/
428- bool CBTorrent_Creator::BTorrent_Creator_Destory (XNETHANDLE xhToken)
405+ bool CBTorrent_Creator::BTorrent_Creator_Destory (XHANDLE xhToken)
429406{
430407 BTDload_IsErrorOccur = false ;
431408
432- st_Locker.lock ();
433- unordered_map<XNETHANDLE, BTORRENT_CREATORINFO>::iterator stl_MapIterator = stl_MapBTCreator.find (xhToken);
434- if (stl_MapIterator != stl_MapBTCreator.end ())
409+ BTORRENT_CREATORINFO* pSt_BTCreator = (BTORRENT_CREATORINFO*)xhToken;
410+ if (NULL != pSt_BTCreator)
435411 {
436- stl_MapIterator->second .pStl_ListNode ->clear ();
437- stl_MapIterator->second .pStl_ListSeeds ->clear ();
438- stl_MapIterator->second .pStl_ListTracker ->clear ();
439-
440- delete stl_MapIterator->second .pStl_ListNode ;
441- delete stl_MapIterator->second .pStl_ListSeeds ;
442- delete stl_MapIterator->second .pStl_ListTracker ;
412+ pSt_BTCreator->pStl_ListNode ->clear ();
413+ pSt_BTCreator->pStl_ListSeeds ->clear ();
414+ pSt_BTCreator->pStl_ListTracker ->clear ();
443415
444- stl_MapIterator-> second . pStl_ListNode = NULL ;
445- stl_MapIterator-> second . pStl_ListSeeds = NULL ;
446- stl_MapIterator-> second . pStl_ListTracker = NULL ;
416+ delete pSt_BTCreator-> pStl_ListNode ;
417+ delete pSt_BTCreator-> pStl_ListSeeds ;
418+ delete pSt_BTCreator-> pStl_ListTracker ;
447419
448- stl_MapBTCreator.erase (stl_MapIterator);
420+ pSt_BTCreator->pStl_ListNode = NULL ;
421+ pSt_BTCreator->pStl_ListSeeds = NULL ;
422+ pSt_BTCreator->pStl_ListTracker = NULL ;
449423 }
450- st_Locker.unlock ();
451424 return true ;
452425}
0 commit comments