ACE_IPC_SAP类是IPC类族的基类,封装了句柄,提供了访问句柄的基本接口,基本结构
如下
class ACE_IPC_SAP
{
public:
int enable (int value) const;
int disable (int value) const;
ACE_HANDLE get_handle (void) const;
void set_handle (ACE_HANDLE handle);
protected:
ACE_IPC_SAP (void);
~ACE_IPC_SAP (void);
private:
ACE_HANDLE handle_;
};
ACE_SOCK类是使用Socket的基类,所有使用Socket通讯的类都从这个类派生。本类的功
能包括
1 创建和销毁Socket句柄
2 获取本地和远端的网络地址
3 设置和读取Socket选项。
基本结构如下
class ACE_SOCK : public ACE_IPC_SAP
{
public:
//设置Socket的属性,包装了setsockopt系统函数
int set_option (int level,
int option,
void *optval,
int optlen) const;
//获取Socket的属性,包装了getsockopt系统函数
int get_option (int level,
int option,
void *optval,
int *optlen) const;
//获得本地地址
int get_local_addr (ACE_Addr &) const;
//获取远端地址
int get_remote_addr (ACE_Addr &) const;
//关闭Socket
int close (void);
//打开一个Socket,没有Qos
int open (int type,
int protocol_family,
int protocol,
int reuse_addr);
//打开一个Socket,有Qos
int open (int type,
int protocol_family,
int protocol,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g,
u_long flags,
int reuse_addr);
protected:
ACE_SOCK (int type,
int protocol_family,
int protocol = 0,
int reuse_addr = 0);
ACE_SOCK (int type,
int protocol_family,
int protocol,
ACE_Protocol_Info *protocolinfo,
ACE_SOCK_GROUP g,
u_long flags,
int reuse_addr);
ACE_SOCK (void);
~ACE_SOCK (void);
};
ACE_SOCK_IO类,包装了Socket数据通讯的基本方法。本类提供的功能
1 支持数据的发送和接收
2 支持分散读操作
3 支持集中写操作
4 支持阻塞,非阻塞,定时 I/O操作
基本结构如下
class ACE_SOCK_IO : public ACE_SOCK
{
public:
ACE_SOCK_IO (void);
~ACE_SOCK_IO (void);
//接收数据
ssize_t recv (void *buf,
size_t n,
const ACE_Time_Value *timeout = 0) const;
//分散读操作
ssize_t recv (iovec iov[],
size_t n,
const ACE_Time_Value *timeout = 0) const;
//发送数据
ssize_t send (const void *buf,
size_t n,
const ACE_Time_Value *timeout = 0) const;
//集中写操作
ssize_t send (const iovec iov[],
size_t n,
const ACE_Time_Value *timeout = 0) const;
};
ACE_SOCK_Stream类,继承ACE_SOCK_IO类。在ACE_SOCK_IO类提供的功能上,添加了发送
和接收刚好n个字节的能力。基本结构如下
class ACE_Export ACE_SOCK_Stream : public ACE_SOCK_IO
{
public:
ACE_SOCK_Stream (void);
ACE_SOCK_Stream (ACE_HANDLE h);
~ACE_SOCK_Stream (void);
//刚好读取n个字节的数据
ssize_t recv_n (void *buf,
size_t len,
const ACE_Time_Value *timeout = 0,
size_t *bytes_transferred = 0) const;
//分散读刚好n个字节操作
ssize_t recvv_n (iovec iov[],
int iovcnt,
const ACE_Time_Value *timeout = 0,
size_t *bytes_transferred = 0) const;
//刚好发送n个字节的数据
ssize_t send_n (const void *buf,
size_t len,
const ACE_Time_Value *timeout = 0,
size_t *bytes_transferred = 0) const;
//集中写刚好n个字节操作
ssize_t sendv_n (const iovec iov[],
int iovcnt,
const ACE_Time_Value *timeout = 0,
size_t *bytes_transferred = 0) const;
int close_reader (void);
int close_writer (void);
int close (void);
typedef ACE_INET_Addr PEER_ADDR;
};
ACE_SOCK_Acceptor类是一个工厂类,用来被动产生一个新的通讯端点。提供如下能力
1 接收对等端的连接
2 连接可以通过阻塞、非阻塞或定时方式接受。
基本结构如下
class ACE_Export ACE_SOCK_Acceptor : public ACE_SOCK
{
public:
ACE_SOCK_Acceptor (void);
ACE_SOCK_Acceptor (const ACE_Addr &local_sap,
int reuse_addr = 0,
int protocol_family = PF_UNSPEC,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0);
~ACE_SOCK_Acceptor (void);
//打开一个监听
int open (const ACE_Addr &local_sap,
int reuse_addr = 0,
int protocol_family = PF_UNSPEC,
int backlog = ACE_DEFAULT_BACKLOG,
int protocol = 0);
int close (void);
//接受一个对等端的连接,产生一个通讯
int accept (ACE_SOCK_Stream &new_stream,
ACE_Addr *remote_addr = 0,
ACE_Time_Value *timeout = 0,
int restart = 1,
int reset_new_handle = 0) const;
};
ACE_SOCK_Connector类是一个工厂类,用来主动建立一个新的通讯端。提供的功能如下
1 发起一个到对等接受者的连接,并在连接后产生一个通讯对象
2 连接可以通过阻塞、非阻塞或定时方式发起
基本结构如下
class ACE_SOCK_Connector
{
public:
ACE_SOCK_Connector (void);
ACE_SOCK_Connector (ACE_SOCK_Stream &new_stream,
const ACE_Addr &remote_sap,
const ACE_Time_Value *timeout = 0,
const ACE_Addr &local_sap = ACE_Addr::sap_any,
int reuse_addr = 0,
int flags = 0,
int perms = 0,
int protocol = 0);
//发起一个连接
int connect (ACE_SOCK_Stream &new_stream,
const ACE_Addr &remote_sap,
const ACE_Time_Value *timeout = 0,
const ACE_Addr &local_sap = ACE_Addr::sap_any,
int reuse_addr = 0,
int flags = 0,
int perms = 0,
int protocol = 0);
~ACE_SOCK_Connector (void);
int complete (ACE_SOCK_Stream &new_stream,
ACE_Addr *remote_sap = 0,
const ACE_Time_Value *timeout = 0);
};
以上的类结构是简化的,以突出重点功能。要完全了解每个类,看源代码。
posted on 2007-02-24 14:15
walkspeed 阅读(3854)
评论(0) 编辑 收藏 引用 所属分类:
ACE Farmeworks