CMGDK r49-rc2
|
00001 # i f n d e f H G L _ H A C _ I N C L U D E 00002 00003 # d e f i n e H G L _ H A C _ I N C L U D E 00004 00005 00006 00007 # i n c l u d e < h g l / t h r e a d / T h r e a d . H > 00008 00009 # i n c l u d e < h g l / t y p e / L i s t . H > 00010 00011 # i n c l u d e < h g l / t y p e / W i d e S t r i n g . H > 00012 00013 # i n c l u d e < h g l / C o m p O p e r a t o r . H > 00014 00015 n a m e s p a c e h g l 00016 00017 { 00018 00019 c l a s s S e m a p h o r e ; 00020 00021 c l a s s S t r e a m ; 00022 00023 c l a s s M e m S t r e a m ; 00024 00025 c l a s s F i l e S t r e a m ; 00026 00027 00028 00029 e n u m H a c S t a t u s / / : u i n t 00030 00031 { 00032 00033 h s N o n e = 0 , / / *gw 00034 00035 00036 00037 h s N o t F i n d , / / l g~b0R 00038 00039 00040 00041 h s O p e n E r r o r , / / Sb _ 00042 00043 00044 00045 h s R e a d , / / ck(WS 00046 00047 00048 00049 h s R e a d E r r o r , / / S 00050 00051 00052 00053 h s E n d / / [b~_g 00054 00055 } ; 00056 00057 00058 00059 / * * 00060 00061 * H A C SeN/ec{|, SN[ N*NP[vU_NH A C e_, (uNeO _S0< b r > 00062 00063 * (W6R\OSLHrevc\te*NvU_SbS:N. H A C sSS. < b r > 00064 00065 * SY[ 00066 N/ecH A C - 2 vH A C eN0< b r > 00067 00068 * / 00069 00070 c l a s s H A C : p u b l i c T h r e a d / / / H A C - 3 SeN/ec{| 00071 00072 { 00073 00074 f r i e n d H A C * O p e n H A C ( c o n s t w c h a r _ t * ) ; 00075 00076 00077 00078 p r i v a t e : 00079 00080 00081 00082 s t r u c t H a c L o a d I t e m 00083 00084 { 00085 00086 T h r e a d M u t e x l o c k ; 00087 00088 00089 00090 v o i d * f o l d e r ; 00091 00092 W i d e S t r i n g f i l e n a m e ; 00093 00094 00095 00096 v o i d * f i l e ; 00097 00098 i n t s t a r t ; 00099 00100 i n t l e n g t h ; 00101 00102 00103 00104 b o o l j o i n _ d a t a ; 00105 00106 00107 00108 v o i d * d a t a ; 00109 00110 00111 00112 H a c S t a t u s s t a t u s ; 00113 00114 00115 00116 H a c L o a d I t e m ( ) 00117 00118 { 00119 00120 d a t a = N U L L ; 00121 00122 } 00123 00124 00125 00126 ~ H a c L o a d I t e m ( ) 00127 00128 { 00129 00130 l o c k . U n l o c k ( ) ; 00131 00132 00133 00134 i f ( ! j o i n _ d a t a & & d a t a ) 00135 00136 d e l e t e [ ] d a t a ; 00137 00138 } 00139 00140 00141 00142 v o i d C h a n g e S t a t u s ( H a c S t a t u s h s ) 00143 00144 { 00145 00146 l o c k . L o c k ( ) ; 00147 00148 s t a t u s = h s ; 00149 00150 l o c k . U n l o c k ( ) ; 00151 00152 } 00153 00154 } ; 00155 00156 00157 00158 S e m a p h o r e * s e m ; 00159 00160 T h r e a d M u t e x q u i t _ l o c k ; 00161 00162 00163 00164 b o o l a l l _ c l e a r ; 00165 00166 00167 00168 O b j e c t L i s t < H a c L o a d I t e m > l o a d _ q u e u e ; / / R}R 00169 00170 O b j e c t L i s t < H a c L o a d I t e m > f i n _ q u e u e ; / / [bR 00171 00172 00173 00174 b o o l E x e c u t e ( ) ; 00175 00176 00177 00178 v o i d * _ L o a d A c q u i r e ( v o i d * , c o n s t w c h a r _ t * , v o i d * , v o i d * , i n t , i n t ) ; 00179 00180 00181 00182 v i r t u a l b o o l L o a d F i l e P a r t ( v o i d * , u i n t , u i n t , v o i d * ) = 0 ; 00183 00184 00185 00186 p r o t e c t e d : 00187 00188 00189 00190 v o i d C l o s e T h r e a d ( ) ; 00191 00192 00193 00194 p u b l i c : 00195 00196 00197 00198 H A C ( ) ; / / / < ,g{|g Qpe 00199 00200 v i r t u a l ~ H A C ( ) ; / / / < ,g{|ggQpe 00201 00202 00203 00204 / * * 00205 00206 * g~b N*NeNnx[vQ/f&TX[(W 00207 00208 * @ p a r a m f i l e n a m e g~bveN 00209 Ty 00210 00211 * @ r e t u r n eN/f&TX[(W 00212 00213 * / 00214 00215 v i r t u a l b o o l F i n d F i l e ( c o n s t w c h a r _ t * f i l e n a m e ) = 0 ; / / / < g~b N*NeN 00216 00217 00218 00219 / * * 00220 00221 * R} N*NeN0RAm-Nv^ԏVُ*NAm 00222 00223 * @ p a r a m f i l e n a m e R}veN 00224 Ty 00225 00226 * @ p a r a m l o a d _ t o _ m e m o r y /f&TR}0RQX[ 00227 00228 * @ r e t u r n OX[eNpencvAmYgR}1Y%ԏVN U L L 00229 00230 * / 00231 00232 v i r t u a l S t r e a m * L o a d F i l e ( c o n s t w c h a r _ t * f i l e n a m e , b o o l l o a d _ t o _ m e m o r y = f a l s e ) = 0 ; / / / < R} N*NeN0RAm 00233 00234 00235 00236 / * * 00237 00238 * R} N*NeN0RQX[-N 00239 00240 * @ p a r a m f i l e n a m e R}veN 00241 Ty 00242 00243 * @ p a r a m d a t a (uegOX[pencvQX[WW 00244 00245 * @ p a r a m s i z e QX[WWv'Y\NSR}bRTeNv'Y\ 00246 00247 * @ r e t u r n /f&TR}bR 00248 00249 * / 00250 00251 v i r t u a l b o o l L o a d F i l e ( c o n s t w c h a r _ t * f i l e n a m e , v o i d * * d a t a , i n t * s i z e ) = 0 ; / / / < R} N*NeN0Rc[QX[WW 00252 00253 00254 00255 p u b l i c : 00256 00257 00258 00259 / * * 00260 00261 * S_ N*NvU_ 00262 00263 * @ p a r a m p a t h n a m e vU_ 00264 Ty 00265 00266 * @ r e t u r n vU_c, ԏVN U L L h:y1Y% 00267 00268 * / 00269 00270 v i r t u a l v o i d * G e t F o l d e r ( c o n s t w c h a r _ t * p a t h n a m e ) = 0 ; / / / < S_ N*NvU_ 00271 00272 00273 00274 / * * 00275 00276 * S_vU_QveNpeϑ 00277 00278 * @ p a r a m p a t h _ p o i n t e r vU_c 00279 00280 * @ r e t u r n eNpeϑ 00281 00282 * / 00283 00284 v i r t u a l i n t G e t F i l e C o u n t ( v o i d * p a t h _ p o i n t e r ) = 0 ; / / / < S_vU_NveNpeϑ 00285 00286 00287 00288 / * * 00289 00290 * S_vU_Qc[v,{i n d e x *NeNvOo` 00291 00292 * @ p a r a m p a t h _ p o i n t e r vU_c 00293 00294 * @ p a r a m i n d e x SveN"}_ 00295 00296 * @ p a r a m n a m e SQveN 00297 T 00298 00299 * @ p a r a m s i z e SQveN^ 00300 00301 * @ r e t u r n /f&TbR 00302 00303 * / 00304 00305 v i r t u a l b o o l G e t F i l e I n f o ( v o i d * p a t h _ p o i n t e r , i n t i n d e x , W i d e S t r i n g & n a m e , i n t & s i z e ) = 0 ; / / / < S_eNOo` 00306 00307 00308 00309 / * * 00310 00311 * (Wc[vU_QS_ N*NeN 00312 00313 * @ p a r a m p a t h _ p o i n t e r vU_c 00314 00315 * @ p a r a m f i l e n a m e eN 00316 T 00317 00318 * @ r e t u r n eNc 00319 00320 * / 00321 00322 v i r t u a l v o i d * G e t F i l e ( v o i d * p a t h _ p o i n t e r , c o n s t w c h a r _ t * f i l e n a m e , i n t * f i l e l e n g t h = 0 ) = 0 ; 00323 00324 00325 00326 / * * 00327 00328 * S_ N*NeN 00329 00330 * @ p a r a m f i l e n a m e eN 00331 T 00332 00333 * @ r e t u r n eNc 00334 00335 * / 00336 00337 v i r t u a l v o i d * G e t F i l e ( c o n s t w c h a r _ t * f i l e n a m e , i n t * f i l e l e n g t h = 0 ) = 0 ; 00338 00339 00340 00341 p u b l i c : 00342 00343 00344 00345 / * * 00346 00347 * g~b N*NeNnx[vQ/f&TX[(W 00348 00349 * @ p a r a m p a t h _ p o i n t e r vU_c 00350 00351 * @ p a r a m f i l e n a m e g~bveN 00352 Ty 00353 00354 * @ r e t u r n eN/f&TX[(W 00355 00356 * / 00357 00358 v i r t u a l b o o l F i n d F i l e ( v o i d * p a t h _ p o i n t e r , c o n s t w c h a r _ t * f i l e n a m e ) = 0 ; / / / < g~b N*NeN 00359 00360 00361 00362 / * * 00363 00364 * R} N*NeN0RAm-Nv^ԏVُ*NAm 00365 00366 * @ p a r a m p a t h _ p o i n t e r vU_c 00367 00368 * @ p a r a m f i l e n a m e R}veN 00369 Ty 00370 00371 * @ p a r a m l o a d _ t o _ m e m o r y /f&TR}0RQX[ 00372 00373 * @ r e t u r n OX[eNpencvAmYgR}1Y%ԏVN U L L 00374 00375 * / 00376 00377 v i r t u a l S t r e a m * L o a d F i l e F r o m ( v o i d * p a t h _ p o i n t e r , c o n s t w c h a r _ t * f i l e n a m e , b o o l l o a d _ t o _ m e m o r y = f a l s e ) = 0 ; / / / < R} N*NeN0RAm 00378 00379 00380 00381 / * * 00382 00383 * R} N*NeN0RQX[-N 00384 00385 * @ p a r a m p a t h _ p o i n t e r vU_c 00386 00387 * @ p a r a m f i l e n a m e R}veN 00388 Ty 00389 00390 * @ p a r a m d a t a (uegOX[pencvQX[WW 00391 00392 * @ p a r a m s i z e QX[WWv'Y\NSR}bRTeNv'Y\ 00393 00394 * @ r e t u r n /f&TR}bR 00395 00396 * / 00397 00398 v i r t u a l b o o l L o a d F i l e F r o m ( v o i d * p a t h _ p o i n t e r , c o n s t w c h a r _ t * f i l e n a m e , v o i d * * d a t a , i n t * s i z e ) = 0 ; / / / < R} N*NeN0Rc[QX[WW 00399 00400 00401 00402 p u b l i c : 00403 00404 00405 00406 / * * 00407 00408 * _ekBlS N*NeNvc[R0RQX[ 00409 00410 * @ p a r a m f i l e n a m e R}veN 00411 Ty 00412 00413 * @ p a r a m d a t a R}TpencX[>e0W@W 00414 00415 * @ p a r a m s t a r t R}penc(WeN-NvwY0W@W 00416 00417 * @ p a r a m l e n g t h R}pencv^ 00418 00419 * @ r e t u r n eNc 00420 00421 * / 00422 00423 v o i d * L o a d A c q u i r e ( c o n s t w c h a r _ t * f i l e n a m e , v o i d * d a t a = 0 , i n t s t a r t = 0 , i n t l e n g t h = 0 ) / / / < _ekBlS N*NeN 00424 00425 { r e t u r n _ L o a d A c q u i r e ( N U L L , f i l e n a m e , N U L L , d a t a , s t a r t , l e n g t h ) ; } 00426 00427 00428 00429 / * * 00430 00431 * _ekBlS N*NeNvc[R0RQX[ 00432 00433 * @ p a r a m p a t h _ p o i n t e r vU_c 00434 00435 * @ p a r a m f i l e n a m e R}veN 00436 Ty 00437 00438 * @ p a r a m d a t a R}TpencX[>e0W@W 00439 00440 * @ p a r a m s t a r t R}penc(WeN-NvwY0W@W 00441 00442 * @ p a r a m l e n g t h R}pencv^ 00443 00444 * @ r e t u r n eNc 00445 00446 * / 00447 00448 v o i d * L o a d A c q u i r e ( v o i d * p a t h _ p o i n t e r , c o n s t w c h a r _ t * f i l e n a m e , v o i d * d a t a = 0 , i n t s t a r t = 0 , i n t l e n g t h = 0 ) / / / < _ekBlS N*NeN 00449 00450 { r e t u r n _ L o a d A c q u i r e ( p a t h _ p o i n t e r , f i l e n a m e , N U L L , d a t a , s t a r t , l e n g t h ) ; } 00451 00452 00453 00454 / * * 00455 00456 * _ekBlS N*NeNvc[R0RQX[ 00457 00458 * @ p a r a m f i l e _ p o i n t e r R}veNc 00459 00460 * @ p a r a m d a t a R}TpencX[>e0W@W 00461 00462 * @ p a r a m s t a r t R}penc(WeN-NvwY0W@W 00463 00464 * @ p a r a m l e n g t h R}pencv^ 00465 00466 * @ r e t u r n eNc 00467 00468 * / 00469 00470 v o i d * L o a d A c q u i r e ( v o i d * f i l e _ p o i n t e r , v o i d * d a t a = 0 , i n t s t a r t = 0 , i n t l e n g t h = 0 ) / / / < _ekBlS N*NeN 00471 00472 { r e t u r n _ L o a d A c q u i r e ( N U L L , N U L L , f i l e _ p o i n t e r , d a t a , s t a r t , l e n g t h ) ; } 00473 00474 00475 00476 / * * 00477 00478 * S_ N*NeNSvs gr` 00479 00480 * @ p a r a m f i l e _ p o i n t e r eNc 00481 00482 * @ r e t u r n r` 00483 00484 * / 00485 00486 H a c S t a t u s G e t S t a t u s ( v o i d * ) ; 00487 00488 00489 00490 / * * 00491 00492 * S_ N*NBlvpenc^ 00493 00494 * @ p a r a m f i l e _ p o i n t e r eNc 00495 00496 * / 00497 00498 i n t G e t S i z e ( v o i d * ) ; 00499 00500 00501 00502 / * * 00503 00504 * S_ N*NeNvpenc( YgS[bv) 00505 00506 * @ p a r a m f i l e _ p o i n t e r eNc 00507 00508 * @ r e t u r n penccYg*g[bԏVN U L L 00509 00510 * / 00511 00512 v o i d * G e t D a t a ( v o i d * ) ; 00513 00514 00515 00516 / * * 00517 00518 * ndeN 00519 00520 * @ p a r a m f i l e _ p o i n t e r eNc 00521 00522 * / 00523 00524 v o i d C l e a r ( v o i d * ) ; 00525 00526 00527 00528 / * * 00529 00530 * nd@b gck(WR}veN 00531 00532 * / 00533 00534 v o i d C l e a r ( ) ; 00535 00536 } ; / / c l a s s H A C 00537 00538 00539 00540 H A C * O p e n H A C ( c o n s t w c h a r _ t * n a m e = 0 ) ; / / / < Sb _ N*N. H A C eN, b/f9hnc_R^ N*NZbvH A C sX 00541 00542 00543 00544 / * * 00545 00546 * H A C Dn"}_ 00547 00548 * / 00549 00550 s t r u c t H a c R e s I n d e x 00551 00552 { 00553 00554 H A C * h a c ; 00555 00556 W i d e S t r i n g p a t h ; 00557 00558 W i d e S t r i n g f i l e ; 00559 00560 00561 00562 H a c R e s I n d e x ( ) 00563 00564 { 00565 00566 h a c = N U L L ; 00567 00568 } 00569 00570 00571 00572 H a c R e s I n d e x ( H A C * h , c o n s t W i d e S t r i n g & p , c o n s t W i d e S t r i n g & f ) 00573 00574 { 00575 00576 h a c = h ; 00577 00578 p a t h = p ; 00579 00580 f i l e = f ; 00581 00582 } 00583 00584 00585 00586 c o n s t i n t c o m p ( c o n s t H a c R e s I n d e x & s r i ) c o n s t 00587 00588 { 00589 00590 i f ( h a c > s r i . h a c ) r e t u r n ( 1 ) ; 00591 00592 i f ( h a c < s r i . h a c ) r e t u r n ( - 1 ) ; 00593 00594 00595 00596 i f ( p a t h > s r i . p a t h ) r e t u r n ( 1 ) ; 00597 00598 i f ( p a t h < s r i . p a t h ) r e t u r n ( - 1 ) ; 00599 00600 00601 00602 i f ( f i l e > s r i . f i l e ) r e t u r n ( 1 ) ; 00603 00604 i f ( f i l e < s r i . f i l e ) r e t u r n ( - 1 ) ; 00605 00606 00607 00608 r e t u r n ( 0 ) ; 00609 00610 } 00611 00612 00613 00614 C o m p O p e r a t o r ( c o n s t H a c R e s I n d e x & , c o m p ) ; 00615 00616 } ; 00617 00618 } / / n a m e s p a c e h g l 00619 00620 # e n d i f / / H G L _ H A C _ I N C L U D E 00621 00622