找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4|回复: 0

LAXCUS分布式操作系统编程接口说明

[复制链接]

12

主题

7

回帖

114

积分

管理员

积分
114
发表于 7 小时前 | 显示全部楼层 |阅读模式
DSDK是基于LAXCUS分布式操作系统实现的一套分布式计算/并行计算的编程接口工具包。支持C/C++编程,基于libasock.a库和一批C头文件,我们可以用来编写需要的分布式命令。

目前的头文件包括:
1. atype.h
2. asock.h
3. acmd.h
4. afile.h
5. alib.h
6. command.h

分布式命令编程头文件和函数说明:

<<<atype.h>>>
定义一批参数常量,没有函数

<<< asock.h函数 >>>
<1>int Startup(unsigned short port)
启动本地资源,初始化异步服务,与LAXCUS集群建立通信联系

参数:
port - 当前节点的对外通信端口。默认是0时,Startup函数自行检索端口,并且建立与它的连接。

返回值:
成功返回0,否则是-1

<2>int Cleanup()
释放本地资源,结束异步服务,解除与LAXCUS集群的通信联系

返回值:
成功返回0,失败是-1.

<3>unsigned short GetServicePort()
获得当前节点的通信端口

返回值:
返回 1 - 65534之间的数字,失败返回0

<4>int Attach(int type, const char *hub, unsigned short port, unsigned int connect_timeout, int secure, unsigned int job_timeout, unsigned int idle_timeout)
在客户端/服务端之间构建一个异步服务,为后续的操作提供准备。这些操作由acmd.h afile.h alib.h中的函数执行。

参数:
type - 异步服务类型,包括异步命令,异步文件操作,异步函数接口调用(AFC),见atype.h中的定义
hub  - 连接的服务器IP/域名地址
port - 连接的服务器端口
connect_timeout - 连接服务器超时时间,单位:毫秒
secure - 安全模式,1是,0否
job_timeout - 异步服务最大运行工作时间,超过将被系统强制结束
idle_timeout - 异步服务最大运行闲置时间,超过将被系统强制结束

返回值:
异步服务编号(asock),成功返回大于0的int整数,失败是负数。

<5>int Detach(int asock)
结束客户端/服务端的异步服务,释放双方资源

参数:
asock - 异步服务编号

返回值:
成功返回0,失败返回负数

<6>int Refix(int asock)
重置异步服务计时器,即Attach函数的job_timeout/idle_timeout的时间,以此延长异步服务时间。
Refix函数必须在Attach/Detach函数之间执行。

参数:
asock - 异步服务编号

返回值:
成功返回0,失败返回负数

<7>int GetHub(int asock, Stub *stub)
获得当前节点的上级节点地址参数

参数:
asock - 异步服务编号
*stub - 节点地址参数

返回值:
成功返回0,失败返回负数

<8>int GetLocal(int asock, Stub *stub)
获得当前节点的地址参数

参数:
asock - 异步服务编号
*stub - 节点地址参数

返回值:
成功返回0,失败返回负数

<9>int GetRemotes(int asock, Stub **stubs, int *count)
获得当前节点的所有节点地址参数。

参数:
asock - 异步服务编号
**stubs - 所有关联节点(Stub)的地址指针
*count - 关联节点总数

返回值:
成功返回0,失败返回负数

<10>void FreeStub(Stub **stubs)
释放GetRemotes函数分配的节点地址

参数:
**stubs - 关联节点的地址数组指针


<<< acmd.h函数 >>>
<1> int Command(int asock, const char *cmd)
远程运行分布式命令

参数:
asock - 异步服务编号,通过Attach函数获得。Attach函数type指定AT_COMMAND
cmd - 命令(单机命令或者LAXCUS分布式多机命令)

返回值:
成功返回读取的字节数(大于0),失败返回负数

<2> int List(int asock, const char *path)
查询磁盘目录信息

参数:
asock - 异步服务编号
path - 查询的目录

返回值:
成功返回读取的字节数(大于0),失败返回负数

<3> int Receive(int asock, void *buff, int len)
读取命令处理结果数据

参数:
asock - 异步服务编号
buff - 输出缓存
len - 缓存尺寸长度

返回值:
1. 返回大于0的数字
2. 返回0,表示后面还有数据,但是当前缓存没有数据,调用端需要延时再接收
3. 返回-1,表示已经读取完毕


<<< afile.h函数 >>>
<1> int Status(int asock, const char *path, struct stat *buf)
获得服务器对象实例的参数

参数:
asock - 异步服务编号
path - 文件/目录的路径
buf - struct stat指针

返回值:
成功返回0,失败返回负数

