00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef ACE_ACE_H
00021 #define ACE_ACE_H
00022 
00023 #include  "ace/pre.h"
00024 
00025 #include "ace/config-lite.h"
00026 
00027 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00028 # pragma once
00029 #endif 
00030 
00031 #include "ace/Flag_Manip.h"
00032 #include "ace/Handle_Ops.h"
00033 #include "ace/Lib_Find.h"
00034 #include "ace/Init_ACE.h"
00035 #include "ace/Sock_Connect.h"
00036 #include "ace/Default_Constants.h"
00037 
00038 #if defined (CYGWIN32)
00039 
00040 
00041 
00042 
00043 # include "ace/os_include/os_math.h"
00044 #endif
00045 
00046 
00047 #if defined (log2)
00048 # define acelog2 log2
00049 # undef log2
00050 #endif 
00051 
00052 #if defined (ACE_EXPORT_MACRO)
00053 #  undef ACE_EXPORT_MACRO
00054 #endif
00055 #define ACE_EXPORT_MACRO ACE_Export
00056 
00057 
00058 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00059 
00060 
00061 class ACE_Time_Value;
00062 class ACE_Message_Block;
00063 class ACE_Handle_Set;
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 namespace ACE
00075 {
00076   
00077 
00078   extern ACE_Export u_int major_version (void);
00079 
00080 
00081   extern ACE_Export u_int minor_version (void);
00082 
00083 
00084 
00085   extern ACE_Export u_int beta_version (void);
00086 
00087   
00088 
00089   extern ACE_Export const ACE_TCHAR * compiler_name (void);
00090 
00091 
00092   extern ACE_Export u_int compiler_major_version (void);
00093 
00094 
00095   extern ACE_Export u_int compiler_minor_version (void);
00096 
00097 
00098   extern ACE_Export u_int compiler_beta_version (void);
00099 
00100 
00101 
00102   extern ACE_Export int out_of_handles (int error);
00103 
00104 
00105 
00106   extern ACE_Export bool wild_match(const char* s, const char* pattern, bool case_sensitive = true);
00107 
00108 
00109 
00110 
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 
00121 
00122 
00123 
00124 
00125 
00126 
00127 
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157   extern ACE_Export ssize_t recv (ACE_HANDLE handle,
00158                                   void *buf,
00159                                   size_t len,
00160                                   int flags,
00161                                   const ACE_Time_Value *timeout = 0);
00162 
00163 #if defined (ACE_HAS_TLI)
00164 
00165   extern ACE_Export ssize_t t_rcv (ACE_HANDLE handle,
00166                                    void *buf,
00167                                    size_t len,
00168                                    int *flags,
00169                                    const ACE_Time_Value *timeout = 0);
00170 
00171 #endif 
00172 
00173   extern ACE_Export ssize_t recv (ACE_HANDLE handle,
00174                                   void *buf,
00175                                   size_t len,
00176                                   const ACE_Time_Value *timeout = 0);
00177 
00178   extern ACE_Export ssize_t recvmsg (ACE_HANDLE handle,
00179                                      struct msghdr *msg,
00180                                      int flags,
00181                                      const ACE_Time_Value *timeout = 0);
00182 
00183   extern ACE_Export ssize_t recvfrom (ACE_HANDLE handle,
00184                                       char *buf,
00185                                       int len,
00186                                       int flags,
00187                                       struct sockaddr *addr,
00188                                       int *addrlen,
00189                                       const ACE_Time_Value *timeout = 0);
00190 
00191   ACE_NAMESPACE_INLINE_FUNCTION
00192   ssize_t recv_n (ACE_HANDLE handle,
00193                   void *buf,
00194                   size_t len,
00195                   int flags,
00196                   const ACE_Time_Value *timeout = 0,
00197                   size_t *bytes_transferred = 0);
00198 
00199 #if defined (ACE_HAS_TLI)
00200 
00201   ACE_NAMESPACE_INLINE_FUNCTION
00202   ssize_t t_rcv_n (ACE_HANDLE handle,
00203                    void *buf,
00204                    size_t len,
00205                    int *flags,
00206                    const ACE_Time_Value *timeout = 0,
00207                    size_t *bytes_transferred = 0);
00208 
00209 #endif 
00210 
00211   ACE_NAMESPACE_INLINE_FUNCTION
00212   ssize_t recv_n (ACE_HANDLE handle,
00213                   void *buf,
00214                   size_t len,
00215                   const ACE_Time_Value *timeout = 0,
00216                   size_t *bytes_transferred = 0);
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00224 
00225 
00226 
00227 
00228   extern ACE_Export ssize_t recv (ACE_HANDLE handle, size_t n, ...);
00229 
00230   extern ACE_Export ssize_t recvv (ACE_HANDLE handle,
00231                                    iovec *iov,
00232                                    int iovcnt,
00233                                    const ACE_Time_Value *timeout = 0);
00234 
00235   ACE_NAMESPACE_INLINE_FUNCTION
00236   ssize_t recvv_n (ACE_HANDLE handle,
00237                    iovec *iov,
00238                    int iovcnt,
00239                    const ACE_Time_Value *timeout = 0,
00240                    size_t *bytes_transferred = 0);
00241 
00242   extern ACE_Export ssize_t recv_n (ACE_HANDLE handle,
00243                                     ACE_Message_Block *message_block,
00244                                     const ACE_Time_Value *timeout = 0,
00245                                     size_t *bytes_transferred = 0);
00246 
00247   extern ACE_Export ssize_t send (ACE_HANDLE handle,
00248                                   const void *buf,
00249                                   size_t len,
00250                                   int flags,
00251                                   const ACE_Time_Value *timeout = 0);
00252 
00253 #if defined (ACE_HAS_TLI)
00254 
00255   extern ACE_Export ssize_t t_snd (ACE_HANDLE handle,
00256                                    const void *buf,
00257                                    size_t len,
00258                                    int flags,
00259                                    const ACE_Time_Value *timeout = 0);
00260 
00261 #endif 
00262 
00263   extern ACE_Export ssize_t send (ACE_HANDLE handle,
00264                                   const void *buf,
00265                                   size_t len,
00266                                   const ACE_Time_Value *timeout = 0);
00267 
00268   extern ACE_Export ssize_t sendmsg (ACE_HANDLE handle,
00269                                      const struct msghdr *msg,
00270                                      int flags,
00271                                      const ACE_Time_Value *timeout = 0);
00272 
00273   extern ACE_Export ssize_t sendto (ACE_HANDLE handle,
00274                                     const char *buf,
00275                                     int len,
00276                                     int flags,
00277                                     const struct sockaddr *addr,
00278                                     int addrlen,
00279                                     const ACE_Time_Value *timeout = 0);
00280 
00281   ACE_NAMESPACE_INLINE_FUNCTION
00282   ssize_t send_n (ACE_HANDLE handle,
00283                   const void *buf,
00284                   size_t len,
00285                   int flags,
00286                   const ACE_Time_Value *timeout = 0,
00287                   size_t *bytes_transferred = 0);
00288 
00289 #if defined (ACE_HAS_TLI)
00290 
00291   ACE_NAMESPACE_INLINE_FUNCTION
00292   ssize_t t_snd_n (ACE_HANDLE handle,
00293                    const void *buf,
00294                    size_t len,
00295                    int flags,
00296                    const ACE_Time_Value *timeout = 0,
00297                    size_t *bytes_transferred = 0);
00298 
00299 #endif 
00300 
00301   ACE_NAMESPACE_INLINE_FUNCTION
00302   ssize_t send_n (ACE_HANDLE handle,
00303                   const void *buf,
00304                   size_t len,
00305                   const ACE_Time_Value *timeout = 0,
00306                   size_t *bytes_transferred = 0);
00307 
00308 
00309   extern ACE_Export ssize_t send (ACE_HANDLE handle, size_t n, ...);
00310 
00311   extern ACE_Export ssize_t sendv (ACE_HANDLE handle,
00312                                    const iovec *iov,
00313                                    int iovcnt,
00314                                    const ACE_Time_Value *timeout = 0);
00315 
00316   ACE_NAMESPACE_INLINE_FUNCTION
00317   ssize_t sendv_n (ACE_HANDLE handle,
00318                    const iovec *iov,
00319                    int iovcnt,
00320                    const ACE_Time_Value *timeout = 0,
00321                    size_t *bytes_transferred = 0);
00322 
00323 
00324 
00325 
00326   extern ACE_Export ssize_t send_n (ACE_HANDLE handle,
00327                                     const ACE_Message_Block *message_block,
00328                                     const ACE_Time_Value *timeout = 0,
00329                                     size_t *bytes_transferred = 0);
00330 
00331   
00332 
00333   ACE_NAMESPACE_INLINE_FUNCTION
00334   ssize_t read_n (ACE_HANDLE handle,
00335                   void *buf,
00336                   size_t len,
00337                   size_t *bytes_transferred = 0);
00338 
00339   ACE_NAMESPACE_INLINE_FUNCTION
00340   ssize_t write_n (ACE_HANDLE handle,
00341                    const void *buf,
00342                    size_t len,
00343                    size_t *bytes_transferred = 0);
00344 
00345 
00346 
00347 
00348   extern ACE_Export ssize_t write_n (ACE_HANDLE handle,
00349                                      const ACE_Message_Block *message_block,
00350                                      size_t *bytes_transferred = 0);
00351 
00352   extern ACE_Export ssize_t readv_n (ACE_HANDLE handle,
00353                                      iovec *iov,
00354                                      int iovcnt,
00355                                      size_t *bytes_transferred = 0);
00356 
00357   extern ACE_Export ssize_t writev_n (ACE_HANDLE handle,
00358                                       const iovec *iov,
00359                                       int iovcnt,
00360                                       size_t *bytes_transferred = 0);
00361 
00362 
00363 
00364 
00365 
00366 
00367 
00368   extern ACE_Export int handle_timed_accept (ACE_HANDLE listener,
00369                                              ACE_Time_Value *timeout,
00370                                              int restart);
00371 
00372 
00373 
00374 
00375 
00376 
00377 
00378   extern ACE_Export ACE_HANDLE handle_timed_complete (
00379     ACE_HANDLE listener,
00380     const ACE_Time_Value *timeout,
00381     int is_tli = 0);
00382 
00383 
00384 
00385 
00386 
00387 
00388 
00389   extern ACE_Export int set_handle_limit (int new_limit = -1,
00390                                           int increase_limit_only = 0);
00391 
00392 
00393 
00394 
00395 
00396 
00397   extern ACE_Export int max_handles (void);
00398 
00399   
00400 #if !defined (ACE_HAS_WINCE)
00401 
00402 
00403 
00404 
00405 
00406 
00407   extern ACE_Export ACE_TCHAR *strenvdup (const ACE_TCHAR *str);
00408 #endif 
00409 
00410 
00411 
00412   extern ACE_Export const char *strend (const char *s);
00413 
00414 
00415 
00416 
00417   extern ACE_Export char *strnew (const char *s);
00418 
00419 
00420   ACE_NAMESPACE_INLINE_FUNCTION void strdelete (char *s);
00421 
00422 
00423 
00424   extern ACE_Export char *strndup (const char *str, size_t n);
00425 
00426 
00427 
00428   extern ACE_Export char *strnnew (const char *str, size_t n);
00429 
00430 #if defined (ACE_HAS_WCHAR)
00431   extern ACE_Export const wchar_t *strend (const wchar_t *s);
00432 
00433   extern ACE_Export wchar_t *strnew (const wchar_t *s);
00434 
00435   ACE_NAMESPACE_INLINE_FUNCTION void strdelete (wchar_t *s);
00436 
00437   extern ACE_Export wchar_t *strndup (const wchar_t *str, size_t n);
00438 
00439   extern ACE_Export wchar_t *strnnew (const wchar_t *str, size_t n);
00440 
00441 #endif 
00442 
00443 
00444 
00445 
00446 
00447 
00448 
00449 
00450 
00451 
00452 
00453 
00454 
00455 
00456 
00457 
00458 
00459   extern ACE_Export const ACE_TCHAR *execname (const ACE_TCHAR *pathname);
00460 
00461 
00462 
00463 
00464 
00465 
00466   extern ACE_Export const ACE_TCHAR *basename (const ACE_TCHAR *pathname,
00467                                                ACE_TCHAR delim =
00468                                                ACE_DIRECTORY_SEPARATOR_CHAR);
00469 
00470 
00471 
00472 
00473 
00474 
00475 
00476   extern ACE_Export const ACE_TCHAR *dirname (const ACE_TCHAR *pathname,
00477                                               ACE_TCHAR delim =
00478                                               ACE_DIRECTORY_SEPARATOR_CHAR);
00479 
00480 
00481 
00482 
00483 
00484 
00485 
00486 
00487 
00488 
00489 
00490 
00491   extern ACE_Export ACE_TCHAR *timestamp (ACE_TCHAR date_and_time[],
00492                                           int time_len,
00493                                           int return_pointer_to_first_digit =
00494                                             0);
00495 
00496 
00497 
00498 
00499 
00500 
00501 
00502 
00503 
00504 
00505   extern ACE_Export pid_t fork (
00506     const ACE_TCHAR *program_name = ACE_LIB_TEXT ("<unknown>"),
00507     int avoid_zombies = 0);
00508 
00509 
00510 
00511 
00512 
00513 
00514 
00515   extern ACE_Export int daemonize (
00516     const ACE_TCHAR pathname[] = ACE_LIB_TEXT ("/"),
00517     int close_all_handles = ACE_DEFAULT_CLOSE_ALL_HANDLES,
00518     const ACE_TCHAR program_name[] = ACE_LIB_TEXT ("<unknown>"));
00519 
00520   
00521 
00522   extern ACE_Export size_t round_to_pagesize (off_t len);
00523 
00524 
00525   extern ACE_Export size_t round_to_allocation_granularity (off_t len);
00526 
00527   
00528 
00529 
00530   extern ACE_Export size_t format_hexdump (const char *buffer, size_t size,
00531                                            ACE_TCHAR *obuf, size_t obuf_sz);
00532 
00533 
00534   extern ACE_Export u_long hash_pjw (const char *str);
00535 
00536 
00537   extern ACE_Export u_long hash_pjw (const char *str, size_t len);
00538 
00539 #if defined (ACE_HAS_WCHAR)
00540 
00541   extern ACE_Export u_long hash_pjw (const wchar_t *str);
00542 
00543 
00544   extern ACE_Export u_long hash_pjw (const wchar_t *str, size_t len);
00545 #endif 
00546 
00547 
00548   extern ACE_Export ACE_UINT16 crc_ccitt(const char *str);
00549 
00550 
00551   extern ACE_Export ACE_UINT16 crc_ccitt(const void *buf, size_t len,
00552            ACE_UINT16 crc = 0);
00553 
00554 
00555   extern ACE_Export ACE_UINT16 crc_ccitt(const iovec *iov, int len,
00556            ACE_UINT16 crc = 0);
00557 
00558 
00559   extern ACE_Export ACE_UINT32 crc32 (const char *str);
00560 
00561 
00562   extern ACE_Export ACE_UINT32 crc32 (const void *buf, size_t len,
00563               ACE_UINT32 crc = 0);
00564 
00565 
00566 
00567   extern ACE_Export ACE_UINT32 crc32 (const iovec *iov, int len,
00568               ACE_UINT32 crc = 0);
00569 
00570 
00571   extern ACE_Export u_long gcd (u_long x, u_long y);
00572 
00573 
00574   extern ACE_Export u_long minimum_frame_size (u_long period1, u_long period2);
00575 
00576 
00577 
00578 
00579 
00580 
00581 
00582 
00583 
00584   extern ACE_Export u_long is_prime (const u_long n,
00585                                      const u_long min_factor,
00586                                      const u_long max_factor);
00587 
00588 
00589 
00590   extern ACE_Export int map_errno (int error);
00591 
00592 
00593 
00594 
00595   extern ACE_Export const ACE_TCHAR * sock_error (int error);
00596 
00597 
00598 
00599 
00600   extern ACE_Export bool is_sock_error (int error);
00601 
00602 
00603 
00604 
00605 
00606 
00607   extern ACE_Export int process_active (pid_t pid);
00608 
00609 
00610 
00611 
00612 
00613 
00614 
00615 
00616 
00617   extern ACE_Export int terminate_process (pid_t pid);
00618 
00619 
00620 
00621 
00622 
00623 
00624 
00625 
00626 
00627   ACE_NAMESPACE_INLINE_FUNCTION void unique_name (const void *object,
00628                                                   ACE_TCHAR *name,
00629                                                   size_t length);
00630 
00631 
00632   ACE_NAMESPACE_INLINE_FUNCTION u_long log2 (u_long num);
00633 
00634 
00635   ACE_NAMESPACE_INLINE_FUNCTION ACE_TCHAR nibble2hex (u_int n);
00636 
00637 
00638   ACE_NAMESPACE_INLINE_FUNCTION u_char hex2byte (ACE_TCHAR c);
00639 
00640   
00641   extern ACE_Export char debug (void);
00642   extern ACE_Export void debug (char d);
00643 
00644 
00645   extern ACE_Export int select (int width,
00646                                 ACE_Handle_Set *readfds,
00647                                 ACE_Handle_Set *writefds = 0,
00648                                 ACE_Handle_Set *exceptfds = 0,
00649                                 const ACE_Time_Value *timeout = 0);
00650 
00651 
00652 
00653   extern ACE_Export int select (int width,
00654                                 ACE_Handle_Set &readfds,
00655                                 const ACE_Time_Value *timeout = 0);
00656 
00657 
00658   ACE_NAMESPACE_INLINE_FUNCTION
00659   int handle_read_ready (ACE_HANDLE handle,
00660                          const ACE_Time_Value *timeout);
00661 
00662 
00663   ACE_NAMESPACE_INLINE_FUNCTION
00664   int handle_write_ready (ACE_HANDLE handle,
00665                           const ACE_Time_Value *timeout);
00666 
00667 
00668   ACE_NAMESPACE_INLINE_FUNCTION
00669   int handle_exception_ready (ACE_HANDLE handle,
00670                               const ACE_Time_Value *timeout);
00671 
00672 
00673   extern ACE_Export int handle_ready (ACE_HANDLE handle,
00674                                       const ACE_Time_Value *timeout,
00675                                       int read_ready,
00676                                       int write_ready,
00677                                       int exception_ready);
00678 
00679 
00680 
00681 
00682   extern ACE_Export int enter_recv_timedwait (ACE_HANDLE handle,
00683                                               const ACE_Time_Value *timeout,
00684                                               int &val);
00685 
00686 
00687 
00688 
00689   extern ACE_Export int enter_send_timedwait (ACE_HANDLE handle,
00690                                               const ACE_Time_Value* timeout,
00691                                               int &val);
00692 
00693 
00694 
00695   extern ACE_Export void record_and_set_non_blocking_mode (ACE_HANDLE handle,
00696                                                            int &val);
00697 
00698 
00699 
00700   extern ACE_Export void restore_non_blocking_mode (ACE_HANDLE handle,
00701                                                     int val);
00702 
00703   
00704   
00705   
00706 
00707   
00708   
00709   
00710 
00711   ACE_NAMESPACE_INLINE_FUNCTION ssize_t recv_i (ACE_HANDLE handle,
00712                                                 void *buf,
00713                                                 size_t len);
00714 
00715   extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00716                                       void *buf,
00717                                       size_t len,
00718                                       int flags,
00719                                       size_t *bytes_transferred);
00720 
00721   extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00722                                       void *buf,
00723                                       size_t len,
00724                                       int flags,
00725                                       const ACE_Time_Value *timeout,
00726                                       size_t *bytes_transferred);
00727 
00728 #if defined (ACE_HAS_TLI)
00729 
00730   extern ACE_Export ssize_t t_rcv_n_i (ACE_HANDLE handle,
00731                                        void *buf,
00732                                        size_t len,
00733                                        int *flags,
00734                                        size_t *bytes_transferred);
00735 
00736   extern ACE_Export ssize_t t_rcv_n_i (ACE_HANDLE handle,
00737                                        void *buf,
00738                                        size_t len,
00739                                        int *flags,
00740                                        const ACE_Time_Value *timeout,
00741                                        size_t *bytes_transferred);
00742 
00743 #endif 
00744 
00745   extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00746                                       void *buf,
00747                                       size_t len,
00748                                       size_t *bytes_transferred);
00749 
00750   extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00751                                       void *buf,
00752                                       size_t len,
00753                                       const ACE_Time_Value *timeout,
00754                                       size_t *bytes_transferred);
00755 
00756   extern ACE_Export ssize_t recvv_n_i (ACE_HANDLE handle,
00757                                        iovec *iov,
00758                                        int iovcnt,
00759                                        size_t *bytes_transferred);
00760 
00761   extern ACE_Export ssize_t recvv_n_i (ACE_HANDLE handle,
00762                                        iovec *iov,
00763                                        int iovcnt,
00764                                        const ACE_Time_Value *timeout,
00765                                        size_t *bytes_transferred);
00766 
00767   
00768   
00769   
00770 
00771   ACE_NAMESPACE_INLINE_FUNCTION ssize_t send_i (ACE_HANDLE handle,
00772                                                 const void *buf,
00773                                                 size_t len);
00774 
00775   extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00776                                       const void *buf,
00777                                       size_t len,
00778                                       int flags,
00779                                       size_t *bytes_transferred);
00780 
00781   extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00782                                       const void *buf,
00783                                       size_t len,
00784                                       int flags,
00785                                       const ACE_Time_Value *timeout,
00786                                       size_t *bytes_transferred);
00787 
00788 #if defined (ACE_HAS_TLI)
00789 
00790   extern ACE_Export ssize_t t_snd_n_i (ACE_HANDLE handle,
00791                                        const void *buf,
00792                                        size_t len,
00793                                        int flags,
00794                                        size_t *bytes_transferred);
00795 
00796   extern ACE_Export ssize_t t_snd_n_i (ACE_HANDLE handle,
00797                                        const void *buf,
00798                                        size_t len,
00799                                        int flags,
00800                                        const ACE_Time_Value *timeout,
00801                                        size_t *bytes_transferred);
00802 
00803 #endif 
00804 
00805   extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00806                                       const void *buf,
00807                                       size_t len,
00808                                       size_t *bytes_transferred);
00809 
00810   extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00811                                       const void *buf,
00812                                       size_t len,
00813                                       const ACE_Time_Value *timeout,
00814                                       size_t *bytes_transferred);
00815 
00816   extern ACE_Export ssize_t sendv_n_i (ACE_HANDLE handle,
00817                                        const iovec *iov,
00818                                        int iovcnt,
00819                                        size_t *bytes_transferred);
00820 
00821   extern ACE_Export ssize_t sendv_n_i (ACE_HANDLE handle,
00822                                        const iovec *iov,
00823                                        int iovcnt,
00824                                        const ACE_Time_Value *timeout,
00825                                        size_t *bytes_transferred);
00826 
00827 }
00828 
00829 
00830 ACE_END_VERSIONED_NAMESPACE_DECL
00831 
00832 #if defined (__ACE_INLINE__)
00833 #include "ace/ACE.inl"
00834 #endif 
00835 
00836 #if defined (acelog2)
00837 # define log2 acelog2
00838 #endif 
00839 
00840 #include  "ace/post.h"
00841 
00842 #endif