Пример #1
0
static cpool_t *
__fac_gp_common_ctor(long efuncs, const cpool_method_t *me,
	const char *desc, int maxthreads, int minthreads, int priq_num, int suspend)
{
	int  e;
	cpool_t *pool = calloc(1, sizeof(cpool_t) + strlen(desc) + 1);

	if (!pool)
		return NULL;
	
	pool->desc = (char *)(pool + 1);
	strcpy(pool->desc, desc);

	pool->efuncs = efuncs;
	pool->me  = me;
	pool->free = __fac_gp_common_dtor;
		
	/**
	 * Create the group pool instance
	 */
	if ((e=cpool_gp_create_instance((cpool_gp_t **)&pool->ins, pool->desc, maxthreads, minthreads, priq_num, suspend, efuncs))) {
		MSG_log(M_GROUP, LOG_ERR,
			   "Failed to create gp pool. code(%d)\n",
			   e);
		free(pool);
		return NULL;
	}

	return pool;
}
Пример #2
0
static cpool_t *
__fac_gp_common_ctor(long efuncs, const cpool_method_t *me,
	const char *desc, int maxthreads, int minthreads, int priq_num, int suspend)
{
	int  e;
	cpool_gp_t *gpool;
	cpool_t *pool = calloc(1, sizeof(cpool_t) + sizeof(cpool_core_t) + sizeof(cpool_gp_t));

	if (!pool)
		return NULL;
	
	pool->desc = desc;
	pool->efuncs = efuncs;
	pool->me  = me;
	pool->ins = (cpool_core_t *)(pool + 1);
	pool->destroy = __fac_gp_common_dtor;
	
	/**
	 * Retreive the memory address of the rt pool and set its core
	 */
	gpool = (cpool_gp_t *)(pool->ins + 1);
	gpool->core = pool->ins;
	
	/**
	 * Create the rt pool instance
	 */
	if ((e=cpool_gp_create_instance(gpool, desc, maxthreads, minthreads, priq_num, suspend, efuncs))) {
		MSG_log(M_GROUP, LOG_ERR,
			   "Failed to create gp pool. code(%d)\n",
			   e);
		free(pool);
		return NULL;
	}

	return pool;
}