CMGDK r49-rc2
K:/CMGDKv18/SDK/Include/hgl/HAC.H
浏览该文件的文档。
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*NeNnx[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-Nv^ԏ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[eNpencvAmYgR}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*NeNnx[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-Nv^ԏ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[eNpencvAmYgR}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   penccYg*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  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义