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