acl  3.5.3.0
acl_iostuff.h 文件参考
#include "acl_define.h"
#include "acl_vstream.h"
#include <poll.h>
+ acl_iostuff.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ACL_CLOSE_ON_EXEC   1
 
#define ACL_PASS_ON_EXEC   0
 
#define ACL_BLOCKING   0
 
#define ACL_NON_BLOCKING   1
 
#define ACL_HAS_POLL
 

类型定义

typedef int(* acl_select_fn) (int, fd_set *, fd_set *, fd_set *, struct timeval *)
 
typedef int(* acl_poll_fn) (struct pollfd *, nfds_t, int)
 

函数

ACL_API int acl_non_blocking (ACL_SOCKET fd, int on)
 
ACL_API int acl_is_blocking (ACL_SOCKET fd)
 
ACL_API int acl_write_wait (ACL_SOCKET fd, int timeout)
 
ACL_API int acl_write_wait_ms (ACL_SOCKET fd, int timeout)
 
ACL_API int acl_read_wait (ACL_SOCKET fd, int timeout)
 
ACL_API int acl_read_wait_ms (ACL_SOCKET fd, int timeout)
 
ACL_API int acl_read_select_wait (ACL_SOCKET fd, int delay)
 
ACL_API void acl_doze (unsigned delay)
 
ACL_API int acl_readable (ACL_SOCKET fd)
 
ACL_API int acl_timed_read (ACL_SOCKET fd, void *buf, unsigned len, int timeout, void *unused_context)
 
ACL_API int acl_timed_write (ACL_SOCKET fd, void *buf, unsigned len, int timeout, void *unused_context)
 
ACL_API int acl_write_buf (ACL_SOCKET fd, const char *buf, int len, int timeout)
 
ACL_API int acl_peekfd (ACL_SOCKET fd)
 
ACL_API int acl_pipe (ACL_FILE_HANDLE fds[2])
 
ACL_API int acl_pipe_close (ACL_FILE_HANDLE fds[2])
 
ACL_API int acl_duplex_pipe (ACL_FILE_HANDLE fds[2])
 
ACL_API void acl_set_delay_slice (int n)
 
ACL_API void acl_set_poll (acl_poll_fn fn)
 
ACL_API void acl_set_select (acl_select_fn fn)
 

宏定义说明

◆ ACL_BLOCKING

#define ACL_BLOCKING   0

阻塞读写标志位

在文件 acl_iostuff.h14 行定义.

◆ ACL_CLOSE_ON_EXEC

#define ACL_CLOSE_ON_EXEC   1

标志位, 调用 exec 后自动关闭打开的描述字

在文件 acl_iostuff.h11 行定义.

◆ ACL_HAS_POLL

#define ACL_HAS_POLL

在文件 acl_iostuff.h228 行定义.

◆ ACL_NON_BLOCKING

#define ACL_NON_BLOCKING   1

非阻塞读写标志位

在文件 acl_iostuff.h15 行定义.

◆ ACL_PASS_ON_EXEC

#define ACL_PASS_ON_EXEC   0

在文件 acl_iostuff.h12 行定义.

类型定义说明

◆ acl_poll_fn

typedef int(* acl_poll_fn) (struct pollfd *, nfds_t, int)

在文件 acl_iostuff.h231 行定义.

◆ acl_select_fn

typedef int(* acl_select_fn) (int, fd_set *, fd_set *, fd_set *, struct timeval *)

在文件 acl_iostuff.h230 行定义.

函数说明

◆ acl_doze()

ACL_API void acl_doze ( unsigned  delay)

毫秒级别睡眠

参数
delay{unsigned} 毫秒值

◆ acl_duplex_pipe()

ACL_API int acl_duplex_pipe ( ACL_FILE_HANDLE  fds[2])

产生一个管道对

参数
fds{ACL_FILE_HANDLE[2]} 存储产生的管道对地址,不能为空
返回
0: ok; -1: error

◆ acl_is_blocking()

ACL_API int acl_is_blocking ( ACL_SOCKET  fd)

判断所给套按口是否为阻塞模式

参数
fd{ACL_SOCKET} SOCKET 套接字
返回
{int} -1 表示出错或所给参数有误或该平台不支持,1 表示所给套接字为阻塞模式 0 表示所给套接字为非阻塞模式

◆ acl_non_blocking()

ACL_API int acl_non_blocking ( ACL_SOCKET  fd,
int  on 
)

设置套接口为阻塞或非阻塞

