#ifndef _c_libshm_queue_so_func_h_
|
#define _c_libshm_queue_so_func_h_
|
|
|
#ifdef __cplusplus
|
extern "C"{
|
#endif
|
|
/**
|
* 初始化共享内存
|
* @size 共享内存大小
|
*
|
*/
|
typedef void(*tfn_shm_init)(int);
|
/**
|
* 销毁共享内存
|
* 整个进程退出时需要执行这个方法,该方法首先会检查是否还有其他进程在使用该共享内存,如果还有其他进程在使用就只是detach,如果没有其他进程在使用则销毁整块内存。
|
*/
|
typedef void(*tfn_shm_destroy)();
|
//移除不包含在keys中的队列
|
typedef void (*tfn_shm_rm_dead_queue)(void *keys, int length);
|
|
/**
|
* 创建队列
|
* @ shmqueue
|
* @ key 标识共享队列的唯一标识, key是一个指针里面存储了key的值, 如果key的值为-1系统会自动分配一个key值并把该key的值赋给key指针。如果key的值不会空会检查是否有重复绑定的情况, 有重复就报错没有就创建队列并绑定key.
|
* @ queue_size 队列大小
|
*/
|
typedef void*(*tfn_queue_create) (int*, int);
|
/**
|
* 绑定key到队列,但是并不会创建队列。如果没有对应指定key的队列提示错误并返回空值
|
*/
|
typedef void*(*tfn_queue_attach) (int);
|
/**
|
* 销毁
|
*/
|
typedef void(*tfn_queue_drop) (void*);
|
/**
|
* 队列元素的个数
|
*/
|
typedef int(*tfn_queue_size) (void*);
|
/**
|
* 是否已满
|
* * @return 1是, 0否
|
*/
|
typedef int(*tfn_queue_full) (void*);
|
/**
|
* 是否为空
|
* @return 1是, 0否
|
*/
|
typedef int(*tfn_queue_empty) (void*);
|
/**
|
* 入队, 队列满时等待.
|
* @return 1 入队成功, 0 入队失败
|
*/
|
typedef int(*tfn_queue_push) (void*, void*, int);
|
/**
|
* 入队, 队列满时立即返回.
|
* @return 1 入队成功, 0 入队失败
|
*/
|
typedef tfn_queue_push tfn_queue_push_nowait;
|
/**
|
* 入队, 指定时间内入队不成功就返回
|
* @sec 秒
|
* @nsec 纳秒
|
* @return 1 入队成功, 0 入队失败
|
*/
|
typedef int(*tfn_queue_push_timeout) (void*, void*, int, int, int);
|
/**
|
* 出队, 队列空时等待
|
* @return 1 出队成功, 0出队失败
|
*/
|
typedef int(*tfn_queue_pop) (void*, void**, int *);
|
/**
|
* 出队, 队列空时立即返回
|
* @return 1 出队成功, 0出队失败
|
*/
|
typedef tfn_queue_pop tfn_queue_pop_nowait;
|
/**
|
* 出队, 指定时间内出队不成功就返回
|
* @sec秒
|
* @nsec纳秒
|
* @return 1 出队成功, 0出队失败
|
*/
|
typedef int(*tfn_queue_pop_timeout) (void*, void**, int *, int, int);
|
/**
|
* 释放出队分配的内存
|
*/
|
typedef void (*tfn_queue_free_poped)(void *ptr);
|
|
////////////////////////////
|
// socket mode
|
////////////////////////////
|
enum socket_mod_t
|
{
|
PULL_PUSH = 1,
|
REQ_REP = 2,
|
PAIR = 3,
|
PUB_SUB = 4,
|
SURVEY = 5,
|
BUS = 6
|
|
};
|
|
/**
|
* 创建socket
|
* @return socket地址
|
*/
|
typedef void*(*tfn_socket_open) (int);
|
/**
|
* 关闭socket
|
*/
|
typedef int(*tfn_socket_close) (void*);
|
/**
|
* 绑定端口到socket, 如果不绑定则系统自动分配一个
|
* @return 0 成功, 其他值 失败的错误码
|
*/
|
typedef int(*tfn_socket_bind) (void*, int);
|
/**
|
* 服务端开启连接监听
|
* @return 0 成功, 其他值 失败的错误码
|
*/
|
typedef int(*tfn_socket_listen) (void*);
|
/**
|
* 客户端发起连接请求
|
*/
|
typedef int(*tfn_socket_connect) (void*, int);
|
/**
|
* 发送信息
|
* @return 0 成功, 其他值 失败的错误码
|
*/
|
typedef int(*tfn_socket_send) (void*, const void*, const int);
|
/**
|
* 接收信息
|
* @return 0 成功, 其他值 失败的错误码
|
*/
|
typedef int(*tfn_socket_recv) (void*, void**, int*);
|
|
/**
|
* 释放接收信息的buf
|
*/
|
typedef void(*tfn_socket_buf_free) (void*);
|
|
/**
|
* 获取soket端口号
|
*/
|
typedef int(*tfn_socket_port) (void*);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif
|