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