acl
3.5.3.0
|
#include "acl_define.h"
#include <time.h>
#include <sys/types.h>
#include "acl_array.h"
#include "acl_htable.h"
#include "acl_vstring.h"
类 | |
struct | ACL_VSTREAM_CLOSE_HANDLE |
struct | ACL_VSTREAM |
类型定义 | |
typedef struct ACL_VSTREAM | ACL_VSTREAM |
typedef int(* | ACL_VSTREAM_RD_FN) (ACL_SOCKET fd, void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
typedef int(* | ACL_VSTREAM_WR_FN) (ACL_SOCKET fd, const void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
typedef int(* | ACL_VSTREAM_WV_FN) (ACL_SOCKET fd, const struct iovec *vec, int count, int timeout, ACL_VSTREAM *fp, void *context) |
typedef int(* | ACL_FSTREAM_RD_FN) (ACL_FILE_HANDLE fh, void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
typedef int(* | ACL_FSTREAM_WR_FN) (ACL_FILE_HANDLE fh, const void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
typedef int(* | ACL_FSTREAM_WV_FN) (ACL_FILE_HANDLE fh, const struct iovec *vec, int count, int timeout, ACL_VSTREAM *fp, void *context) |
typedef struct ACL_VSTREAM_CLOSE_HANDLE | ACL_VSTREAM_CLOSE_HANDLE |
函数 | |
ACL_API void | acl_vstream_init (void) |
ACL_API int | acl_vstream_peekfd (ACL_VSTREAM *fp) |
ACL_API ACL_VSTREAM * | acl_vstream_clone (const ACL_VSTREAM *stream_src) |
ACL_API int | acl_vstream_set_fdtype (ACL_VSTREAM *fp, int type) |
ACL_API ACL_VSTREAM * | acl_vstream_fhopen (ACL_FILE_HANDLE fh, unsigned int oflags) |
ACL_API ACL_VSTREAM * | acl_vstream_fdopen (ACL_SOCKET fd, unsigned int oflags, size_t buflen, int rw_timeo, int fdtype) |
ACL_API ACL_VSTREAM * | acl_vstream_fopen (const char *path, unsigned int oflags, int mode, size_t buflen) |
ACL_API char * | acl_vstream_loadfile (const char *path) |
ACL_API char * | acl_vstream_loadfile2 (const char *path, ssize_t *size) |
ACL_API void | acl_vstream_ctl (ACL_VSTREAM *fp, int name,...) |
ACL_API acl_off_t | acl_vstream_fseek (ACL_VSTREAM *fp, acl_off_t offset, int whence) |
ACL_API acl_off_t | acl_vstream_fseek2 (ACL_VSTREAM *fp, acl_off_t offset, int whence) |
ACL_API acl_off_t | acl_vstream_ftell (ACL_VSTREAM *fp) |
ACL_API int | acl_file_ftruncate (ACL_VSTREAM *fp, acl_off_t length) |
ACL_API int | acl_file_truncate (const char *path, acl_off_t length) |
ACL_API int | acl_vstream_fstat (ACL_VSTREAM *fp, struct acl_stat *buf) |
ACL_API acl_int64 | acl_vstream_fsize (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_getc (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_nonb_readn (ACL_VSTREAM *fp, char *buf, int size) |
ACL_API int | acl_vstream_probe_status (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_ungetc (ACL_VSTREAM *fp, int ch) |
ACL_API int | acl_vstream_unread (ACL_VSTREAM *fp, const void *ptr, size_t length) |
ACL_API int | acl_vstream_gets (ACL_VSTREAM *fp, void *vptr, size_t maxlen) |
ACL_API int | acl_vstream_gets_nonl (ACL_VSTREAM *fp, void *vptr, size_t maxlen) |
ACL_API int | acl_vstream_readtags (ACL_VSTREAM *fp, void *vptr, size_t maxlen, const char *tag, size_t taglen) |
ACL_API int | acl_vstream_readn (ACL_VSTREAM *fp, void *vptr, size_t maxlen) |
ACL_API int | acl_vstream_bfcp_some (ACL_VSTREAM *fp, void *vptr, size_t maxlen) |
ACL_API int | acl_vstream_read (ACL_VSTREAM *fp, void *vptr, size_t maxlen) |
ACL_API int | acl_vstream_gets_peek (ACL_VSTREAM *fp, ACL_VSTRING *buf, int *ready) |
ACL_API int | acl_vstream_gets_nonl_peek (ACL_VSTREAM *fp, ACL_VSTRING *buf, int *ready) |
ACL_API int | acl_vstream_readn_peek (ACL_VSTREAM *fp, ACL_VSTRING *buf, int cnt, int *ready) |
ACL_API int | acl_vstream_read_peek (ACL_VSTREAM *fp, ACL_VSTRING *buf) |
ACL_API int | acl_vstream_read_peek3 (ACL_VSTREAM *fp, void *buf, size_t size) |
ACL_API int | acl_vstream_can_read (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_fsync (ACL_VSTREAM *fp) |
ACL_API void | acl_vstream_buffed_space (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_fflush (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_buffed_writen (ACL_VSTREAM *fp, const void *vptr, size_t dlen) |
ACL_API int | acl_vstream_buffed_vfprintf (ACL_VSTREAM *fp, const char *fmt, va_list ap) |
ACL_API int | ACL_PRINTF (2, 3) acl_vstream_buffed_fprintf(ACL_VSTREAM *fp |
ACL_API int const char ACL_API int | acl_vstream_buffed_printf (const char *,...) |
ACL_API int | acl_vstream_buffed_fputs (const char *s, ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_buffed_puts (const char *s) |
ACL_API int | acl_vstream_write (ACL_VSTREAM *fp, const void *vptr, int dlen) |
ACL_API int | acl_vstream_writev (ACL_VSTREAM *fp, const struct iovec *vector, int count) |
ACL_API int | acl_vstream_writevn (ACL_VSTREAM *fp, const struct iovec *vector, int count) |
ACL_API int | acl_vstream_vfprintf (ACL_VSTREAM *fp, const char *fmt, va_list ap) |
ACL_API int const char ACL_API int | acl_vstream_printf (const char *,...) |
ACL_API int | acl_vstream_fputs (const char *s, ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_puts (const char *s) |
ACL_API int | acl_vstream_writen (ACL_VSTREAM *fp, const void *vptr, size_t dlen) |
ACL_API void | acl_vstream_free (ACL_VSTREAM *fp) |
ACL_API int | acl_vstream_close (ACL_VSTREAM *fp) |
ACL_API void | acl_vstream_call_close_handles (ACL_VSTREAM *fp) |
ACL_API void | acl_vstream_add_close_handle (ACL_VSTREAM *fp, void(*close_fn)(ACL_VSTREAM *, void *), void *context) |
ACL_API void | acl_vstream_delete_close_handle (ACL_VSTREAM *fp, void(*close_fn)(ACL_VSTREAM *, void *), void *context) |
ACL_API void | acl_vstream_clean_close_handle (ACL_VSTREAM *fp) |
ACL_API void | acl_vstream_reset (ACL_VSTREAM *fp) |
ACL_API const char * | acl_vstream_strerror (ACL_VSTREAM *fp) |
ACL_API void | acl_vstream_set_path (ACL_VSTREAM *fp, const char *path) |
ACL_API void | acl_vstream_set_peer (ACL_VSTREAM *fp, const char *addr) |
ACL_API int | acl_vstream_set_peer_addr (ACL_VSTREAM *fp, const struct sockaddr *sa) |
ACL_API void | acl_vstream_set_local (ACL_VSTREAM *fp, const char *addr) |
ACL_API int | acl_vstream_set_local_addr (ACL_VSTREAM *fp, const struct sockaddr *sa) |
ACL_API int | acl_vstream_add_object (ACL_VSTREAM *fp, const char *key, void *obj) |
ACL_API int | acl_vstream_del_object (ACL_VSTREAM *fp, const char *key) |
ACL_API void * | acl_vstream_get_object (ACL_VSTREAM *fp, const char *key) |
ACL_API void | acl_socket_read_hook (ACL_VSTREAM_RD_FN read_fn) |
ACL_API void | acl_socket_write_hook (ACL_VSTREAM_WR_FN write_fn) |
ACL_API void | acl_socket_writev_hook (ACL_VSTREAM_WV_FN writev_fn) |
ACL_API void | acl_socket_close_hook (int(*close_fn)(ACL_SOCKET)) |
变量 | |
ACL_API ACL_VSTREAM | acl_vstream_fstd [] |
ACL_API int const char * | fmt |
#define ACL_IF_VSTREAM_ERR | ( | stream_ptr | ) | ((stream_ptr)->flag & ACL_VSTREAM_FLAG_BAD) |
#define ACL_VSTREAM_BFRD_CNT | ( | stream_ptr | ) | ((stream_ptr) == NULL ? -1 : (stream_ptr)->read_cnt) |
流中在读缓冲区中的数据量大小
stream_ptr | {ACL_VSTREAM*) 类型的指针 |
在文件 acl_vstream.h 第 924 行定义.
#define acl_vstream_buffed_fwrite acl_vstream_buffed_writen |
在文件 acl_vstream.h 第 612 行定义.
#define ACL_VSTREAM_BUFSIZE 4096 |
在文件 acl_vstream.h 第 40 行定义.
#define ACL_VSTREAM_CLR_MS | ( | x | ) | ((x)->flag &= ~ACL_VSTREAM_FLAG_MS) |
在文件 acl_vstream.h 第 139 行定义.
#define ACL_VSTREAM_CLR_NS | ( | x | ) | ((x)->flag &= ~ACL_VSTREAM_FLAG_NS) |
在文件 acl_vstream.h 第 143 行定义.
#define ACL_VSTREAM_CLR_US | ( | x | ) | ((x)->flag &= ~ACL_VSTREAM_FLAG_US) |
在文件 acl_vstream.h 第 141 行定义.
#define ACL_VSTREAM_CTL_CACHE_SEEK 7 |
在文件 acl_vstream.h 第 317 行定义.
#define ACL_VSTREAM_CTL_CONTEXT 6 |
在文件 acl_vstream.h 第 315 行定义.
#define ACL_VSTREAM_CTL_CTX ACL_VSTREAM_CTL_CONTEXT |
在文件 acl_vstream.h 第 316 行定义.
#define ACL_VSTREAM_CTL_END 0 |
在文件 acl_vstream.h 第 309 行定义.
#define ACL_VSTREAM_CTL_FD 4 |
在文件 acl_vstream.h 第 313 行定义.
#define ACL_VSTREAM_CTL_PATH 3 |
在文件 acl_vstream.h 第 312 行定义.
#define ACL_VSTREAM_CTL_READ_FN 1 |
在文件 acl_vstream.h 第 310 行定义.
#define ACL_VSTREAM_CTL_TIMEOUT 5 |
在文件 acl_vstream.h 第 314 行定义.
#define ACL_VSTREAM_CTL_WRITE_FN 2 |
在文件 acl_vstream.h 第 311 行定义.
#define ACL_VSTREAM_EOF (-1) /* no more space or data */ |
在文件 acl_vstream.h 第 25 行定义.
#define ACL_VSTREAM_ERR (&acl_vstream_fstd[2]) |
标准错误输出
在文件 acl_vstream.h 第 208 行定义.
#define ACL_VSTREAM_ERRNO | ( | stream_ptr | ) | ((stream_ptr)->errnum) |
从数据流中取出与该流读写有关的系统错误号
stream_ptr | {ACL_VSTREAM*) 类型的指针 |
在文件 acl_vstream.h 第 963 行定义.
#define acl_vstream_fclose acl_vstream_close |
在文件 acl_vstream.h 第 750 行定义.
#define acl_vstream_fgets acl_vstream_gets |
在文件 acl_vstream.h 第 441 行定义.
#define ACL_VSTREAM_FILE | ( | stream_ptr | ) | ((stream_ptr)->fd.h_file) |
#define ACL_VSTREAM_FLAG_BAD |
在文件 acl_vstream.h 第 115 行定义.
#define ACL_VSTREAM_FLAG_CACHE_SEEK (1 << 3) |
在文件 acl_vstream.h 第 108 行定义.
#define ACL_VSTREAM_FLAG_CLIENT (1 << 14) |
在文件 acl_vstream.h 第 118 行定义.
#define ACL_VSTREAM_FLAG_CONNECT (1 << 15) |
在文件 acl_vstream.h 第 119 行定义.
#define ACL_VSTREAM_FLAG_CONNECTING (1 << 18) /* 正在连接过程中 */ |
在文件 acl_vstream.h 第 124 行定义.
#define ACL_VSTREAM_FLAG_DEFER_FREE (1 << 4) |
延迟关闭
在文件 acl_vstream.h 第 109 行定义.
#define ACL_VSTREAM_FLAG_EOF (1 << 11) |
结束
在文件 acl_vstream.h 第 112 行定义.
#define ACL_VSTREAM_FLAG_ERR (1 << 10) |
其它错误
在文件 acl_vstream.h 第 111 行定义.
#define ACL_VSTREAM_FLAG_MS (1 << 20) |
毫秒超时级别
在文件 acl_vstream.h 第 127 行定义.
#define ACL_VSTREAM_FLAG_NS (1 << 22) |
纳秒超时级别
在文件 acl_vstream.h 第 129 行定义.
#define ACL_VSTREAM_FLAG_PREREAD (1 << 19) /* 对于 acl_vstream_can_read 调用过程是否允许预读 */ |
在文件 acl_vstream.h 第 125 行定义.
#define ACL_VSTREAM_FLAG_RDSHORT (1 << 13) |
读的不够
在文件 acl_vstream.h 第 114 行定义.
#define ACL_VSTREAM_FLAG_READ (1 << 0) |
在文件 acl_vstream.h 第 105 行定义.
#define ACL_VSTREAM_FLAG_RW (1 << 2) |
在文件 acl_vstream.h 第 107 行定义.
#define ACL_VSTREAM_FLAG_SOCKPAIR (1 << 16) |
在文件 acl_vstream.h 第 120 行定义.
#define ACL_VSTREAM_FLAG_TAGYES (1 << 17) /* 若读到要求的标志位则置位 */ |
在文件 acl_vstream.h 第 122 行定义.
#define ACL_VSTREAM_FLAG_TIMEOUT (1 << 12) |
超时
在文件 acl_vstream.h 第 113 行定义.
#define ACL_VSTREAM_FLAG_US (1 << 21) |
微秒超时级别
在文件 acl_vstream.h 第 128 行定义.
#define ACL_VSTREAM_FLAG_WRITE (1 << 1) |
在文件 acl_vstream.h 第 106 行定义.
#define acl_vstream_ftimeout | ( | stream_ptr | ) | ((stream_ptr)->flag & ACL_VSTREAM_FLAG_TIMEOUT) |
#define acl_vstream_fwrite acl_vstream_writen |
在文件 acl_vstream.h 第 737 行定义.
#define acl_vstream_get_char acl_vstream_getc |
在文件 acl_vstream.h 第 386 行定义.
#define ACL_VSTREAM_GETC | ( | stream_ptr | ) |
从流中读取一个字节的宏实现,效率要比 acl_vstream_getc()/1 高
stream_ptr | {ACL_VSTREAM*} 数据流指针 |
在文件 acl_vstream.h 第 801 行定义.
#define ACL_VSTREAM_IN (&acl_vstream_fstd[0]) |
标准输入
在文件 acl_vstream.h 第 206 行定义.
#define ACL_VSTREAM_IS_MS | ( | x | ) | (((x)->flag & ACL_VSTREAM_FLAG_MS) != 0) |
在文件 acl_vstream.h 第 146 行定义.
#define ACL_VSTREAM_IS_NS | ( | x | ) | (((x)->flag & ACL_VSTREAM_FLAG_NS) != 0) |
在文件 acl_vstream.h 第 150 行定义.
#define ACL_VSTREAM_IS_US | ( | x | ) | (((x)->flag & ACL_VSTREAM_FLAG_US) != 0) |
在文件 acl_vstream.h 第 148 行定义.
#define ACL_VSTREAM_LOCAL | ( | stream_ptr | ) | ((stream_ptr)->addr_local) |
当 ACL_VSTREAM 为网络流时,用此宏取得本地的地址
在文件 acl_vstream.h 第 871 行定义.
#define ACL_VSTREAM_OUT (&acl_vstream_fstd[1]) |
标准输出
在文件 acl_vstream.h 第 207 行定义.
#define ACL_VSTREAM_PATH | ( | stream_ptr | ) | ((stream_ptr)->path) |
#define ACL_VSTREAM_PEER | ( | stream_ptr | ) | ((stream_ptr)->addr_peer) |
当 ACL_VSTREAM 为网络流时,用此宏取得对方的地址
在文件 acl_vstream.h 第 851 行定义.
#define ACL_VSTREAM_PUTC | ( | ch, | |
stream_ptr | |||
) |
向流中写一个字节的宏实现
stream_ptr | {ACL_VSTREAM*} 数据流指针 |
在文件 acl_vstream.h 第 813 行定义.
#define acl_vstream_readline acl_vstream_gets |
在文件 acl_vstream.h 第 440 行定义.
#define ACL_VSTREAM_SET_EOF | ( | stream_ptr | ) |
将流置为结束状态
stream_ptr | {ACL_VSTREAM*) 类型的指针 |
在文件 acl_vstream.h 第 941 行定义.
#define ACL_VSTREAM_SET_FILE | ( | stream_ptr, | |
_fh | |||
) |
设置流中的文件句柄
stream_ptr | {ACL_VSTREAM*} |
_fh | {ACL_FILE_HANDLE} |
在文件 acl_vstream.h 第 912 行定义.
#define ACL_VSTREAM_SET_MS | ( | x | ) | ((x)->flag |= ACL_VSTREAM_FLAG_MS) |
在文件 acl_vstream.h 第 132 行定义.
#define ACL_VSTREAM_SET_NS | ( | x | ) | ((x)->flag |= ACL_VSTREAM_FLAG_NS) |
在文件 acl_vstream.h 第 136 行定义.
#define ACL_VSTREAM_SET_RWTIMO | ( | stream_ptr, | |
_rw_timeo | |||
) |
设定流的读写超时值
stream_ptr | {ACL_VSTREAM*) 类型的指针 |
_rw_timeo | {int} 超时值大小(以秒为单位) |
在文件 acl_vstream.h 第 932 行定义.
#define ACL_VSTREAM_SET_SOCK | ( | stream_ptr, | |
_fd | |||
) |
设定流的读/写套接字
stream_ptr | {ACL_VSTREAM*} |
_fd | {ACL_SOCKET} 套接字 |
在文件 acl_vstream.h 第 902 行定义.
#define ACL_VSTREAM_SET_US | ( | x | ) | ((x)->flag |= ACL_VSTREAM_FLAG_US) |
在文件 acl_vstream.h 第 134 行定义.
#define ACL_VSTREAM_SOCK | ( | stream_ptr | ) | ((stream_ptr)->fd.sock) |
#define ACL_VSTREAM_TYPE_FILE (1 << 1) |
在文件 acl_vstream.h 第 75 行定义.
#define ACL_VSTREAM_TYPE_INET4 (1 << 6) |
在文件 acl_vstream.h 第 80 行定义.
#define ACL_VSTREAM_TYPE_INET6 (1 << 7) |
在文件 acl_vstream.h 第 81 行定义.
#define ACL_VSTREAM_TYPE_LISTEN (1 << 2) |
在文件 acl_vstream.h 第 76 行定义.
#define ACL_VSTREAM_TYPE_LISTEN_INET (1 << 3) |
在文件 acl_vstream.h 第 77 行定义.
#define ACL_VSTREAM_TYPE_LISTEN_IOCP (1 << 5) |
在文件 acl_vstream.h 第 79 行定义.
#define ACL_VSTREAM_TYPE_LISTEN_UNIX (1 << 4) |
在文件 acl_vstream.h 第 78 行定义.
#define ACL_VSTREAM_TYPE_SOCK (1 << 0) |
在文件 acl_vstream.h 第 74 行定义.
#define ACL_VSTREAM_TYPE_UNIX (1 << 8) |
在文件 acl_vstream.h 第 82 行定义.
typedef int(* ACL_FSTREAM_RD_FN) (ACL_FILE_HANDLE fh, void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 50 行定义.
typedef int(* ACL_FSTREAM_WR_FN) (ACL_FILE_HANDLE fh, const void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 52 行定义.
typedef int(* ACL_FSTREAM_WV_FN) (ACL_FILE_HANDLE fh, const struct iovec *vec, int count, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 54 行定义.
typedef struct ACL_VSTREAM ACL_VSTREAM |
在文件 acl_vstream.h 第 42 行定义.
typedef struct ACL_VSTREAM_CLOSE_HANDLE ACL_VSTREAM_CLOSE_HANDLE |
typedef int(* ACL_VSTREAM_RD_FN) (ACL_SOCKET fd, void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 44 行定义.
typedef int(* ACL_VSTREAM_WR_FN) (ACL_SOCKET fd, const void *buf, size_t size, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 46 行定义.
typedef int(* ACL_VSTREAM_WV_FN) (ACL_SOCKET fd, const struct iovec *vec, int count, int timeout, ACL_VSTREAM *fp, void *context) |
在文件 acl_vstream.h 第 48 行定义.
ACL_API int acl_file_ftruncate | ( | ACL_VSTREAM * | fp, |
acl_off_t | length | ||
) |
将源文件进程截断
fp | {ACL_VSTREAM*} 数据流指针 |
length | {acl_off_t} 数据长度(>=0) |
ACL_API int acl_file_truncate | ( | const char * | path, |
acl_off_t | length | ||
) |
将源文件进程截断
path | {const char*} 文件名(可以是全路径或相对路径) |
length | {acl_off_t} 数据长度(>=0) |
ACL_API int ACL_PRINTF | ( | 2 | , |
3 | |||
) |
缓冲带格式的流输出, 类似于 fprintf()
fp | {ACL_VSTREAM*} 数据流 |
fmt | {const char*} 数据格式 |
... | 变参序列 |
带格式的流输出, 类似于 fprintf()
fp | {ACL_VSTREAM*} 数据流 |
fmt | {const char*} 数据格式 |
... | 变参序列 |
ACL_API void acl_socket_close_hook | ( | int(*)(ACL_SOCKET) | close_fn | ) |
ACL_API void acl_socket_read_hook | ( | ACL_VSTREAM_RD_FN | read_fn | ) |
ACL_API void acl_socket_write_hook | ( | ACL_VSTREAM_WR_FN | write_fn | ) |
ACL_API void acl_socket_writev_hook | ( | ACL_VSTREAM_WV_FN | writev_fn | ) |
ACL_API void acl_vstream_add_close_handle | ( | ACL_VSTREAM * | fp, |
void(*)(ACL_VSTREAM *, void *) | close_fn, | ||
void * | context | ||
) |
注册一个关闭函数
fp | {ACL_VSTREAM*} 数据流 |
close_fn | {void (*)(ACL_VSTREAM*, void*)} 关闭函数指针 |
context | {void*} close_fn 所需要的参数 |
ACL_API int acl_vstream_add_object | ( | ACL_VSTREAM * | fp, |
const char * | key, | ||
void * | obj | ||
) |
ACL_API int acl_vstream_bfcp_some | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen | ||
) |
将缓冲区内的数据拷贝到 vptr 中
fp | {ACL_VSTREAM*} 数据流 |
vptr | {void*} 用户的数据缓冲区指针地址 |
maxlen | {size_t} vptr 数据缓冲区的空间大小 |
ACL_API int acl_vstream_buffed_fputs | ( | const char * | s, |
ACL_VSTREAM * | fp | ||
) |
向流缓冲区中写入一行数据
s | {const char*} 源字符串 |
fp | {ACL_VSTREAM*} 数据流 |
ACL_API int const char ACL_API int acl_vstream_buffed_printf | ( | const char * | , |
... | |||
) |
向标准输出打印信息
... | 变参序列 |
ACL_API int acl_vstream_buffed_puts | ( | const char * | s | ) |
向标准输出流缓冲区中写入一行数据
s | {const char*} 源字符串 |
ACL_API void acl_vstream_buffed_space | ( | ACL_VSTREAM * | fp | ) |
对于带缓冲方式的写,该函数保证缓冲区空间非空
fp | {ACL_VSTREAM*} 数据流 |
ACL_API int acl_vstream_buffed_vfprintf | ( | ACL_VSTREAM * | fp, |
const char * | fmt, | ||
va_list | ap | ||
) |
缓冲带格式的流输出, 类似于 vfprintf()
fp | {ACL_VSTREAM*} 数据流 |
fmt | {const char*} 数据格式 |
ap | {va_list} |
ACL_API int acl_vstream_buffed_writen | ( | ACL_VSTREAM * | fp, |
const void * | vptr, | ||
size_t | dlen | ||
) |
带缓冲式写
fp | {ACL_VSTREAM*} 数据流 |
vptr | {const void*} 数据指针起始位置 |
dlen | {size_t} 要写入的数据量 |
ACL_API void acl_vstream_call_close_handles | ( | ACL_VSTREAM * | fp | ) |
调用数据流中的所有关闭回调函数同时清除这些回调函数
fp | {ACL_VSTREAM*} 数据流 |
ACL_API int acl_vstream_can_read | ( | ACL_VSTREAM * | fp | ) |
检查 ACL_VSTREAM 流是否可读或出错
fp | {ACL_VSTREAM*} 数据流 |
ACL_API void acl_vstream_clean_close_handle | ( | ACL_VSTREAM * | fp | ) |
清除一个数据流中所有的关闭句柄
fp | {ACL_VSTREAM*} 数据流 |
ACL_API ACL_VSTREAM* acl_vstream_clone | ( | const ACL_VSTREAM * | stream_src | ) |
克隆一个ACL_VSTREAM流,除ioctl_read_ctx, ioctl_write_ctx, fdp 外所有数据都拷贝,如果是动态内存数据,则新的流将在内部动态分配 内存且将源数据进行拷贝
stream_src | {ACL_VSTREAM*} 源流指针 |
ACL_API int acl_vstream_close | ( | ACL_VSTREAM * | fp | ) |
释放一个数据流的内存空间并关闭其所携带的 socket 描述符
fp | {ACL_VSTREAM*} 数据流 |
ACL_API void acl_vstream_ctl | ( | ACL_VSTREAM * | fp, |
int | name, | ||
... | |||
) |
设置流的各个参数
fp | {ACL_VSTREAM*} 流指针 |
name | {int} 所设置的参数类型中的第一个参数类型名, defined as ACL_VSTREAM_CTL_ |
ACL_API int acl_vstream_del_object | ( | ACL_VSTREAM * | fp, |
const char * | key | ||
) |
ACL_API void acl_vstream_delete_close_handle | ( | ACL_VSTREAM * | fp, |
void(*)(ACL_VSTREAM *, void *) | close_fn, | ||
void * | context | ||
) |
删除一个关闭句柄.
fp | {ACL_VSTREAM*} 数据流 |
close_fn | {void (*)(ACL_VSTREAM*, void*)} 关闭函数指针 |
context | {void*} close_fn 所需要的参数 |
ACL_API ACL_VSTREAM* acl_vstream_fdopen | ( | ACL_SOCKET | fd, |
unsigned int | oflags, | ||
size_t | buflen, | ||
int | rw_timeo, | ||
int | fdtype | ||
) |
分配一个数据流
fd | {ACL_SOCKET} 描述符(可以为网络描述字也可以为文件描述字) |
oflags | {unsigned int} 标志位, We're assuming that O_RDONLY: 0x0000, O_WRONLY: 0x0001, O_RDWR: 0x0002, O_APPEND: 0x0008, O_CREAT: 0x0100, O_TRUNC: 0x0200, O_EXCL: 0x0400; just for win32, O_TEXT: 0x4000, O_BINARY: 0x8000, O_RAW: O_BINARY, O_SEQUENTIAL: 0x0020, O_RANDOM: 0x0010. |
buflen | {size_t} 内置缓冲区的大小 |
rw_timeo | {int} 读写超时时间(以秒为单位) |
fdtype | {int} ACL_VSTREAM_TYPE_FILE, ACL_VSTREAM_TYPE_SOCK, ACL_VSTREAM_TYPE_LISTEN | ACL_VSTREAM_TYPE_LISTEN_INET | ACL_VSTREAM_TYPE_LISTEN_UNIX |
ACL_API int acl_vstream_fflush | ( | ACL_VSTREAM * | fp | ) |
刷新写缓冲区里的数据
fp | socket 数据流 |
ACL_API ACL_VSTREAM* acl_vstream_fhopen | ( | ACL_FILE_HANDLE | fh, |
unsigned int | oflags | ||
) |
分配一文件句柄所对应的数据流
fh | {ACL_FILE_HANDLE} 文件句柄 |
oflags | {unsigned int} 标志位, We're assuming that O_RDONLY: 0x0000, O_WRONLY: 0x0001, O_RDWR: 0x0002, O_APPEND: 0x0008, O_CREAT: 0x0100, O_TRUNC: 0x0200, O_EXCL: 0x0400; just for win32, O_TEXT: 0x4000, O_BINARY: 0x8000, O_RAW: O_BINARY, O_SEQUENTIAL: 0x0020, O_RANDOM: 0x0010. 同时设置 |
ACL_API ACL_VSTREAM* acl_vstream_fopen | ( | const char * | path, |
unsigned int | oflags, | ||
int | mode, | ||
size_t | buflen | ||
) |
打开一个文件的数据流
path | {const char*} 文件名 |
oflags | {unsigned int} 标志位, We're assuming that O_RDONLY: 0x0000, O_WRONLY: 0x0001, O_RDWR: 0x0002, O_APPEND: 0x0008, O_CREAT: 0x0100, O_TRUNC: 0x0200, O_EXCL: 0x0400; just for win32, O_TEXT: 0x4000, O_BINARY: 0x8000, O_RAW: O_BINARY, O_SEQUENTIAL: 0x0020, O_RANDOM: 0x0010. |
mode | {int} 打开文件句柄时的模式(如: 0600) |
buflen | {size_t} 内置缓冲区的大小 |
ACL_API int acl_vstream_fputs | ( | const char * | s, |
ACL_VSTREAM * | fp | ||
) |
向流中写入一行数据
s | {const char*} 源字符串 |
fp | {ACL_VSTREAM*} 数据流 |
ACL_API void acl_vstream_free | ( | ACL_VSTREAM * | fp | ) |
释放一个数据流的内存空间, 但并不关闭 socket 描述符
fp | {ACL_VSTREAM*} 数据流 |
ACL_API acl_off_t acl_vstream_fseek | ( | ACL_VSTREAM * | fp, |
acl_off_t | offset, | ||
int | whence | ||
) |
定位文件指针
fp | {ACL_VSTREAM*} 数据流指针 |
offset | {acl_off_t} 偏移量 |
whence | {int} 偏移方向, SEEK_SET, SEEK_CUR, SEEK_END |
ACL_API acl_off_t acl_vstream_fseek2 | ( | ACL_VSTREAM * | fp, |
acl_off_t | offset, | ||
int | whence | ||
) |
定位文件指针
fp | {ACL_VSTREAM*} 数据流指针 |
offset | {acl_off_t} 偏移量 |
whence | {int} 移动方向:SEEK_SET(从文件起始位置后移动), SEEK_CUR(从当前文件指针位置向后移动), SEEK_END(从文件尾向前移动) |
ACL_API acl_int64 acl_vstream_fsize | ( | ACL_VSTREAM * | fp | ) |
ACL_API int acl_vstream_fstat | ( | ACL_VSTREAM * | fp, |
struct acl_stat * | buf | ||
) |
ACL_API int acl_vstream_fsync | ( | ACL_VSTREAM * | fp | ) |
将文件流中的系统缓冲区及流缓冲区中的数据都直接同步至硬盘
fp | {ACL_VSTREAM*} 文件流指针 |
ACL_API acl_off_t acl_vstream_ftell | ( | ACL_VSTREAM * | fp | ) |
返回当前文件指针所在位置
fp | {ACL_VSTREAM*} 数据流指针 |
ACL_API void* acl_vstream_get_object | ( | ACL_VSTREAM * | fp, |
const char * | key | ||
) |
ACL_API int acl_vstream_getc | ( | ACL_VSTREAM * | fp | ) |
从流中读取一个字节
fp | {ACL_VSTREAM*} 数据流指针 |
ACL_API int acl_vstream_gets | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen | ||
) |
从数据流中读取一行数据, 直到读到 "\n" 或读结束为止, 正常情况下包括 "\n"
fp | {ACL_VSTREAM*} 数据流 |
vptr | {void*} 用户所给的内存缓冲区指针 |
maxlen | {size_t} vptr 缓冲区的大小 |
ACL_API int acl_vstream_gets_nonl | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen | ||
) |
从数据流中读取一行数据, 直到读到 "\n" 或读结束为止, 返回的结果中不包括 "\n"
fp | {ACL_VSTREAM*} 数据流 |
vptr | {void*} 用户所给的内存缓冲区指针 |
maxlen | {size_t} vptr 缓冲区的大小 |
ACL_API int acl_vstream_gets_nonl_peek | ( | ACL_VSTREAM * | fp, |
ACL_VSTRING * | buf, | ||
int * | ready | ||
) |
一次性从 ACL_VSTREAM 流或系统缓存区中读取一行数据, 如果未读到回车换行符, 也将数据拷贝至用户的内存缓冲区, 如果读到回车换行符便将回车换行符自动去掉, 并将回车换行符前的数据拷贝至用户内存区.
fp | {ACL_VSTREAM*} 数据流 |
buf | {ACL_VSTRING*} 数据缓冲区,当 buf->maxlen > 0 时,则限制每行数据 的长度,即当 buf 中的数据长度达到 maxlen 时,即使没有读到完整一行数据,该 函数也会返回,且会将 ready 置 1,调用者需调用 fp->flag 标志位中是否包含 ACL_VSTREAM_FLAG_TAGYES 来判断是否读到一行数据 |
ready | {int*} 是否按要求读到所需数据的标志位指针, 不能为空 |
ACL_API int acl_vstream_gets_peek | ( | ACL_VSTREAM * | fp, |
ACL_VSTRING * | buf, | ||
int * | ready | ||
) |
一次性从 ACL_VSTREAM 流或系统缓存区中读取一行数据, 包括回车换行符 (调用者自行解决WINDOWS与UNIX对于回车换行的兼容性问题), 如果未读到 回车换行符, 也将数据拷贝至用户的内存缓冲区.
fp | {ACL_VSTREAM*} 数据流 |
buf | {ACL_VSTRING*} 数据缓冲区,当 buf->maxlen > 0 时,则限制每行数据 的长度,即当 buf 中的数据长度达到 maxlen 时,即使没有读到完整一行数据,该 函数也会返回,且会将 ready 置 1,调用者需调用 fp->flag 标志位中是否包含 ACL_VSTREAM_FLAG_TAGYES 来判断是否读到一行数据 |
ready | {int*} 是否按要求读到所需数据的标志位指针, 不能为空 |
ACL_API void acl_vstream_init | ( | void | ) |
初始化ACL_VSTREAM流的函数库 对于_WIN32来说,如果想要用标准输入输出,则需要调用此函数进行初始化
ACL_API char* acl_vstream_loadfile | ( | const char * | path | ) |
读取整个文件内容于内存中
path | {const char*} 文件名, 如: /opt/acl/conf/service/test.cf |
ACL_API char* acl_vstream_loadfile2 | ( | const char * | path, |
ssize_t * | size | ||
) |
读取整个文件内容于内存中
path | {const char*} 文件名, 如: /opt/acl/conf/service/test.cf |
size | {ssize_t*} 如果非空,则该值存储返回的缓冲区大小,如果读取内容 出错,则该值会被置 -1 |
ACL_API int acl_vstream_nonb_readn | ( | ACL_VSTREAM * | fp, |
char * | buf, | ||
int | size | ||
) |
从流中非阻塞地一次性最大读取 size 个字节
fp | {ACL_VSTREAM*} 数据流指针 |
buf | {char*} 用户传来的内存缓存区 |
size | {int} buf 缓存区的空间大小 |
ACL_API int acl_vstream_peekfd | ( | ACL_VSTREAM * | fp | ) |
功能: 探测流中有多少数据, 包含缓冲区中的数据与系统缓冲区的数据
fp | {ACL_VSTREAM*} 流指针, 不能为空 |
ACL_API int const char ACL_API int acl_vstream_printf | ( | const char * | , |
... | |||
) |
向标准输出打印信息
... | 变参序列 |
ACL_API int acl_vstream_probe_status | ( | ACL_VSTREAM * | fp | ) |
判断一个给定的数据流是否已经被系统关闭了,当数据流缓存区没有数据时, 该函数会调用系统的读函数(即读一个字节)来判断是否socket出错或已经 关闭;如成功读取一个字节,则说明socket正常,同时将所读的数据放回缓存 区, 如果读返回ACL_VSTREAM_EOF, 便需要判断错误号是否被关闭
fp | {ACL_VSTREAM*} 数据流指针 |
ACL_API int acl_vstream_puts | ( | const char * | s | ) |
向标准输出流中写入一行数据
s | {const char*} 源字符串 |
ACL_API int acl_vstream_read | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen | ||
) |
从数据流中一次性读取 n 个数据, 该 n 有可能会小于用户所需要的 maxlen
fp | {ACL_VSTREAM*} 数据流 |
vptr | {void*} 用户的数据缓冲区指针地址 |
maxlen | {size_t} vptr 数据缓冲区的空间大小 |
ACL_API int acl_vstream_read_peek | ( | ACL_VSTREAM * | fp, |
ACL_VSTRING * | buf | ||
) |
一次性从 ACL_VSTREAM 流或系统缓存区中读取不固定长度的数据
fp | {ACL_VSTREAM*} 数据流 |
buf | {ACL_VSTRING*} 数据缓冲区 |
ACL_API int acl_vstream_read_peek3 | ( | ACL_VSTREAM * | fp, |
void * | buf, | ||
size_t | size | ||
) |
一次性从 ACL_VSTREAM 流或系统缓存区中读取不固定长度的数据
fp | {ACL_VSTREAM*} 数据流 |
buf | {void*} 数据缓冲区 |
size | {size_t} buf 长度 |
ACL_API int acl_vstream_readn | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen | ||
) |
循环读取 maxlen 个数据, 直到读到 maxlen 个字节为止或读出错
fp | {ACL_VSTREAM*} 数据流 |
vptr | {void*} 用户的数据缓冲区指针地址 |
maxlen | {size_t} vptr 数据缓冲区的空间大小 |
ACL_API int acl_vstream_readn_peek | ( | ACL_VSTREAM * | fp, |
ACL_VSTRING * | buf, | ||
int | cnt, | ||
int * | ready | ||
) |
一次性从 ACL_VSTREAM 流或系统缓存区中读取固定长度的数据, 如果未读到所要求的 数据, 也将数据拷贝至用户内存缓冲区, 如果读到所要求的数据, 则将 ready 标志位置位.
fp | {ACL_VSTREAM*} 数据流 |
buf | {ACL_VSTRING*} 数据缓冲区 |
cnt | {int} 所需要读的数据的长度 |
ready | {int*} 是否按要求读到所需数据的标志位指针, 不能为空 |
ACL_API int acl_vstream_readtags | ( | ACL_VSTREAM * | fp, |
void * | vptr, | ||
size_t | maxlen, | ||
const char * | tag, | ||
size_t | taglen | ||
) |
从数据流中获得以字符串为标志结束位的内容
fp | {ACL_VSTREAM*} 类型指针 |
vptr | {void*} 数据存储缓冲区 |
maxlen | {size_t} vptr 缓冲区大小 |
tag | {const char*} 字符串标志 |
taglen | {size_t} tag 中内容的长度大小 |
ACL_API void acl_vstream_reset | ( | ACL_VSTREAM * | fp | ) |
重新复位数据流的内部数据指针及计数值
fp | {ACL_VSTREAM*} 数据流 |
ACL_API int acl_vstream_set_fdtype | ( | ACL_VSTREAM * | fp, |
int | type | ||
) |
设置数据流的类型,该函数将根据所给类型设定用于该数据流上的读、写、关闭函数
fp | {ACL_VSTREAM*} 流指针, 不能为空 |
type | {int} 数据流的类型,defined above: ACL_VSTREAM_TYPE_XXX |
ACL_API void acl_vstream_set_local | ( | ACL_VSTREAM * | fp, |
const char * | addr | ||
) |
当 ACL_VSTREAM 为网络流时,此函数设置本地地址
fp | {ACL_VSTREAM*} 网络流,非空 |
addr | {const char*} 本地地址,非空 |
ACL_API int acl_vstream_set_local_addr | ( | ACL_VSTREAM * | fp, |
const struct sockaddr * | sa | ||
) |
当 ACL_VSTREAM 为网络流时,此函数设置本地地址
fp | {ACL_VSTREAM*} 网络流,非空 |
sa | {const sockaddr*} 本地地址,非空 |
ACL_API void acl_vstream_set_path | ( | ACL_VSTREAM * | fp, |
const char * | path | ||
) |
当 ACL_VSTREAM 为文件流时,设置文件流的路径
fp | {ACL_VSTREAM*} 文件流 |
path | {const char*} 文件路径 |
ACL_API void acl_vstream_set_peer | ( | ACL_VSTREAM * | fp, |
const char * | addr | ||
) |
当 ACL_VSTREAM 为网络流时,此函数设置远程连接地址
fp | {ACL_VSTREAM*} 网络流,非空 |
addr | {const char*} 远程连接地址,非空 |
ACL_API int acl_vstream_set_peer_addr | ( | ACL_VSTREAM * | fp, |
const struct sockaddr * | sa | ||
) |
当 ACL_VSTREAM 为网络流时,此函数设置远程连接地址
fp | {ACL_VSTREAM*} 网络流,非空 |
sa | {const struct sockaddr *} 远程连接地址,非空 |
ACL_API const char* acl_vstream_strerror | ( | ACL_VSTREAM * | fp | ) |
取得当前数据流的错误状态
fp | {ACL_VSTREAM*} 数据流 |
ACL_API int acl_vstream_ungetc | ( | ACL_VSTREAM * | fp, |
int | ch | ||
) |
将一个字符放回数据流中
fp | {ACL_VSTREAM*} 数据流指针 |
ch | {int} 字符的 ASCII 码 |
ACL_API int acl_vstream_unread | ( | ACL_VSTREAM * | fp, |
const void * | ptr, | ||
size_t | length | ||
) |
将指定长度的数据放回至数据流中
fp | {ACL_VSTREAM*} 数据流指针 |
ptr | {const void *} 需要放回至流中的数据的起始地址 |
length | {size_t} 需要放回至流中的数据的长度 |
ACL_API int acl_vstream_vfprintf | ( | ACL_VSTREAM * | fp, |
const char * | fmt, | ||
va_list | ap | ||
) |
带格式的流输出, 类似于 vfprintf()
fp | {ACL_VSTREAM*} 数据流 |
fmt | {const char*} 数据格式 |
ap | {va_list} |
ACL_API int acl_vstream_write | ( | ACL_VSTREAM * | fp, |
const void * | vptr, | ||
int | dlen | ||
) |
一次性写入流操作, 返回实际写入的字节数.
fp | {ACL_VSTREAM*} 数据流 |
vptr | {const void*} 数据区指针地址 |
dlen | {int} 待写的数据区数据长度 |
ACL_API int acl_vstream_writen | ( | ACL_VSTREAM * | fp, |
const void * | vptr, | ||
size_t | dlen | ||
) |
循环向数据流中写 dlen 个字节的数据直至写完或出错为止
fp | {ACL_VSTREAM*} 数据流 |
vptr | {const char*} 数据区指针地址 |
dlen | {size_t} 待写的数据区数据长度 |
ACL_API int acl_vstream_writev | ( | ACL_VSTREAM * | fp, |
const struct iovec * | vector, | ||
int | count | ||
) |
一次性写入流操作,采用 writev 模式,返回实际写入的字节数
fp | {ACL_VSTREAM*} |
vector | {const struct iovec*} |
count | {int} vector 数组的长度 |
ACL_API int acl_vstream_writevn | ( | ACL_VSTREAM * | fp, |
const struct iovec * | vector, | ||
int | count | ||
) |
采用 writev 模式往流中写,直至全部数据写完为止或出错
fp | {ACL_VSTREAM*} |
vector | {const struct iovec*} |
count | {int} vector 数组的长度 |
ACL_API ACL_VSTREAM acl_vstream_fstd[] |
pre-defined streams
ACL_API int const char* fmt |
在文件 acl_vstream.h 第 633 行定义.