acl  3.5.3.0
acl::dbuf_guard类 参考

#include <dbuf_pool.hpp>

+ acl::dbuf_guard 的协作图:

Public 成员函数

 dbuf_guard (dbuf_pool *dbuf, size_t capacity=500)
 
 dbuf_guard (size_t nblock=2, size_t capacity=500)
 
 ~dbuf_guard ()
 
bool dbuf_reset (size_t reserve=0)
 
void * dbuf_alloc (size_t len)
 
void * dbuf_calloc (size_t len)
 
char * dbuf_strdup (const char *s)
 
char * dbuf_strndup (const char *s, size_t len)
 
void * dbuf_memdup (const void *addr, size_t len)
 
bool dbuf_free (const void *addr)
 
bool dbuf_keep (const void *addr)
 
bool dbuf_unkeep (const void *addr)
 
acl::dbuf_poolget_dbuf () const
 
int push_back (dbuf_obj *obj)
 
size_t size () const
 
dbuf_objoperator[] (size_t pos) const
 
dbuf_objget (size_t pos) const
 
void set_increment (size_t incr)
 
template<typename T >
T * create ()
 
template<typename T , typename P1 >
T * create (P1 p)
 
template<typename T , typename P1 , typename P2 >
T * create (P1 p1, P2 p2)
 
template<typename T , typename P1 , typename P2 , typename P3 >
T * create (P1 p1, P2 p2, P3 p3)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9)
 
template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename P10 >
T * create (P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10)
 

详细描述

会话内存池管理器,由该类对象管理 dbuf_pool 对象及在其上分配的对象,当该类 对象销毁时,dbuf_pool 对象及在上面均被释放。

在文件 dbuf_pool.hpp210 行定义.

构造及析构函数说明

◆ dbuf_guard() [1/2]

acl::dbuf_guard::dbuf_guard ( dbuf_pool dbuf,
size_t  capacity = 500 
)

构造函数

参数
dbuf{dbuf_pool*} 当该内存池对象非空时,dbuf 将由 dbuf_guard 接管,如果为空,则本构造函数内部将会自动创建一个 dbuf_pool 对象
capacity{size_t} 内部创建的 objs_ 数组的初始长度

◆ dbuf_guard() [2/2]

acl::dbuf_guard::dbuf_guard ( size_t  nblock = 2,
size_t  capacity = 500 
)

构造函数

参数
nblock{size_t} 本类对象内部创建 dbuf_pool 对象时,本参数 指定了内存块(4096)的倍数
capacity{size_t} 内部创建的 objs_ 数组的初始长度

◆ ~dbuf_guard()

acl::dbuf_guard::~dbuf_guard ( )

析构函数,在析构函数内部将会自动销毁由构造函数传入的 dbuf_pool 对象

成员函数说明

◆ create() [1/11]

template<typename T >
T* acl::dbuf_guard::create ( )
inline

在文件 dbuf_pool.hpp374 行定义.

