本文整理汇总了C++中pj_pool_calloc函数的典型用法代码示例。如果您正苦于以下问题:C++ pj_pool_calloc函数的具体用法?C++ pj_pool_calloc怎么用?C++ pj_pool_calloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pj_pool_calloc函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PJ_DEF
/* API */
PJ_DEF(pj_status_t) pjmedia_avi_dev_create_factory(
pj_pool_factory *pf,
unsigned max_dev,
pjmedia_vid_dev_factory **p_ret)
{
struct avi_factory *cf;
pj_pool_t *pool;
pj_status_t status;
pool = pj_pool_create(pf, "avidevfc%p", 512, 512, NULL);
cf = PJ_POOL_ZALLOC_T(pool, struct avi_factory);
cf->pf = pf;
cf->pool = pool;
cf->dev_count = max_dev;
cf->base.op = &factory_op;
cf->dev_info = (struct avi_dev_info*)
pj_pool_calloc(cf->pool, cf->dev_count,
sizeof(struct avi_dev_info));
if (p_ret) {
*p_ret = &cf->base;
}
status = pjmedia_vid_register_factory(NULL, &cf->base);
if (status != PJ_SUCCESS)
return status;
PJ_LOG(4, (THIS_FILE, "AVI dev factory created with %d virtual device(s)",
cf->dev_count));
return PJ_SUCCESS;
}
示例2: PJ_DEF
PJ_DEF(pj_hash_table_t*) pj_hash_create(pj_pool_t *pool, unsigned size)
{
pj_hash_table_t *h;
unsigned table_size;
/* Check that PJ_HASH_ENTRY_BUF_SIZE is correct. */
PJ_ASSERT_RETURN(sizeof(pj_hash_entry)<=PJ_HASH_ENTRY_BUF_SIZE, NULL);
h = PJ_POOL_ALLOC_T(pool, pj_hash_table_t);
h->count = 0;
PJ_LOG( 6, ("hashtbl", "hash table %p created from pool %s", h, pj_pool_getobjname(pool)));
/* size must be 2^n - 1.
round-up the size to this rule, except when size is 2^n, then size
will be round-down to 2^n-1.
*/
table_size = 8;
do {
table_size <<= 1;
} while (table_size < size);
table_size -= 1;
h->rows = table_size;
h->table = (pj_hash_entry**)
pj_pool_calloc(pool, table_size+1, sizeof(pj_hash_entry*));
return h;
}
示例3: PJ_DEF
/*
* pj_thread_create(...)
*/
PJ_DEF(pj_status_t) pj_thread_create( pj_pool_t *pool,
const char *thread_name,
pj_thread_proc *proc,
void *arg,
pj_size_t stack_size,
unsigned flags,
pj_thread_t **thread_ptr)
{
DWORD dwflags = 0;
pj_thread_t *rec;
PJ_CHECK_STACK();
PJ_ASSERT_RETURN(pool && proc && thread_ptr, PJ_EINVAL);
/* Set flags */
if (flags & PJ_THREAD_SUSPENDED)
dwflags |= CREATE_SUSPENDED;
/* Create thread record and assign name for the thread */
rec = (struct pj_thread_t*) pj_pool_calloc(pool, 1, sizeof(pj_thread_t));
if (!rec)
return PJ_ENOMEM;
/* Set name. */
if (!thread_name)
thread_name = "thr%p";
if (strchr(thread_name, '%')) {
pj_ansi_snprintf(rec->obj_name, PJ_MAX_OBJ_NAME, thread_name, rec);
} else {
pj_ansi_strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
rec->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
}
PJ_LOG(6, (rec->obj_name, "Thread created"));
#if defined(PJ_OS_HAS_CHECK_STACK) && PJ_OS_HAS_CHECK_STACK!=0
rec->stk_size = stack_size ? (pj_uint32_t)stack_size : 0xFFFFFFFFUL;
rec->stk_max_usage = 0;
#endif
/* Create the thread. */
rec->proc = proc;
rec->arg = arg;
rec->hthread = CreateThread(NULL, stack_size,
thread_main, rec,
dwflags, &rec->idthread);
if (rec->hthread == NULL)
return PJ_RETURN_OS_ERROR(GetLastError());
/* Success! */
*thread_ptr = rec;
return PJ_SUCCESS;
}
示例4: dns_srv_resolver_cb
/*
* Notification on completion of DNS SRV resolution.
*/
static void dns_srv_resolver_cb(void *user_data,
pj_status_t status,
const pj_dns_srv_record *rec)
{
pj_tcp_session *sess = (pj_tcp_session*) user_data;
unsigned i, cnt, tot_cnt;
/* Clear async resolver */
sess->dns_async = NULL;
/* Check failure */
if (status != PJ_SUCCESS) {
sess_shutdown(sess, status);
return;
}
/* Calculate total number of server entries in the response */
tot_cnt = 0;
for (i=0; i<rec->count; ++i) {
tot_cnt += rec->entry[i].server.addr_count;
}
if (tot_cnt > PJ_TCP_MAX_DNS_SRV_CNT)
tot_cnt = PJ_TCP_MAX_DNS_SRV_CNT;
/* Allocate server entries */
sess->srv_addr_list = (pj_sockaddr*)
pj_pool_calloc(sess->pool, tot_cnt,
sizeof(pj_sockaddr));
/* Copy results to server entries */
for (i=0, cnt=0; i<rec->count && cnt<PJ_TCP_MAX_DNS_SRV_CNT; ++i) {
unsigned j;
for (j=0; j<rec->entry[i].server.addr_count &&
cnt<PJ_TCP_MAX_DNS_SRV_CNT; ++j)
{
pj_sockaddr_in *addr = &sess->srv_addr_list[cnt].ipv4;
addr->sin_family = sess->af;
addr->sin_port = pj_htons(rec->entry[i].port);
addr->sin_addr.s_addr = rec->entry[i].server.addr[j].s_addr;
++cnt;
}
}
sess->srv_addr_cnt = (pj_uint16_t)cnt;
/* Set current server */
sess->srv_addr = &sess->srv_addr_list[0];
/* Set state to PJ_TCP_STATE_RESOLVED */
pj_tcp_session_set_state(sess, PJ_TCP_STATE_RESOLVED);
}
示例5: PJ_DEF
PJ_DEF(pj_status_t) pj_atomic_create( pj_pool_t *pool,
pj_atomic_value_t value,
pj_atomic_t **ptr_var)
{
pj_atomic_t *t = pj_pool_calloc(pool, 1, sizeof(pj_atomic_t));
if (!t) return PJ_ENOMEM;
atomic_set(&t->atom, value);
*ptr_var = t;
return PJ_SUCCESS;
}
示例6: vid4lin_stream_init_streaming
/* Util: initiate v4l2 streaming via mmap */
static pj_status_t vid4lin_stream_init_streaming(vid4lin_stream *stream)
{
struct v4l2_requestbuffers req;
unsigned i;
pj_status_t status;
pj_bzero(&req, sizeof(req));
req.count = BUFFER_CNT;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
status = xioctl(stream->fd, VIDIOC_REQBUFS, &req);
if (status != PJ_SUCCESS)
return status;
stream->buffers = pj_pool_calloc(stream->pool, req.count,
sizeof(*stream->buffers));
stream->buf_cnt = 0;
for (i = 0; i < req.count; ++i) {
struct v4l2_buffer buf;
pj_bzero(&buf, sizeof(buf));
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;
status = xioctl(stream->fd, VIDIOC_QUERYBUF, &buf);
if (status != PJ_SUCCESS)
goto on_error;
stream->buffers[i].length = buf.length;
stream->buffers[i].start = v4l2_mmap(NULL, buf.length,
PROT_READ | PROT_WRITE,
MAP_SHARED, stream->fd,
buf.m.offset);
if (MAP_FAILED == stream->buffers[i].start) {
status = pj_get_os_error();
goto on_error;
}
stream->buf_cnt++;
}
PJ_LOG(5,(THIS_FILE, " mmap streaming initialized"));
stream->io_type = IO_TYPE_MMAP;
return PJ_SUCCESS;
on_error:
return status;
}
示例7: PJ_DEF
PJ_DEF(pj_atomic_t*) pj_atomic_create( pj_pool_t *pool, long value)
{
pj_atomic_t *t = pj_pool_calloc(pool, 1, sizeof(pj_atomic_t));
if (!t)
return NULL;
#if PJ_HAS_THREADS
t->mutex = pj_mutex_create(pool, "atm%p", PJ_MUTEX_SIMPLE);
if (t->mutex == NULL)
return NULL;
#endif
t->value = value;
return t;
}
示例8: PJ_DEF
/*
* Duplicate SSL socket parameter.
*/
PJ_DEF(void) pj_ssl_sock_param_copy( pj_pool_t *pool,
pj_ssl_sock_param *dst,
const pj_ssl_sock_param *src)
{
/* Init secure socket param */
pj_memcpy(dst, src, sizeof(*dst));
if (src->ciphers_num > 0) {
unsigned i;
dst->ciphers = (pj_ssl_cipher*)
pj_pool_calloc(pool, src->ciphers_num,
sizeof(pj_ssl_cipher));
for (i = 0; i < src->ciphers_num; ++i)
dst->ciphers[i] = src->ciphers[i];
}
if (src->curves_num > 0) {
unsigned i;
dst->curves = (pj_ssl_curve *)pj_pool_calloc(pool, src->curves_num,
sizeof(pj_ssl_curve));
for (i = 0; i < src->curves_num; ++i)
dst->curves[i] = src->curves[i];
}
if (src->server_name.slen) {
/* Server name must be null-terminated */
pj_strdup_with_null(pool, &dst->server_name, &src->server_name);
}
if (src->sigalgs.slen) {
/* Sigalgs name must be null-terminated */
pj_strdup_with_null(pool, &dst->sigalgs, &src->sigalgs);
}
if (src->entropy_path.slen) {
/* Path name must be null-terminated */
pj_strdup_with_null(pool, &dst->entropy_path, &src->entropy_path);
}
}
示例9: PJ_DEF
PJ_DEF(pj_thread_t*) pj_thread_create(pj_pool_t *pool, const char *thread_name,
pj_thread_proc *proc, void *arg,
pj_size_t stack_size, void *stack,
unsigned flags)
{
DWORD dwflags = 0;
pj_thread_t *rec;
/* Stack argument must be NULL on WIN32 */
if (stack != NULL)
return NULL;
/* Set flags */
if (flags & PJ_THREAD_SUSPENDED)
dwflags |= CREATE_SUSPENDED;
/* Create thread record and assign name for the thread */
rec = (struct pj_thread_t*) pj_pool_calloc(pool, 1, sizeof(pj_thread_t));
if (!rec) {
return NULL;
}
/* Set name. */
if (!thread_name) {
thread_name = "thr%p";
}
if (strchr(thread_name, '%')) {
pj_snprintf(rec->obj_name, PJ_MAX_OBJ_NAME, thread_name, rec);
} else {
strncpy(rec->obj_name, thread_name, PJ_MAX_OBJ_NAME);
rec->obj_name[PJ_MAX_OBJ_NAME-1] = '\0';
}
PJ_LOG(6, (rec->obj_name, "Thread created"));
/* Create the thread. */
rec->proc = proc;
rec->arg = arg;
rec->hthread = CreateThread(NULL, stack_size,
thread_main, rec,
dwflags, &rec->idthread);
if (rec->hthread == NULL) {
return NULL;
}
return rec;
}
示例10: PJ_DEF
PJ_DEF(pj_status_t) pj_activesock_start_read(pj_activesock_t *asock,
pj_pool_t *pool,
unsigned buff_size,
pj_uint32_t flags)
{
void **readbuf;
unsigned i;
PJ_ASSERT_RETURN(asock && pool && buff_size, PJ_EINVAL);
readbuf = (void**) pj_pool_calloc(pool, asock->async_count,
sizeof(void*));
for (i=0; i<asock->async_count; ++i) {
readbuf[i] = pj_pool_alloc(pool, buff_size);
}
return pj_activesock_start_read2(asock, pool, buff_size, readbuf, flags);
}
示例11: PJ_LOG
Jt_Station::Jt_Station(jt_station_config_t *cfg)
{
PJ_LOG(3, ("station.cpp", "Jt_Station: build a station. id: %d, name: %s", cfg->id, cfg->name.ptr));
_pool = pj_pool_create(&g_cp.factory, cfg->name.ptr, INIT_POOL_STATION_SIZE, INC_POOL_STATION_SIZE, NULL);
pj_strdup_with_null(_pool, &_name, &cfg->name);
_id = cfg->id;
_fin = cfg->fin;
_rtinfo = pj_hash_create(_pool, MAX_SIGNAL_KIND_COUNTS);
jt_neighbour_config_t *nb = (jt_neighbour_config_t*)pj_pool_calloc(_pool, cfg->link_cnts, sizeof(jt_neighbour_config_t));
for(pj_uint32_t i=0; i<cfg->link_cnts; i++)
{
nb[i].event = cfg->link_cfg[i]->event;
nb[i].stt_id = cfg->link_cfg[i]->stt_id;
pj_hash_set(_pool, _rtinfo, &(nb[i].event), sizeof(pj_uint32_t), 0, &(nb[i]));
}
_car_tbl = pj_hash_create(_pool, MAX_CAR_COUNTS_PER_STATION);
_ops_tbl = pj_hash_create(_pool, MAX_SIGNAL_KIND_COUNTS);
}
示例12: pjsip_messaging_create_session
pjsip_messaging_create_session( pjsip_endpoint *endpt, const pj_str_t *param_from,
const pj_str_t *param_to )
{
pj_pool_t *pool;
pjsip_messaging_session *ses;
pj_str_t tmp, to;
pool = pjsip_endpt_create_pool(endpt, "imsess", 1024, 1024);
if (!pool)
return NULL;
ses = pj_pool_calloc(pool, 1, sizeof(pjsip_messaging_session));
ses->pool = pool;
ses->endpt = endpt;
ses->call_id = pjsip_cid_hdr_create(pool);
pj_create_unique_string(pool, &ses->call_id->id);
ses->cseq = pjsip_cseq_hdr_create(pool);
ses->cseq->cseq = pj_rand();
ses->cseq->method = message_method;
ses->from = pjsip_from_hdr_create(pool);
pj_strdup_with_null(pool, &tmp, param_from);
ses->from->uri = pjsip_parse_uri(pool, tmp.ptr, tmp.slen, PJSIP_PARSE_URI_AS_NAMEADDR);
if (ses->from->uri == NULL) {
pjsip_endpt_destroy_pool(endpt, pool);
return NULL;
}
pj_create_unique_string(pool, &ses->from->tag);
ses->to = pjsip_to_hdr_create(pool);
pj_strdup_with_null(pool, &to, param_from);
ses->to->uri = pjsip_parse_uri(pool, to.ptr, to.slen, PJSIP_PARSE_URI_AS_NAMEADDR);
if (ses->to->uri == NULL) {
pjsip_endpt_destroy_pool(endpt, pool);
return NULL;
}
PJ_LOG(4,(THIS_FILE, "IM session created: recipient=%s", to.ptr));
return ses;
}
示例13: PJ_DEF
/* Set local peer address */
PJ_DEF(void) pj_tcp_session_set_local_addr( pj_tcp_session *sess,
const pj_sockaddr_t *addr)
{
char buf[PJ_INET6_ADDRSTRLEN+20];
if (!sess)
return;
if (!sess->local_addr) {
sess->local_addr = (pj_sockaddr_t *)
pj_pool_calloc(sess->pool, 1,
pj_sockaddr_get_len(addr));
}
sess->local_addr_len = pj_sockaddr_get_len(addr);
pj_sockaddr_cp(sess->local_addr, addr);
//pj_sockaddr_set_str_addr(pj_AF_INET(), (pj_sockaddr *)sess->peer_addr, &str_addr);
PJ_LOG(4, (THIS_FILE, "pj_tcp_session_set_remote_peer_addr() %s",
pj_sockaddr_print(sess->local_addr, buf, sizeof(buf), 3)));
}
示例14: pjsip_messaging_send_msg
pjsip_messaging_send_msg( pjsip_endpoint *endpt, pjsip_tx_data *tdata,
void *token, pjsip_messaging_cb cb )
{
pjsip_transaction *tsx;
struct messaging_data *msg_data;
/* Create transaction. */
tsx = pjsip_endpt_create_tsx(endpt);
if (!tsx) {
pjsip_tx_data_dec_ref(tdata);
return -1;
}
/* Save parameters to messaging data and attach to tsx. */
msg_data = pj_pool_calloc(tsx->pool, 1, sizeof(struct messaging_data));
msg_data->cb = cb;
msg_data->token = token;
/* Init transaction. */
tsx->module_data[module_id] = msg_data;
if (pjsip_tsx_init_uac(tsx, tdata) != 0) {
pjsip_tx_data_dec_ref(tdata);
pjsip_endpt_destroy_tsx(endpt, tsx);
return -1;
}
pjsip_endpt_register_tsx(endpt, tsx);
/*
* Instruct transaction to send message.
* Further events will be received via transaction's event.
*/
pjsip_tsx_on_tx_msg(tsx, tdata);
/* Decrement reference counter. */
pjsip_tx_data_dec_ref(tdata);
return 0;
}
示例15: PJ_DEF
PJ_DEF(pj_status_t) pj_stun_create_bind_req( pj_pool_t *pool,
void **msg, pj_size_t *len,
pj_uint32_t id_hi,
pj_uint32_t id_lo)
{
pj_stun_msg_hdr *hdr;
PJ_LOG(5,(THIS_FILE, "pj_stun_create_bind_req"));
hdr = pj_pool_calloc(pool, 1, sizeof(pj_stun_msg_hdr));
if (!hdr) {
PJ_LOG(5,(THIS_FILE, "Error allocating memory!"));
return -1;
}
hdr->type = pj_htons(PJ_STUN_BINDING_REQUEST);
hdr->tsx[2] = pj_htonl(id_hi);
hdr->tsx[3] = pj_htonl(id_lo);
*msg = hdr;
*len = sizeof(pj_stun_msg_hdr);
return 0;
}