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 (const ACE_Time_Value& time_value,
00488 ACE_TCHAR date_and_time[],
00489 size_t time_len,
00490 bool return_pointer_to_first_digit = false);
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503 extern ACE_Export ACE_TCHAR *timestamp (ACE_TCHAR date_and_time[],
00504 size_t time_len,
00505 bool return_pointer_to_first_digit = false);
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516 extern ACE_Export pid_t fork (
00517 const ACE_TCHAR *program_name = ACE_TEXT ("<unknown>"),
00518 int avoid_zombies = 0);
00519
00520
00521
00522
00523
00524
00525
00526 extern ACE_Export int daemonize (
00527 const ACE_TCHAR pathname[] = ACE_TEXT ("/"),
00528 bool close_all_handles = ACE_DEFAULT_CLOSE_ALL_HANDLES,
00529 const ACE_TCHAR program_name[] = ACE_TEXT ("<unknown>"));
00530
00531
00532
00533 extern ACE_Export size_t round_to_pagesize (size_t len);
00534
00535
00536 extern ACE_Export size_t round_to_allocation_granularity (size_t len);
00537
00538
00539
00540
00541 extern ACE_Export size_t format_hexdump (const char *buffer, size_t size,
00542 ACE_TCHAR *obuf, size_t obuf_sz);
00543
00544
00545 extern ACE_Export u_long hash_pjw (const char *str);
00546
00547
00548 extern ACE_Export u_long hash_pjw (const char *str, size_t len);
00549
00550 #if defined (ACE_HAS_WCHAR)
00551
00552 extern ACE_Export u_long hash_pjw (const wchar_t *str);
00553
00554
00555 extern ACE_Export u_long hash_pjw (const wchar_t *str, size_t len);
00556 #endif
00557
00558
00559 extern ACE_Export ACE_UINT16 crc_ccitt(const char *str);
00560
00561
00562 extern ACE_Export ACE_UINT16 crc_ccitt(const void *buf, size_t len,
00563 ACE_UINT16 crc = 0);
00564
00565
00566 extern ACE_Export ACE_UINT16 crc_ccitt(const iovec *iov, int len,
00567 ACE_UINT16 crc = 0);
00568
00569
00570 extern ACE_Export ACE_UINT32 crc32 (const char *str);
00571
00572
00573 extern ACE_Export ACE_UINT32 crc32 (const void *buf, size_t len,
00574 ACE_UINT32 crc = 0);
00575
00576
00577
00578 extern ACE_Export ACE_UINT32 crc32 (const iovec *iov, int len,
00579 ACE_UINT32 crc = 0);
00580
00581
00582 extern ACE_Export u_long gcd (u_long x, u_long y);
00583
00584
00585 extern ACE_Export u_long minimum_frame_size (u_long period1, u_long period2);
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595 extern ACE_Export u_long is_prime (const u_long n,
00596 const u_long min_factor,
00597 const u_long max_factor);
00598
00599
00600
00601 extern ACE_Export int map_errno (int error);
00602
00603
00604
00605
00606 extern ACE_Export const ACE_TCHAR * sock_error (int error);
00607
00608
00609
00610
00611 extern ACE_Export bool is_sock_error (int error);
00612
00613
00614
00615
00616
00617
00618 extern ACE_Export int process_active (pid_t pid);
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628 extern ACE_Export int terminate_process (pid_t pid);
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638 ACE_NAMESPACE_INLINE_FUNCTION void unique_name (const void *object,
00639 ACE_TCHAR *name,
00640 size_t length);
00641
00642
00643 ACE_NAMESPACE_INLINE_FUNCTION u_long log2 (u_long num);
00644
00645
00646 extern ACE_Export ACE_TCHAR nibble2hex (u_int n);
00647
00648
00649 ACE_NAMESPACE_INLINE_FUNCTION u_char hex2byte (ACE_TCHAR c);
00650
00651
00652 extern ACE_Export bool debug (void);
00653 extern ACE_Export void debug (bool onoff);
00654
00655
00656 extern ACE_Export int select (int width,
00657 ACE_Handle_Set *readfds,
00658 ACE_Handle_Set *writefds = 0,
00659 ACE_Handle_Set *exceptfds = 0,
00660 const ACE_Time_Value *timeout = 0);
00661
00662
00663
00664 extern ACE_Export int select (int width,
00665 ACE_Handle_Set &readfds,
00666 const ACE_Time_Value *timeout = 0);
00667
00668
00669 ACE_NAMESPACE_INLINE_FUNCTION
00670 int handle_read_ready (ACE_HANDLE handle,
00671 const ACE_Time_Value *timeout);
00672
00673
00674 ACE_NAMESPACE_INLINE_FUNCTION
00675 int handle_write_ready (ACE_HANDLE handle,
00676 const ACE_Time_Value *timeout);
00677
00678
00679 ACE_NAMESPACE_INLINE_FUNCTION
00680 int handle_exception_ready (ACE_HANDLE handle,
00681 const ACE_Time_Value *timeout);
00682
00683
00684 extern ACE_Export int handle_ready (ACE_HANDLE handle,
00685 const ACE_Time_Value *timeout,
00686 int read_ready,
00687 int write_ready,
00688 int exception_ready);
00689
00690
00691
00692
00693 extern ACE_Export int enter_recv_timedwait (ACE_HANDLE handle,
00694 const ACE_Time_Value *timeout,
00695 int &val);
00696
00697
00698
00699
00700 extern ACE_Export int enter_send_timedwait (ACE_HANDLE handle,
00701 const ACE_Time_Value* timeout,
00702 int &val);
00703
00704
00705
00706 extern ACE_Export void record_and_set_non_blocking_mode (ACE_HANDLE handle,
00707 int &val);
00708
00709
00710
00711 extern ACE_Export void restore_non_blocking_mode (ACE_HANDLE handle,
00712 int val);
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722 ACE_NAMESPACE_INLINE_FUNCTION ssize_t recv_i (ACE_HANDLE handle,
00723 void *buf,
00724 size_t len);
00725
00726 extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00727 void *buf,
00728 size_t len,
00729 int flags,
00730 size_t *bytes_transferred);
00731
00732 extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00733 void *buf,
00734 size_t len,
00735 int flags,
00736 const ACE_Time_Value *timeout,
00737 size_t *bytes_transferred);
00738
00739 #if defined (ACE_HAS_TLI)
00740
00741 extern ACE_Export ssize_t t_rcv_n_i (ACE_HANDLE handle,
00742 void *buf,
00743 size_t len,
00744 int *flags,
00745 size_t *bytes_transferred);
00746
00747 extern ACE_Export ssize_t t_rcv_n_i (ACE_HANDLE handle,
00748 void *buf,
00749 size_t len,
00750 int *flags,
00751 const ACE_Time_Value *timeout,
00752 size_t *bytes_transferred);
00753
00754 #endif
00755
00756 extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00757 void *buf,
00758 size_t len,
00759 size_t *bytes_transferred);
00760
00761 extern ACE_Export ssize_t recv_n_i (ACE_HANDLE handle,
00762 void *buf,
00763 size_t len,
00764 const ACE_Time_Value *timeout,
00765 size_t *bytes_transferred);
00766
00767 extern ACE_Export ssize_t recvv_n_i (ACE_HANDLE handle,
00768 iovec *iov,
00769 int iovcnt,
00770 size_t *bytes_transferred);
00771
00772 extern ACE_Export ssize_t recvv_n_i (ACE_HANDLE handle,
00773 iovec *iov,
00774 int iovcnt,
00775 const ACE_Time_Value *timeout,
00776 size_t *bytes_transferred);
00777
00778
00779
00780
00781
00782 ACE_NAMESPACE_INLINE_FUNCTION ssize_t send_i (ACE_HANDLE handle,
00783 const void *buf,
00784 size_t len);
00785
00786 extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00787 const void *buf,
00788 size_t len,
00789 int flags,
00790 size_t *bytes_transferred);
00791
00792 extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00793 const void *buf,
00794 size_t len,
00795 int flags,
00796 const ACE_Time_Value *timeout,
00797 size_t *bytes_transferred);
00798
00799 #if defined (ACE_HAS_TLI)
00800
00801 extern ACE_Export ssize_t t_snd_n_i (ACE_HANDLE handle,
00802 const void *buf,
00803 size_t len,
00804 int flags,
00805 size_t *bytes_transferred);
00806
00807 extern ACE_Export ssize_t t_snd_n_i (ACE_HANDLE handle,
00808 const void *buf,
00809 size_t len,
00810 int flags,
00811 const ACE_Time_Value *timeout,
00812 size_t *bytes_transferred);
00813
00814 #endif
00815
00816 extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00817 const void *buf,
00818 size_t len,
00819 size_t *bytes_transferred);
00820
00821 extern ACE_Export ssize_t send_n_i (ACE_HANDLE handle,
00822 const void *buf,
00823 size_t len,
00824 const ACE_Time_Value *timeout,
00825 size_t *bytes_transferred);
00826
00827 extern ACE_Export ssize_t sendv_n_i (ACE_HANDLE handle,
00828 const iovec *iov,
00829 int iovcnt,
00830 size_t *bytes_transferred);
00831
00832 extern ACE_Export ssize_t sendv_n_i (ACE_HANDLE handle,
00833 const iovec *iov,
00834 int iovcnt,
00835 const ACE_Time_Value *timeout,
00836 size_t *bytes_transferred);
00837
00838 }
00839
00840
00841 ACE_END_VERSIONED_NAMESPACE_DECL
00842
00843 #if defined (__ACE_INLINE__)
00844 #include "ace/ACE.inl"
00845 #endif
00846
00847 #include "ace/post.h"
00848
00849 #endif