参数
fd{ACL_SOCKET} SOCKET 套接字
on{int} 是否设置该套接字为非阻塞, ACL_BLOCKING 或 ACL_NON_BLOCKING
返回
{int} >= 0: 成功, 返回值 > 0 表示设置之前的标志位; -1: 失败

◆ acl_peekfd()

ACL_API int acl_peekfd ( ACL_SOCKET  fd)

探测套接字中系统缓存区的数据长度

参数
fd{ACL_SOCKET} 描述符
返回
{int} 系统缓存区数据长度

◆ acl_pipe()

ACL_API int acl_pipe ( ACL_FILE_HANDLE  fds[2])

创建管道

参数
fds{ACL_FILE_HANDLE [2]} 存储结果
返回
{int} 0: ok; -1: error

◆ acl_pipe_close()

ACL_API int acl_pipe_close ( ACL_FILE_HANDLE  fds[2])

关闭管道对

参数
fds{ACL_FILE_HANDLE[2]} 管道对
返回
{int} 0: ok; -1: error

◆ acl_read_select_wait()

ACL_API int acl_read_select_wait ( ACL_SOCKET  fd,
int  delay 
)

采用 select 方式的读等待

参数
fd{ACL_SOCKET} 描述符
delay{int} 毫秒级等待时间
返回
{int} 含义同上

◆ acl_read_wait()

ACL_API int acl_read_wait ( ACL_SOCKET  fd,
int  timeout 
)

读等待操作,直到套接字有数据可读、出错或超时

参数
fd{ACL_SOCKET} 描述符
timeout{int} 超时时间,单位为秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} 0: 有数据可读或描述字出错; -1: 失败或超时

◆ acl_read_wait_ms()

ACL_API int acl_read_wait_ms ( ACL_SOCKET  fd,
int  timeout 
)

读等待操作,直到套接字有数据可读、出错或超时

参数
fd{ACL_SOCKET} 描述符
timeout{int} 超时时间,单位为毫秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} 0: 有数据可读或描述字出错; -1: 失败或超时

◆ acl_readable()

ACL_API int acl_readable ( ACL_SOCKET  fd)

某个描述符是否可读

参数
fd{ACL_SOCKET} 描述符
返回
{int} 0: 不可读; -1: 出错, 1:可读

◆ acl_set_delay_slice()

ACL_API void acl_set_delay_slice ( int  n)

◆ acl_set_poll()

ACL_API void acl_set_poll ( acl_poll_fn  fn)

◆ acl_set_select()

ACL_API void acl_set_select ( acl_select_fn  fn)

◆ acl_timed_read()

ACL_API int acl_timed_read ( ACL_SOCKET  fd,
void *  buf,
unsigned  len,
int  timeout,
void *  unused_context 
)

超时读数据

参数
fd{ACL_SOCKET} 网络套接字
buf{void*} 存储区,不能为空
len{unsigned} buf 存储区大小
timeout{int} 超时时间,单位为秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} > 0 读的数据; -1: 出错

◆ acl_timed_write()

ACL_API int acl_timed_write ( ACL_SOCKET  fd,
void *  buf,
unsigned  len,
int  timeout,
void *  unused_context 
)

超时写数据

参数
fd{ACL_SOCKET} 网络套接字
buf{void*} 数据存储区,不能为空
len{unsigned} 数据长度大小
timeout{int} 超时时间,单位为秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} > 0 成功写入的数据; -1: 出错

◆ acl_write_buf()

ACL_API int acl_write_buf ( ACL_SOCKET  fd,
const char *  buf,
int  len,
int  timeout 
)

向描述符中循环写入数据,直到写完、出错或超时为止

参数
fd{ACL_SOCKET} 网络套接字
buf{void*} 数据存储区,不能为空
len{unsigned} 数据长度大小
timeout{int} 超时时间,单位为秒
返回
{int} 成功写入的长度

◆ acl_write_wait()

ACL_API int acl_write_wait ( ACL_SOCKET  fd,
int  timeout 
)

写等待操作,直到套接字可写、出错或超时

参数
fd{ACL_SOCKET} 描述符
timeout{int} 超时时间,单位为秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} 0: 可写; -1: 失败或超时

◆ acl_write_wait_ms()

ACL_API int acl_write_wait_ms ( ACL_SOCKET  fd,
int  timeout 
)

写等待操作,直到套接字可写、出错或超时

参数
fd{ACL_SOCKET} 描述符
timeout{int} 超时时间,单位为毫秒,该值分下面三种情形:

0 : 表示最大超时时间的秒数,

== 0 : 表示不等待,检测完后立即返回 < 0 : 时表示直接该套接字可读或出错为止
返回
{int} 0: 可写; -1: 失败或超时