CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/violite.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   ( C )   2 0 0 0   M y S Q L   A B 
00002  
00003        T h i s   p r o g r a m   i s   f r e e   s o f t w a r e ;   y o u   c a n   r e d i s t r i b u t e   i t   a n d / o r   m o d i f y 
00004  
00005        i t   u n d e r   t h e   t e r m s   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e   a s   p u b l i s h e d   b y 
00006  
00007        t h e   F r e e   S o f t w a r e   F o u n d a t i o n ;   v e r s i o n   2   o f   t h e   L i c e n s e . 
00008  
00009        T h i s   p r o g r a m   i s   d i s t r i b u t e d   i n   t h e   h o p e   t h a t   i t   w i l l   b e   u s e f u l , 
00010  
00011        b u t   W I T H O U T   A N Y   W A R R A N T Y ;   w i t h o u t   e v e n   t h e   i m p l i e d   w a r r a n t y   o f 
00012  
00013        M E R C H A N T A B I L I T Y   o r   F I T N E S S   F O R   A   P A R T I C U L A R   P U R P O S E .     S e e   t h e 
00014  
00015        G N U   G e n e r a l   P u b l i c   L i c e n s e   f o r   m o r e   d e t a i l s . 
00016  
00017        Y o u   s h o u l d   h a v e   r e c e i v e d   a   c o p y   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e 
00018  
00019        a l o n g   w i t h   t h i s   p r o g r a m ;   i f   n o t ,   w r i t e   t o   t h e   F r e e   S o f t w a r e 
00020  
00021        F o u n d a t i o n ,   I n c . ,   5 9   T e m p l e   P l a c e ,   S u i t e   3 3 0 ,   B o s t o n ,   M A     0 2 1 1 1 - 1 3 0 7     U S A   * / 
00022  
00023  / * 
00024  
00025    *   V i o   L i t e . 
00026  
00027    *   P u r p o s e :   i n c l u d e   f i l e   f o r   V i o   t h a t   w i l l   w o r k   w i t h   C   a n d   C + + 
00028  
00029    * / 
00030  
00031  # i f n d e f   v i o _ v i o l i t e _ h _ 
00032  
00033  # d e f i n e   v i o _ v i o l i t e _ h _ 
00034  
00035  # i n c l u d e   " m y _ n e t . h "           / *   n e e d e d   b e c a u s e   o f   s t r u c t   i n _ a d d r   * / 
00036  
00037  
00038  
00039  / *   S i m p l e   v i o   i n t e r f a c e   i n   C ;     T h e   f u n c t i o n s   a r e   i m p l e m e n t e d   i n   v i o l i t e . c   * / 
00040  
00041  # i f d e f     _ _ c p l u s p l u s 
00042  
00043  e x t e r n   " C "   { 
00044  
00045  # e n d i f   / *   _ _ c p l u s p l u s   * / 
00046  
00047  e n u m   e n u m _ v i o _ t y p e 
00048  
00049  { 
00050  
00051      V I O _ C L O S E D ,   V I O _ T Y P E _ T C P I P ,   V I O _ T Y P E _ S O C K E T ,   V I O _ T Y P E _ N A M E D P I P E , 
00052  
00053      V I O _ T Y P E _ S S L ,   V I O _ T Y P E _ S H A R E D _ M E M O R Y 
00054  
00055  } ; 
00056  
00057  
00058  
00059  # d e f i n e   V I O _ L O C A L H O S T   1                                                   / *   a   l o c a l h o s t   c o n n e c t i o n   * / 
00060  
00061  # d e f i n e   V I O _ B U F F E R E D _ R E A D   2                                           / *   u s e   b u f f e r e d   r e a d   * / 
00062  
00063  # d e f i n e   V I O _ R E A D _ B U F F E R _ S I Z E   1 6 3 8 4                             / *   s i z e   o f   r e a d   b u f f e r   * / 
00064  
00065  V i o *     v i o _ n e w ( m y _ s o c k e t   s d ,   e n u m   e n u m _ v i o _ t y p e   t y p e ,   u i n t   f l a g s ) ; 
00066  
00067  # i f d e f   _ _ W I N _ _ 
00068  
00069  V i o *   v i o _ n e w _ w i n 3 2 p i p e ( H A N D L E   h P i p e ) ; 
00070  
00071  V i o *   v i o _ n e w _ w i n 3 2 s h a r e d _ m e m o r y ( N E T   * n e t , H A N D L E   h a n d l e _ f i l e _ m a p , 
00072  
00073                                                                  H A N D L E   h a n d l e _ m a p , 
00074  
00075                                                                  H A N D L E   e v e n t _ s e r v e r _ w r o t e , 
00076  
00077                                                                  H A N D L E   e v e n t _ s e r v e r _ r e a d , 
00078  
00079                                                                  H A N D L E   e v e n t _ c l i e n t _ w r o t e , 
00080  
00081                                                                  H A N D L E   e v e n t _ c l i e n t _ r e a d , 
00082  
00083                                                                  H A N D L E   e v e n t _ c o n n _ c l o s e d ) ; 
00084  
00085  s i z e _ t   v i o _ r e a d _ p i p e ( V i o   * v i o ,   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00086  
00087  s i z e _ t   v i o _ w r i t e _ p i p e ( V i o   * v i o ,   c o n s t   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00088  
00089  i n t   v i o _ c l o s e _ p i p e ( V i o   *   v i o ) ; 
00090  
00091  # e l s e 
00092  
00093  # d e f i n e   H A N D L E   v o i d   * 
00094  
00095  # e n d i f   / *   _ _ W I N _ _   * / 
00096  
00097  v o i d     v i o _ d e l e t e ( V i o *   v i o ) ; 
00098  
00099  i n t   v i o _ c l o s e ( V i o *   v i o ) ; 
00100  
00101  v o i d         v i o _ r e s e t ( V i o *   v i o ,   e n u m   e n u m _ v i o _ t y p e   t y p e , 
00102  
00103                                      m y _ s o c k e t   s d ,   H A N D L E   h P i p e ,   u i n t   f l a g s ) ; 
00104  
00105  s i z e _ t     v i o _ r e a d ( V i o   * v i o ,   u c h a r   *     b u f ,   s i z e _ t   s i z e ) ; 
00106  
00107  s i z e _ t     v i o _ r e a d _ b u f f ( V i o   * v i o ,   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00108  
00109  s i z e _ t     v i o _ w r i t e ( V i o   * v i o ,   c o n s t   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00110  
00111  i n t   v i o _ b l o c k i n g ( V i o   * v i o ,   m y _ b o o l   o n o f f ,   m y _ b o o l   * o l d _ m o d e ) ; 
00112  
00113  m y _ b o o l   v i o _ i s _ b l o c k i n g ( V i o   * v i o ) ; 
00114  
00115  / *   s e t s o c k o p t   T C P _ N O D E L A Y   a t   I P P R O T O _ T C P   l e v e l ,   w h e n   p o s s i b l e   * / 
00116  
00117  i n t   v i o _ f a s t s e n d ( V i o   * v i o ) ; 
00118  
00119  / *   s e t s o c k o p t   S O _ K E E P A L I V E   a t   S O L _ S O C K E T   l e v e l ,   w h e n   p o s s i b l e   * / 
00120  
00121  i n t   v i o _ k e e p a l i v e ( V i o   * v i o ,   m y _ b o o l   o n o f f ) ; 
00122  
00123  / *   W h e n e v e r   w e   s h o u l d   r e t r y   t h e   l a s t   r e a d / w r i t e   o p e r a t i o n .   * / 
00124  
00125  m y _ b o o l   v i o _ s h o u l d _ r e t r y ( V i o   * v i o ) ; 
00126  
00127  / *   C h e c k   t h a t   o p e r a t i o n   w a s   t i m e d   o u t   * / 
00128  
00129  m y _ b o o l   v i o _ w a s _ i n t e r r u p t e d ( V i o   * v i o ) ; 
00130  
00131  / *   S h o r t   t e x t   d e s c r i p t i o n   o f   t h e   s o c k e t   f o r   t h o s e ,   w h o   a r e   c u r i o u s . .   * / 
00132  
00133  c o n s t   c h a r *   v i o _ d e s c r i p t i o n ( V i o   * v i o ) ; 
00134  
00135  / *   R e t u r n   t h e   t y p e   o f   t h e   c o n n e c t i o n   * / 
00136  
00137  e n u m   e n u m _ v i o _ t y p e   v i o _ t y p e ( V i o *   v i o ) ; 
00138  
00139  / *   R e t u r n   l a s t   e r r o r   n u m b e r   * / 
00140  
00141  i n t   v i o _ e r r n o ( V i o * v i o ) ; 
00142  
00143  / *   G e t   s o c k e t   n u m b e r   * / 
00144  
00145  m y _ s o c k e t   v i o _ f d ( V i o * v i o ) ; 
00146  
00147  / *   R e m o t e   p e e r ' s   a d d r e s s   a n d   n a m e   i n   t e x t   f o r m   * / 
00148  
00149  m y _ b o o l   v i o _ p e e r _ a d d r ( V i o   * v i o ,   c h a r   * b u f ,   u i n t 1 6   * p o r t ,   s i z e _ t   b u f l e n ) ; 
00150  
00151  m y _ b o o l   v i o _ p o l l _ r e a d ( V i o   * v i o , u i n t   t i m e o u t ) ; 
00152  
00153  m y _ b o o l   v i o _ p e e k _ r e a d ( V i o   * v i o ,   u i n t   * b y t e s ) ; 
00154  
00155  s s i z e _ t   v i o _ p e n d i n g ( V i o   * v i o ) ; 
00156  
00157  # i f d e f   H A V E _ O P E N S S L 
00158  
00159  # i n c l u d e   < o p e n s s l / o p e n s s l v . h > 
00160  
00161  # i f   O P E N S S L _ V E R S I O N _ N U M B E R   <   0 x 0 0 9 0 7 0 0 f 
00162  
00163  # d e f i n e   D E S _ c b l o c k   d e s _ c b l o c k 
00164  
00165  # d e f i n e   D E S _ k e y _ s c h e d u l e   d e s _ k e y _ s c h e d u l e 
00166  
00167  # d e f i n e   D E S _ s e t _ k e y _ u n c h e c k e d ( k , k s )   d e s _ s e t _ k e y _ u n c h e c k e d ( ( k ) , * ( k s ) ) 
00168  
00169  # d e f i n e   D E S _ e d e 3 _ c b c _ e n c r y p t ( i , o , l , k 1 , k 2 , k 3 , i v , e )   d e s _ e d e 3 _ c b c _ e n c r y p t ( ( i ) , ( o ) , ( l ) , * ( k 1 ) , * ( k 2 ) , * ( k 3 ) , ( i v ) , ( e ) ) 
00170  
00171  # e n d i f 
00172  
00173  # d e f i n e   H E A D E R _ D E S _ L O C L _ H   d u m m y _ s o m e t h i n g 
00174  
00175  # d e f i n e   Y A S S L _ M Y S Q L _ C O M P A T I B L E 
00176  
00177  # i f n d e f   Y A S S L _ P R E F I X 
00178  
00179  # d e f i n e   Y A S S L _ P R E F I X 
00180  
00181  # e n d i f 
00182  
00183  / *   S e t   y a S S L   t o   u s e   s a m e   t y p e   a s   M y S Q L   d o   f o r   s o c k e t   h a n d l e s   * / 
00184  
00185  t y p e d e f   m y _ s o c k e t   Y A S S L _ S O C K E T _ T ; 
00186  
00187  # d e f i n e   Y A S S L _ S O C K E T _ T _ D E F I N E D 
00188  
00189  # i n c l u d e   < o p e n s s l / s s l . h > 
00190  
00191  # i n c l u d e   < o p e n s s l / e r r . h > 
00192  
00193  # i f n d e f   E M B E D D E D _ L I B R A R Y 
00194  
00195  s t r u c t   s t _ V i o S S L F d 
00196  
00197  { 
00198  
00199      S S L _ C T X   * s s l _ c o n t e x t ; 
00200  
00201  } ; 
00202  
00203  i n t   s s l a c c e p t ( s t r u c t   s t _ V i o S S L F d * ,   V i o   * ,   l o n g   t i m e o u t ) ; 
00204  
00205  i n t   s s l c o n n e c t ( s t r u c t   s t _ V i o S S L F d * ,   V i o   * ,   l o n g   t i m e o u t ) ; 
00206  
00207  s t r u c t   s t _ V i o S S L F d 
00208  
00209  * n e w _ V i o S S L C o n n e c t o r F d ( c o n s t   c h a r   * k e y _ f i l e ,   c o n s t   c h a r   * c e r t _ f i l e , 
00210  
00211                        c o n s t   c h a r   * c a _ f i l e ,     c o n s t   c h a r   * c a _ p a t h , 
00212  
00213                        c o n s t   c h a r   * c i p h e r ) ; 
00214  
00215  s t r u c t   s t _ V i o S S L F d 
00216  
00217  * n e w _ V i o S S L A c c e p t o r F d ( c o n s t   c h a r   * k e y _ f i l e ,   c o n s t   c h a r   * c e r t _ f i l e , 
00218  
00219                      c o n s t   c h a r   * c a _ f i l e , c o n s t   c h a r   * c a _ p a t h , 
00220  
00221                      c o n s t   c h a r   * c i p h e r ) ; 
00222  
00223  v o i d   f r e e _ v i o _ s s l _ a c c e p t o r _ f d ( s t r u c t   s t _ V i o S S L F d   * f d ) ; 
00224  
00225  # e n d i f   / *   !   E M B E D D E D _ L I B R A R Y   * / 
00226  
00227  # e n d i f   / *   H A V E _ O P E N S S L   * / 
00228  
00229  # i f d e f   H A V E _ S M E M 
00230  
00231  s i z e _ t   v i o _ r e a d _ s h a r e d _ m e m o r y ( V i o   * v i o ,   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00232  
00233  s i z e _ t   v i o _ w r i t e _ s h a r e d _ m e m o r y ( V i o   * v i o ,   c o n s t   u c h a r   *   b u f ,   s i z e _ t   s i z e ) ; 
00234  
00235  i n t   v i o _ c l o s e _ s h a r e d _ m e m o r y ( V i o   *   v i o ) ; 
00236  
00237  # e n d i f 
00238  
00239  v o i d   v i o _ e n d ( v o i d ) ; 
00240  
00241  # i f d e f     _ _ c p l u s p l u s 
00242  
00243  } 
00244  
00245  # e n d i f 
00246  
00247  # i f   ! d e f i n e d ( D O N T _ M A P _ V I O ) 
00248  
00249  # d e f i n e   v i o _ d e l e t e ( v i o )               ( v i o ) - > v i o d e l e t e ( v i o ) 
00250  
00251  # d e f i n e   v i o _ e r r n o ( v i o )                 ( v i o ) - > v i o e r r n o ( v i o ) 
00252  
00253  # d e f i n e   v i o _ r e a d ( v i o ,   b u f ,   s i z e )                                 ( ( v i o ) - > r e a d ) ( v i o , b u f , s i z e ) 
00254  
00255  # d e f i n e   v i o _ w r i t e ( v i o ,   b u f ,   s i z e )                               ( ( v i o ) - > w r i t e ) ( v i o ,   b u f ,   s i z e ) 
00256  
00257  # d e f i n e   v i o _ b l o c k i n g ( v i o ,   s e t _ b l o c k i n g _ m o d e ,   o l d _ m o d e ) \ 
00258  
00259      ( v i o ) - > v i o b l o c k i n g ( v i o ,   s e t _ b l o c k i n g _ m o d e ,   o l d _ m o d e ) 
00260  
00261  # d e f i n e   v i o _ i s _ b l o c k i n g ( v i o )             ( v i o ) - > i s _ b l o c k i n g ( v i o ) 
00262  
00263  # d e f i n e   v i o _ f a s t s e n d ( v i o )           ( v i o ) - > f a s t s e n d ( v i o ) 
00264  
00265  # d e f i n e   v i o _ k e e p a l i v e ( v i o ,   s e t _ k e e p _ a l i v e )     ( v i o ) - > v i o k e e p a l i v e ( v i o ,   s e t _ k e e p _ a l i v e ) 
00266  
00267  # d e f i n e   v i o _ s h o u l d _ r e t r y ( v i o )               ( v i o ) - > s h o u l d _ r e t r y ( v i o ) 
00268  
00269  # d e f i n e   v i o _ w a s _ i n t e r r u p t e d ( v i o )         ( v i o ) - > w a s _ i n t e r r u p t e d ( v i o ) 
00270  
00271  # d e f i n e   v i o _ c l o s e ( v i o )                 ( ( v i o ) - > v i o c l o s e ) ( v i o ) 
00272  
00273  # d e f i n e   v i o _ p e e r _ a d d r ( v i o ,   b u f ,   p r t ,   b u f l e n )     ( v i o ) - > p e e r _ a d d r ( v i o ,   b u f ,   p r t ,   b u f l e n ) 
00274  
00275  # d e f i n e   v i o _ t i m e o u t ( v i o ,   w h i c h ,   s e c o n d s )     ( v i o ) - > t i m e o u t ( v i o ,   w h i c h ,   s e c o n d s ) 
00276  
00277  # e n d i f   / *   ! d e f i n e d ( D O N T _ M A P _ V I O )   * / 
00278  
00279  / *   T h i s   e n u m e r a t o r   i s   u s e d   i n   p a r s e r   -   s h o u l d   b e   a l w a y s   v i s i b l e   * / 
00280  
00281  e n u m   S S L _ t y p e 
00282  
00283  { 
00284  
00285      S S L _ T Y P E _ N O T _ S P E C I F I E D =   - 1 , 
00286  
00287      S S L _ T Y P E _ N O N E , 
00288  
00289      S S L _ T Y P E _ A N Y , 
00290  
00291      S S L _ T Y P E _ X 5 0 9 , 
00292  
00293      S S L _ T Y P E _ S P E C I F I E D 
00294  
00295  } ; 
00296  
00297  
00298  
00299  / *   H F T O D O   -   h i d e   t h i s   i f   w e   d o n ' t   w a n t   c l i e n t   i n   e m b e d d e d   s e r v e r   * / 
00300  
00301  / *   T h i s   s t r u c t u r e   i s   f o r   e v e r y   c o n n e c t i o n   o n   b o t h   s i d e s   * / 
00302  
00303  s t r u c t   s t _ v i o 
00304  
00305  { 
00306  
00307      m y _ s o c k e t       s d ;       / *   m y _ s o c k e t   -   r e a l   o r   i m a g i n a r y   * / 
00308  
00309      H A N D L E   h P i p e ; 
00310  
00311      m y _ b o o l       l o c a l h o s t ;     / *   A r e   w e   f r o m   l o c a l h o s t ?   * / 
00312  
00313      i n t           f c n t l _ m o d e ;   / *   B u f f e r e d   f c n t l ( s d , F _ G E T F L )   * / 
00314  
00315      s t r u c t   s o c k a d d r _ s t o r a g e   l o c a l ;         / *   L o c a l   i n t e r n e t   a d d r e s s   * / 
00316  
00317      s t r u c t   s o c k a d d r _ s t o r a g e   r e m o t e ;       / *   R e m o t e   i n t e r n e t   a d d r e s s   * / 
00318  
00319      i n t   a d d r L e n ;                                                     / *   L e n g t h   o f   r e m o t e   a d d r e s s   * / 
00320  
00321      e n u m   e n u m _ v i o _ t y p e     t y p e ;       / *   T y p e   o f   c o n n e c t i o n   * / 
00322  
00323      c h a r             d e s c [ 3 0 ] ;   / *   S t r i n g   d e s c r i p t i o n   * / 
00324  
00325      c h a r                                     * r e a d _ b u f f e r ;       / *   b u f f e r   f o r   v i o _ r e a d _ b u f f   * / 
00326  
00327      c h a r                                     * r e a d _ p o s ;             / *   s t a r t   o f   u n f e t c h e d   d a t a   i n   t h e 
00328  
00329                                                                                        r e a d   b u f f e r   * / 
00330  
00331      c h a r                                     * r e a d _ e n d ;             / *   e n d   o f   u n f e t c h e d   d a t a   * / 
00332  
00333      / *   f u n c t i o n   p o i n t e r s .   T h e y   a r e   s i m i l a r   f o r   s o c k e t / S S L / w h a t e v e r   * / 
00334  
00335      v o i d         ( * v i o d e l e t e ) ( V i o * ) ; 
00336  
00337      i n t           ( * v i o e r r n o ) ( V i o * ) ; 
00338  
00339      s i z e _ t     ( * r e a d ) ( V i o * ,   u c h a r   * ,   s i z e _ t ) ; 
00340  
00341      s i z e _ t     ( * w r i t e ) ( V i o * ,   c o n s t   u c h a r   * ,   s i z e _ t ) ; 
00342  
00343      i n t           ( * v i o b l o c k i n g ) ( V i o * ,   m y _ b o o l ,   m y _ b o o l   * ) ; 
00344  
00345      m y _ b o o l   ( * i s _ b l o c k i n g ) ( V i o * ) ; 
00346  
00347      i n t           ( * v i o k e e p a l i v e ) ( V i o * ,   m y _ b o o l ) ; 
00348  
00349      i n t           ( * f a s t s e n d ) ( V i o * ) ; 
00350  
00351      m y _ b o o l   ( * p e e r _ a d d r ) ( V i o * ,   c h a r   * ,   u i n t 1 6 * ,   s i z e _ t ) ; 
00352  
00353      v o i d         ( * i n _ a d d r ) ( V i o * ,   s t r u c t   s o c k a d d r _ s t o r a g e * ) ; 
00354  
00355      m y _ b o o l   ( * s h o u l d _ r e t r y ) ( V i o * ) ; 
00356  
00357      m y _ b o o l   ( * w a s _ i n t e r r u p t e d ) ( V i o * ) ; 
00358  
00359      i n t           ( * v i o c l o s e ) ( V i o * ) ; 
00360  
00361      v o i d         ( * t i m e o u t ) ( V i o * ,   u n s i g n e d   i n t   w h i c h ,   u n s i g n e d   i n t   t i m e o u t ) ; 
00362  
00363  # i f d e f   H A V E _ O P E N S S L 
00364  
00365      v o i d         * s s l _ a r g ; 
00366  
00367  # e n d i f 
00368  
00369  # i f d e f   H A V E _ S M E M 
00370  
00371      H A N D L E     h a n d l e _ f i l e _ m a p ; 
00372  
00373      c h a r         * h a n d l e _ m a p ; 
00374  
00375      H A N D L E     e v e n t _ s e r v e r _ w r o t e ; 
00376  
00377      H A N D L E     e v e n t _ s e r v e r _ r e a d ; 
00378  
00379      H A N D L E     e v e n t _ c l i e n t _ w r o t e ; 
00380  
00381      H A N D L E     e v e n t _ c l i e n t _ r e a d ; 
00382  
00383      H A N D L E     e v e n t _ c o n n _ c l o s e d ; 
00384  
00385      s i z e _ t     s h a r e d _ m e m o r y _ r e m a i n ; 
00386  
00387      c h a r         * s h a r e d _ m e m o r y _ p o s ; 
00388  
00389      N E T           * n e t ; 
00390  
00391  # e n d i f   / *   H A V E _ S M E M   * / 
00392  
00393  } ; 
00394  
00395  # e n d i f   / *   v i o _ v i o l i t e _ h _   * / 
00396  
00397  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义