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

浏览源代码.

struct  ACL_FHANDLE
 

宏定义

#define ACL_FHANDLE_O_FLOCK   (1 << 0)
 
#define ACL_FHANDLE_O_MLOCK   (1 << 1)
 
#define ACL_FHANDLE_O_MKDIR   (1 << 2)
 
#define ACL_FHANDLE_O_NOATIME   (1 << 3)
 
#define ACL_FHANDLE_O_DIRECT   (1 << 4)
 
#define ACL_FHANDLE_O_SYNC   (1 << 5)
 
#define ACL_FHANDLE_O_EXCL   (1 << 6)
 
#define ACL_FHANDLE_S_FLOCK_ON   (1 << 0)
 
#define ACL_FHANDLE_S_MUTEX_ON   (1 << 1)
 
#define ACL_FHANDLE_PATH(x)   (ACL_VSTREAM_PATH((x)->fp))
 
#define ACL_FHANDLE_F_LOCK   (1 << 0)
 

类型定义

typedef struct ACL_FHANDLE ACL_FHANDLE
 

函数

void acl_fhandle_init (int cache_size, int debug_section, unsigned int flags)
 
void acl_fhandle_end (void)
 
ACL_FHANDLEacl_fhandle_open (size_t size, unsigned int oflags, const char *file_path, int(*on_open)(ACL_FHANDLE *, void *), void *open_arg, void(*on_close)(ACL_FHANDLE *))
 
void acl_fhandle_close (ACL_FHANDLE *fs, int delay_timeout)
 
void acl_fhandle_lock (ACL_FHANDLE *fs)
 
void acl_fhandle_unlock (ACL_FHANDLE *fs)
 

宏定义说明

◆ ACL_FHANDLE_F_LOCK

#define ACL_FHANDLE_F_LOCK   (1 << 0)

在文件 acl_fhandle.h61 行定义.

◆ ACL_FHANDLE_O_DIRECT

#define ACL_FHANDLE_O_DIRECT   (1 << 4)

打开文件时添加 O_DIRECT 标志位

在文件 acl_fhandle.h38 行定义.

◆ ACL_FHANDLE_O_EXCL

#define ACL_FHANDLE_O_EXCL   (1 << 6)

打开文件时是否是自动加锁

在文件 acl_fhandle.h40 行定义.

◆ ACL_FHANDLE_O_FLOCK

#define ACL_FHANDLE_O_FLOCK   (1 << 0)

使用文件锁

在文件 acl_fhandle.h34 行定义.

◆ ACL_FHANDLE_O_MKDIR

#define ACL_FHANDLE_O_MKDIR   (1 << 2)

是否自动检查并创建不存在的目录

在文件 acl_fhandle.h36 行定义.

◆ ACL_FHANDLE_O_MLOCK

#define ACL_FHANDLE_O_MLOCK   (1 << 1)

使用线程锁

在文件 acl_fhandle.h35 行定义.

◆ ACL_FHANDLE_O_NOATIME

#define ACL_FHANDLE_O_NOATIME   (1 << 3)

打开文件时添加 O_NOATIME 标志位

在文件 acl_fhandle.h37 行定义.

◆ ACL_FHANDLE_O_SYNC

#define ACL_FHANDLE_O_SYNC   (1 << 5)

打开文件时添加 O_SYNC 标志位

在文件 acl_fhandle.h39 行定义.

◆ ACL_FHANDLE_PATH

#define ACL_FHANDLE_PATH (   x)    (ACL_VSTREAM_PATH((x)->fp))

在文件 acl_fhandle.h52 行定义.

◆ ACL_FHANDLE_S_FLOCK_ON

#define ACL_FHANDLE_S_FLOCK_ON   (1 << 0)

该存储句柄已经加文件锁

在文件 acl_fhandle.h43 行定义.

◆ ACL_FHANDLE_S_MUTEX_ON

#define ACL_FHANDLE_S_MUTEX_ON   (1 << 1)

该存储句柄已经加线程锁

在文件 acl_fhandle.h44 行定义.

类型定义说明

◆ ACL_FHANDLE

typedef struct ACL_FHANDLE ACL_FHANDLE

通用的存储文件句柄对象类型定义

在文件 acl_fhandle.h19 行定义.

函数说明

◆ acl_fhandle_close()

void acl_fhandle_close ( ACL_FHANDLE fs,
int  delay_timeout 
)

关闭一个文件句柄

参数
fs{ACL_FHANDLE*}
delay_timeout{int} 如果 > 0, 则延迟该时间后才真正关闭, 否则,其引用计数为 0 则立即关闭

◆ acl_fhandle_end()

void acl_fhandle_end ( void  )

当程序退出时需要调用此函数来释放系统资源

◆ acl_fhandle_init()

void acl_fhandle_init ( int  cache_size,
int  debug_section,
unsigned int  flags 
)

初始化文件句柄操作,该函数须在程序运行初始化时被调用且只能被调用一次

参数
cache_size{int} 内部被打开文件句柄的最大个数
debug_section{int} 调试级别
flags{unsigned int}

◆ acl_fhandle_lock()

void acl_fhandle_lock ( ACL_FHANDLE fs)

对一个文件句柄加锁(先加线程锁后加文件锁)

参数
fs{ACL_FHANDLE*}

◆ acl_fhandle_open()

ACL_FHANDLE* acl_fhandle_open ( size_t  size,
unsigned int  oflags,
const char *  file_path,
int(*)(ACL_FHANDLE *, void *)  on_open,
void *  open_arg,
void(*)(ACL_FHANDLE *)  on_close 
)

打开一个文件

参数
size{size_t} 分配结构 FS_HANDDLE 需要的空间大小
oflags{unsigned int} 打开文件句柄时的标志位, ACL_FHANDLE_O_XXX
file_path{const char*} 文件名(包含路径)
on_open{int (*)(ACL_FHANDLE*, void*)} 如果不为空, 则当文件句柄被成功打开后便调用此函数
open_arg{void *} on_open 的回调参数之一
on_close{void (*)(ACL_FHANDLE*)} 如果不为空, 则当文件句柄被正直关闭时便调用此函数

◆ acl_fhandle_unlock()

void acl_fhandle_unlock ( ACL_FHANDLE fs)

对一个文件句柄解锁(先解文件锁再解线程锁)

参数
fs{ACL_FHANDLE*}