PRIOMethods

文件描述符中使用的 I/O 方法表。

语法

#include <prio.h>

struct PRIOMethods {
  PRDescType file_type;
  PRCloseFN close;
  PRReadFN read;
  PRWriteFN write;
  PRAvailableFN available;
  PRAvailable64FN available64;
  PRFsyncFN fsync;
  PRSeekFN seek;
  PRSeek64FN seek64;
  PRFileInfoFN fileInfo;
  PRFileInfo64FN fileInfo64;
  PRWritevFN writev;
  PRConnectFN connect;
  PRAcceptFN accept;
  PRBindFN bind;
  PRListenFN listen;
  PRShutdownFN shutdown;
  PRRecvFN recv;
  PRSendFN send;
  PRRecvfromFN recvfrom;
  PRSendtoFN sendto;
  PRPollFN poll;
  PRAcceptreadFN acceptread;
  PRTransmitfileFN transmitfile;
  PRGetsocknameFN getsockname;
  PRGetpeernameFN getpeername;
  PRGetsockoptFN getsockopt;
  PRSetsockoptFN setsockopt;
};

typedef struct PRIOMethods PRIOMethods;

参数

file_type

表示的文件类型 (tos)。

close

关闭文件并销毁描述符。

read

将最多指定数量的字节读入缓冲区。

write

从缓冲区写入指定数量的字节。

available

确定可读取的字节数。

available64

与上一个字段相同,但为 64 位。

fsync

将文件的所有内存缓冲区刷新到永久存储。

seek

将文件指针定位到所需位置。

seek64

与上一个字段相同,但为 64 位。

fileInfo

获取有关打开文件的的信息。

fileInfo64

与上一个字段相同,但为 64 位。

writev

从缓冲区向量写入。

connect

连接到指定的网络地址。

accept

接受来自网络对等方的连接。

bind

将网络地址与文件描述符关联。

listen

准备侦听网络连接。

shutdown

关闭网络连接。

recv

接收最多指定数量的字节。

send

发送所有指定的字节。

recvfrom

接收最多指定数量的字节并报告网络源。

sendto

将字节发送到指定的网络地址。

poll

测试文件描述符以查看它是否已准备好进行 I/O。

acceptread

接受并从新的网络文件描述符读取。

transmitfile

将整个文件传输到指定的套接字。

getsockname

获取与文件描述符关联的网络地址。

getpeername

获取对等方的网络地址。

getsockopt

获取指定套接字选项的当前设置。

setsockopt

设置指定套接字选项的值。

描述

除非您正在实现一个层,否则您不需要了解方法表中列出的每个函数的类型声明。有关每个函数的信息,请参阅本文档中相应的函数描述。例如,PRIOMethods 中的 write 方法实现了 PR_Write 函数。有关类型定义详细信息,请参阅 prio.h

I/O 方法表提供了对文件描述符函数的过程访问。层实现者有责任在每个入口点(即 I/O 方法表中的每个函数)提供合适的函数。如果层不提供任何功能,它应该调用相同名称的下一层(较高)函数(例如,“close”方法将返回 fd->lower->method->close(fd->lower))。

并非方法表中的所有函数都对所有类型文件都实现了。例如,seek 方法对普通文件实现了,但对套接字则没有。在发生这种部分实现的情况下,该函数将返回错误指示,错误代码为 PR_INVALID_METHOD_ERROR