<2> int MakeDirectory(int asock, const char *path)
在服务端建立一个目录

参数:
asock - 异步服务编号
path - 目录的路径

返回值:
成功返回0,失败返回负数

<3> int Delete(int asock, const char *path, struct fpdelete *fp)
删除服务器上的文件或者目录

参数:
asock - 异步操作编号
path - 文件/目录的完整路径
*fp - 被删除的文件/目录参数

返回值:
成功返回大于0的删除数量,失败返回负数

<4> int Rename(int asock, const char *oldpath, const char *name)
更改文件/目录名称

参数:
asock - 异步操作编号
oldpath - 原有文件/目录的完整路径
name - 新的文件/目录名称(注意,不包含路径)

返回值:
成功返回0,失败返回负数

<5> int Open(int asock, const char *path, int mode, struct fpopen *fp)
打开与服务器的远程文件操作,Attach函数type指定AT_FILE,见atype.h中定义

参数:
asock - 异步服务编号
path  - 服务器磁盘路径
mode - 操作模式(读或者写)
*fp - struct fpopen指针

返回值:
成功返回0,失败返回负数

<6> ssize_t Read(int asock, void *buff, size_t len)
从服务端读取数据

参数:
asock - 异步服务编号
buff  - 输入缓存
len - 输入缓存尺寸

返回值:
1. > 0,读取的数据长度
2. = 0,没有读到,后续继续
3. = -1, 已经读取完毕
4. < -1, 读取失败

<7> ssize_t Write(int asock, const void *buf, size_t len);
向服务端写入数据

参数:
asock - 异步服务编号
buff  - 输出缓存
len - 输出缓存尺寸

返回值:
1. > 0,写入的数据长度
2. < 0, 写入失败

<8> int Close(int asock)
读写操作最后一步,通知服务器关闭写服务

参数:
asock - 异步服务编号

返回值:
1. >= 0,成功
2. <0, 失败

<<< alib.h函数 >>>
<1> int LoadLibrary(int asock, const char *name, int keep
加载服务端的动态链接库(so)

参数:
asock - 异步处理编号
name - so库路径
keep - so库保持持续打开是1,否则是0

返回值:
成功返回0,失败-1

<2>int ReleaseLibrary(int asock)
释放服务端的动态链接库(so)

参数:
asock - 异步处理编号

返回值:
成功返回0,失败-1

<3>int AFScan(int asock, const char *name)
判断动态链接库有某一个函数

参数:
asock - 异步处理编号
name - 函数名字

返回值:
成功返回0,失败-1

<4>int AFCall(int asock, const char *name, const void *in, size_t inlen, void **out, size_t *outlen)
调用动态链接库函数。被AFCall调用的动态链接库(so),必须有一个名字是“AgentCall”的函数,
AFCall通过网络调用AgentCall,AgentCall解析参数名和参数后,再根据名称调用指定的函数

参数:
asock - 异步编号
name - 被AFCall调用的函数名字
in - 输入参数集合,可以是一个结构体,也可以是串行化的字节数组,输入参数的生成/解析由开发者定义,
inlen - 输入参数的字节长度
out - 输出的字节数组,输出参数的生成/解析由开发者定义
outlen - 输出参数的字节长度

以上参数,除了asock,将完整映射给服务端的AgentCall,并且由AgentCall解析、转义、分发、处理。

返回值:
返回AgentCall的返回值,具体由开发者定义,通常成功是0,失败是负数

<5>int AFree(void **out)
释放AFCall函数产生的out参数内存

参数:
out - 输出的字节数组指针

返回值:
成功返回0,失败-1


<<< command.h函数 >>>
<1>int AttachWorkSites(const char *from, const char *to);
一个HOME集群下所有WORK节点,与另一个HOME集群的WORK所有节点,建立映射关联。

参数:
from - HOME MANAGER节点源地址。
to - HOME MANAGER节点目标地址

from/to地址格式,包括节点族、IP地址、端口三个参数,如:home://192.168.1.23:878

返回值:
成功返回建立映射关联的节点数量,失败是-1

<2>int DetachWorkSites(const char *from, const char *to);
一个HOME集群的所有WORK节点,与另一个HOME集群的WORK节点,解除映射关联。

参数:
from - HOME MANAGER节点源地址
to - HOME MANAGER节点目标地址

from/to地址格式,包括节点族、IP地址、端口三个参数,如:home://private.laxcus.site:878

返回值:
成功返回解除映射关联的节点数量,失败是-1


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|LAXCUS分布式操作系统交流区 ( 京ICP备17069115号-1 )

GMT+8, 2025-3-12 23:41 , Processed in 0.052623 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表