375  {
376  T* t = new (dbuf_alloc(sizeof(T))) T();
377  (void) push_back(t);
378  return t;
379  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [2/11]

template<typename T , typename P1 >
T* acl::dbuf_guard::create ( P1  p)
inline

在文件 dbuf_pool.hpp382 行定义.

383  {
384  T* t = new (dbuf_alloc(sizeof(T))) T(p);
385  (void) push_back(t);
386  return t;
387  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [3/11]

template<typename T , typename P1 , typename P2 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2 
)
inline

在文件 dbuf_pool.hpp390 行定义.

391  {
392  T* t = new (dbuf_alloc(sizeof(T))) T(p1, p2);
393  (void) push_back(t);
394  return t;
395  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [4/11]

template<typename T , typename P1 , typename P2 , typename P3 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3 
)
inline

在文件 dbuf_pool.hpp398 行定义.

399  {
400  T* t = new (dbuf_alloc(sizeof(T))) T(p1, p2, p3);
401  (void) push_back(t);
402  return t;
403  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [5/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4 
)
inline

在文件 dbuf_pool.hpp407 行定义.

408  {
409  T* t = new (dbuf_alloc(sizeof(T))) T(p1, p2, p3, p4);
410  (void) push_back(t);
411  return t;
412  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [6/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5 
)
inline

在文件 dbuf_pool.hpp416 行定义.

417  {
418  T* t = new (dbuf_alloc(sizeof(T))) T(p1, p2, p3, p4, p5);
419  (void) push_back(t);
420  return t;
421  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [7/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5,
P6  p6 
)
inline

在文件 dbuf_pool.hpp425 行定义.

426  {
427  T* t = new (dbuf_alloc(sizeof(T))) T(p1, p2, p3, p4, p5, p6);
428  (void) push_back(t);
429  return t;
430  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [8/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5,
P6  p6,
P7  p7 
)
inline

在文件 dbuf_pool.hpp434 行定义.

435  {
436  T* t = new (dbuf_alloc(sizeof(T)))
437  T(p1, p2, p3, p4, p5, p6, p7);
438  (void) push_back(t);
439  return t;
440  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [9/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5,
P6  p6,
P7  p7,
P8  p8 
)
inline

在文件 dbuf_pool.hpp445 行定义.

446  {
447  T* t = new (dbuf_alloc(sizeof(T)))
448  T(p1, p2, p3, p4, p5, p6, p7, p8);
449  (void) push_back(t);
450  return t;
451  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [10/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5,
P6  p6,
P7  p7,
P8  p8,
P9  p9 
)
inline

在文件 dbuf_pool.hpp456 行定义.

458  {
459  T* t = new (dbuf_alloc(sizeof(T)))
460  T(p1, p2, p3, p4, p5, p6, p7, p8, p9);
461  (void) push_back(t);
462  return t;
463  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ create() [11/11]

template<typename T , typename P1 , typename P2 , typename P3 , typename P4 , typename P5 , typename P6 , typename P7 , typename P8 , typename P9 , typename P10 >
T* acl::dbuf_guard::create ( P1  p1,
P2  p2,
P3  p3,
P4  p4,
P5  p5,
P6  p6,
P7  p7,
P8  p8,
P9  p9,
P10  p10 
)
inline

在文件 dbuf_pool.hpp468 行定义.

470  {
471  T* t = new (dbuf_alloc(sizeof(T)))
472  T(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
473  (void) push_back(t);
474  return t;
475  }
int push_back(dbuf_obj *obj)
void * dbuf_alloc(size_t len)
Definition: dbuf_pool.hpp:246

◆ dbuf_alloc()

void* acl::dbuf_guard::dbuf_alloc ( size_t  len)
inline

调用 dbuf_pool::dbuf_alloc

参数
len{size_t}
返回
{void*}

在文件 dbuf_pool.hpp246 行定义.

247  {
248  return dbuf_->dbuf_alloc(len);
249  }
void * dbuf_alloc(size_t len)

被这些函数引用 acl::dbuf_allocator< T >::allocate().

+ 这是这个函数的调用关系图:

◆ dbuf_calloc()

void* acl::dbuf_guard::dbuf_calloc ( size_t  len)
inline

调用 dbuf_pool::dbuf_calloc

参数
len{size_t}
返回
{void*}

在文件 dbuf_pool.hpp256 行定义.

257  {
258  return dbuf_->dbuf_calloc(len);
259  }
void * dbuf_calloc(size_t len)

◆ dbuf_free()

bool acl::dbuf_guard::dbuf_free ( const void *  addr)
inline

调用 dbuf_pool::dbuf_free

参数
addr{const void*}
返回
{bool}

在文件 dbuf_pool.hpp298 行定义.

299  {
300  return dbuf_->dbuf_free(addr);
301  }
bool dbuf_free(const void *addr)

◆ dbuf_keep()

bool acl::dbuf_guard::dbuf_keep ( const void *  addr)
inline

调用 dbuf_pool::dbuf_keep

参数
addr{const void*}
返回
{bool}

在文件 dbuf_pool.hpp308 行定义.

309  {
310  return dbuf_->dbuf_keep(addr);
311  }
bool dbuf_keep(const void *addr)

◆ dbuf_memdup()

void* acl::dbuf_guard::dbuf_memdup ( const void *  addr,
size_t  len 
)
inline

调用 dbuf_pool::dbuf_memdup

参数
addr{const void*}
len{size_t}
返回
{void*}

在文件 dbuf_pool.hpp288 行定义.

289  {
290  return dbuf_->dbuf_memdup(addr, len);
291  }
void * dbuf_memdup(const void *addr, size_t len)

◆ dbuf_reset()

bool acl::dbuf_guard::dbuf_reset ( size_t  reserve = 0)

调用 dbuf_pool::dbuf_reset

参数
reserve{size_t}
返回
{bool}

◆ dbuf_strdup()

char* acl::dbuf_guard::dbuf_strdup ( const char *  s)
inline

调用 dbuf_pool::dbuf_strdup

参数
s{const char*}
返回
{char*}

在文件 dbuf_pool.hpp266 行定义.

267  {
268  return dbuf_->dbuf_strdup(s);
269  }
char * dbuf_strdup(const char *s)

◆ dbuf_strndup()

char* acl::dbuf_guard::dbuf_strndup ( const char *  s,
size_t  len 
)
inline

调用 dbuf_pool::dbuf_strndup

参数
s{const char*}
len{size_t}
返回
{char*}

在文件 dbuf_pool.hpp277 行定义.

278  {
279  return dbuf_->dbuf_strndup(s, len);
280  }
char * dbuf_strndup(const char *s, size_t len)

◆ dbuf_unkeep()

bool acl::dbuf_guard::dbuf_unkeep ( const void *  addr)
inline

调用 dbuf_pool::dbuf_unkeep

参数
addr{const void*}
返回
{bool}

在文件 dbuf_pool.hpp318 行定义.

319  {
320  return dbuf_->dbuf_unkeep(addr);
321  }
bool dbuf_unkeep(const void *addr)

◆ get()

dbuf_obj* acl::dbuf_guard::get ( size_t  pos) const

返回指定下标的对象

参数
pos{size_t} 指定对象的下标位置,不应越界
返回
{dbuf_obj*} 当下标位置越界时返回 NULL

◆ get_dbuf()

acl::dbuf_pool& acl::dbuf_guard::get_dbuf ( void  ) const
inline

获得 dbuf_pool 对象

返回
{acl::dbuf_pool&}

在文件 dbuf_pool.hpp327 行定义.

328  {
329  return *dbuf_;
330  }

◆ operator[]()

dbuf_obj* acl::dbuf_guard::operator[] ( size_t  pos) const

返回指定下标的对象

参数
pos{size_t} 指定对象的下标位置,不应越界
返回
{dbuf_obj*} 当下标位置越界时返回 NULL

◆ push_back()

int acl::dbuf_guard::push_back ( dbuf_obj obj)

可以手动调用本函数,将在 dbuf_pool 上分配的 dbuf_obj 子类对象交给 dbuf_guard 对象统一进行销毁管理;严禁将同一个 dbuf_obj 子类对象同 时将给多个 dbuf_guard 对象进行管理,否则将会产生对象的重复释放

参数
obj{dbuf_obj*}
返回
{int} 返回 obj 被添加后其在 dbuf_obj 对象数组中的下标位置, dbuf_guard 内部对 dbuf_obj 对象的管理具有防重添加机制,所以当多次 将同一个 dbuf_obj 对象置入同一个 dbuf_guard 对象时,内部只会放一次

◆ set_increment()

void acl::dbuf_guard::set_increment ( size_t  incr)

设置内建 objs_ 数组对象每次在扩充空间时的增量,内部缺省值为 100

参数
incr{size_t}

◆ size()

size_t acl::dbuf_guard::size ( void  ) const
inline

获得当前内存池中管理的对象数量

返回
{size_t}

在文件 dbuf_pool.hpp347 行定义.

348  {
349  return size_;
350  }

该类的文档由以下文件生成: