CMGDK r49-rc2
|
00001 # i f n d e f H G L _ M U L T I _ T H R E A D _ R I N G _ B U F F E R _ I N C L U D E 00002 00003 # d e f i n e H G L _ M U L T I _ T H R E A D _ R I N G _ B U F F E R _ 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 M u t e x . H > 00008 00009 n a m e s p a c e h g l 00010 00011 { 00012 00013 / * * 00014 00015 * Y~zsb_pencAm, (uNebQv`QNS(WY~z^(u-NTeNQv`Q0 00016 00017 * / 00018 00019 c l a s s R i n g B u f f e r : p r o t e c t e d T h r e a d M u t e x / / / Y~zsb_pencAm 00020 00021 { 00022 00023 p r o t e c t e d : 00024 00025 00026 00027 c h a r * b u f f e r ; 00028 00029 i n t b u f f e r _ s i z e ; 00030 00031 00032 00033 i n t r e a d _ p o s , w r i t e _ p o s ; 00034 00035 00036 00037 i n t r e a d _ c u r , w r i t e _ c u r ; 00038 00039 i n t r e a d _ o f f , w r i t e _ o f f ; 00040 00041 i n t r e a d _ m a x , w r i t e _ m a x ; 00042 00043 i n t r e a d _ c o u n t , w r i t e _ c o u n t ; 00044 00045 00046 00047 b o o l r e a d _ p e e k ; 00048 00049 00050 00051 p r o t e c t e d : 00052 00053 00054 00055 v o i d C l a m p P o s i t i o n ( ) ; 00056 00057 00058 00059 i n t _ G e t R e a d S i z e ( ) c o n s t { r e t u r n w r i t e _ p o s - r e a d _ p o s ; } 00060 00061 i n t _ G e t W r i t e S i z e ( ) c o n s t { r e t u r n b u f f e r _ s i z e - ( w r i t e _ p o s - r e a d _ p o s ) ; } 00062 00063 00064 00065 i n t _ S a f e W r i t e S t a r t ( ) ; 00066 00067 i n t _ S a f e R e a d S t a r t ( b o o l ) ; 00068 00069 00070 00071 i n t _ W r i t e ( c o n s t v o i d * , i n t ) ; 00072 00073 i n t _ R e a d ( v o i d * , i n t , b o o l ) ; 00074 00075 00076 00077 p u b l i c : 00078 00079 00080 00081 R i n g B u f f e r ( i n t ) ; / / / < ,g{|g Qpe 00082 00083 v i r t u a l ~ R i n g B u f f e r ( ) ; / / / < ,g{|ggQpe 00084 00085 00086 00087 c o n s t i n t G e t B u f f e r S i z e ( ) c o n s t { r e t u r n b u f f e r _ s i z e ; } / / / < dSQ:S^ 00088 00089 00090 00091 v o i d C l e a r ( ) ; / / / < ndte*NQ:S 00092 00093 v o i d S a f e C l e a r ( ) ; / / / < [hQndte*NQ:S 00094 00095 00096 00097 p u b l i c : / / QYtQpe 00098 00099 00100 00101 i n t W r i t e S t a r t ( ) ; / / / < _YQeQ 00102 00103 i n t G e t W r i t e S i z e ( ) c o n s t { r e t u r n w r i t e _ m a x ; } / / / < S_SQeQpenc^ 00104 00105 i n t W r i t e ( c o n s t v o i d * , i n t ) ; / / / < TAm-NQeQpenc 00106 00107 i n t W r i t e E n d ( ) ; / / / < ~_gQeQ 00108 00109 00110 00111 i n t S a f e T r y W r i t e S t a r t ( ) ; / / / < [hQ\Ջ _YQeQ 00112 00113 i n t S a f e W r i t e S t a r t ( ) ; / / / < [hQ _YQeQ 00114 00115 i n t S a f e W r i t e E n d ( ) ; / / / < [hQ~_gQeQ 00116 00117 00118 00119 i n t S a f e G e t W r i t e S i z e ( ) ; / / / < [hQS_SQeQpenc^ 00120 00121 i n t S a f e W r i t e ( c o n s t v o i d * , i n t ) ; / / / < [hQQeQ(uN{USv N!k'`QeQ 00122 00123 00124 00125 p u b l i c : / / YtQpe 00126 00127 00128 00129 i n t R e a d S t a r t ( b o o l = t r u e ) ; / / / < _YS 00130 00131 i n t G e t R e a d S i z e ( ) c o n s t { r e t u r n r e a d _ m a x ; } / / / < S_SSpenc^ 00132 00133 i n t R e a d ( v o i d * , i n t , b o o l = t r u e ) ; / / / < NAm-NSpenc 00134 00135 i n t R e a d E n d ( ) ; / / / < ~_gQeQ 00136 00137 00138 00139 i n t S a f e T r y R e a d S t a r t ( b o o l = t r u e ) ; / / / < [hQ\Ջ _YS 00140 00141 i n t S a f e R e a d S t a r t ( b o o l = t r u e ) ; / / / < [hQ _YS 00142 00143 i n t S a f e R e a d E n d ( ) ; / / / < [hQ~_gS 00144 00145 00146 00147 i n t S a f e G e t R e a d S i z e ( ) ; / / / < [hQS_SSpenc^ 00148 00149 i n t S a f e R e a d ( v o i d * , i n t , b o o l = t r u e ) ; / / / < [hQS(uN{USv N!k'`S 00150 00151 } ; / / c l a s s R i n g B u f f e r 00152 00153 } / / n a m e s p a c e h g l 00154 00155 # e n d i f / / H G L _ M U L T I _ T H R E A D _ R I N G _ B U F F E R _ I N C L U D E 00156 00157