本文整理汇总了C++中pjsip_parser_const函数的典型用法代码示例。如果您正苦于以下问题:C++ pjsip_parser_const函数的具体用法?C++ pjsip_parser_const怎么用?C++ pjsip_parser_const使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pjsip_parser_const函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pjsip_reject_contact_hdr_print_on
int pjsip_reject_contact_hdr_print_on(void* void_hdr,
char* buf,
pj_size_t size)
{
int printed;
char *startbuf = buf;
char *endbuf = buf + size;
pjsip_reject_contact_hdr* hdr = (pjsip_reject_contact_hdr *)void_hdr;
const pjsip_parser_const_t *pc = pjsip_parser_const();
/* Route and Record-Route don't compact forms */
copy_advance(buf, hdr->name);
*buf++ = ':';
*buf++ = ' ';
*buf++ = '*';
printed = pjsip_param_print_on(&hdr->feature_set, buf, endbuf-buf,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
{
return -1;
}
buf += printed;
return buf-startbuf;
}
示例2: print_digest_challenge
static int print_digest_challenge( pjsip_digest_challenge *chal,
char *buf, pj_size_t size)
{
pj_ssize_t printed;
char *startbuf = buf;
char *endbuf = buf + size;
const pjsip_parser_const_t *pc = pjsip_parser_const();
/* Allow empty realm, see http://trac.pjsip.org/repos/ticket/1061 */
copy_advance_pair_quote(buf, " realm=", 7, chal->realm, '"', '"');
copy_advance_pair_quote_cond(buf, ",domain=", 8, chal->domain, '"', '"');
copy_advance_pair_quote_cond(buf, ",nonce=", 7, chal->nonce, '"', '"');
copy_advance_pair_quote_cond(buf, ",opaque=", 8, chal->opaque, '"', '"');
if (chal->stale) {
pj_str_t true_str = { "true", 4 };
copy_advance_pair(buf, ",stale=", 7, true_str);
}
copy_advance_pair(buf, ",algorithm=", 11, chal->algorithm);
copy_advance_pair_quote_cond(buf, ",qop=", 5, chal->qop, '"', '"');
printed = pjsip_param_print_on(&chal->other_param, buf, endbuf-buf,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ',');
if (printed < 0)
return -1;
buf += printed;
return (int)(buf-startbuf);
}
示例3: print_digest_credential
static int print_digest_credential(pjsip_digest_credential *cred, char *buf, pj_size_t size)
{
pj_ssize_t printed;
char *startbuf = buf;
char *endbuf = buf + size;
const pjsip_parser_const_t *pc = pjsip_parser_const();
copy_advance_pair_quote_cond(buf, "username=", 9, cred->username, '"', '"');
copy_advance_pair_quote_cond_always(buf, ", realm=", 8, cred->realm, '"',
'"');
copy_advance_pair_quote(buf, ", nonce=", 8, cred->nonce, '"', '"');
copy_advance_pair_quote_cond(buf, ", uri=", 6, cred->uri, '"', '"');
copy_advance_pair_quote(buf, ", response=", 11, cred->response, '"', '"');
copy_advance_pair(buf, ", algorithm=", 12, cred->algorithm);
copy_advance_pair_quote_cond(buf, ", cnonce=", 9, cred->cnonce, '"', '"');
copy_advance_pair_quote_cond(buf, ", opaque=", 9, cred->opaque, '"', '"');
//Note: there's no dbl-quote in qop in Authorization header
// (unlike WWW-Authenticate)
//copy_advance_pair_quote_cond(buf, ", qop=", 6, cred->qop, '"', '"');
copy_advance_pair(buf, ", qop=", 6, cred->qop);
copy_advance_pair(buf, ", nc=", 5, cred->nc);
printed = pjsip_param_print_on(&cred->other_param, buf, endbuf-buf,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ',');
if (printed < 0)
return -1;
buf += printed;
return (int) (buf-startbuf);
}
示例4: pjsip_sess_expires_hdr_create
/*
* Parse Session-Expires header.
*/
static pjsip_hdr *parse_hdr_se(pjsip_parse_ctx *ctx)
{
pjsip_sess_expires_hdr *hdr = pjsip_sess_expires_hdr_create(ctx->pool);
const pjsip_parser_const_t *pc = pjsip_parser_const();
pj_str_t token;
pj_scan_get(ctx->scanner, &pc->pjsip_DIGIT_SPEC, &token);
hdr->sess_expires = pj_strtoul(&token);
while (*ctx->scanner->curptr == ';') {
pj_str_t pname, pvalue;
pj_scan_get_char(ctx->scanner);
pjsip_parse_param_imp(ctx->scanner, ctx->pool, &pname, &pvalue, 0);
if (pj_stricmp(&pname, &STR_REFRESHER)==0) {
hdr->refresher = pvalue;
} else {
pjsip_param *param = PJ_POOL_ALLOC_T(ctx->pool, pjsip_param);
param->name = pname;
param->value = pvalue;
pj_list_push_back(&hdr->other_param, param);
}
}
pjsip_parse_end_hdr_imp( ctx->scanner );
return (pjsip_hdr*)hdr;
}
示例5: pjsip_accept_contact_hdr_print_on
int pjsip_accept_contact_hdr_print_on(void* void_hdr,
char* buf,
pj_size_t size)
{
int printed;
char *startbuf = buf;
char *endbuf = buf + size;
pjsip_accept_contact_hdr* hdr = (pjsip_accept_contact_hdr *)void_hdr;
const pjsip_parser_const_t *pc = pjsip_parser_const();
/* Route and Record-Route don't compact forms */
copy_advance(buf, hdr->name);
copy_advance(buf, pj_str(": *"));
printed = pjsip_param_print_on(&hdr->feature_set, buf, endbuf-buf,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
{
return -1;
}
buf += printed;
if (hdr->explicit_match)
{
copy_advance(buf, pj_str(";explicit"));
}
if (hdr->required_match)
{
copy_advance(buf, pj_str(";require"));
}
return buf-startbuf;
}
示例6: identity_hdr_print
int identity_hdr_print(pjsip_routing_hdr* hdr,
char* buf,
pj_size_t size)
{
int printed;
char *startbuf = buf;
char *endbuf = buf + size;
const pjsip_parser_const_t *pc = pjsip_parser_const();
/* Route and Record-Route don't compact forms */
copy_advance(buf, hdr->name);
*buf++ = ':';
*buf++ = ' ';
printed = pjsip_uri_print(PJSIP_URI_IN_ROUTING_HDR,
&hdr->name_addr,
buf,
endbuf-buf);
if (printed < 1)
{
return -1; // LCOV_EXCL_LINE
}
buf += printed;
printed = pjsip_param_print_on(&hdr->other_param, buf, endbuf-buf,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
{
return -1; // LCOV_EXCL_LINE
}
buf += printed;
return buf-startbuf;
}
示例7: min_se_hdr_print
/*
* Min-SE header vptr.
*/
static int min_se_hdr_print(pjsip_min_se_hdr *hdr,
char *buf, pj_size_t size)
{
char *p = buf;
char *endbuf = buf+size;
pj_ssize_t printed;
const pjsip_parser_const_t *pc = pjsip_parser_const();
/* Print header name and value */
if ((endbuf - p) < (hdr->name.slen + 16))
return -1;
copy_advance(p, hdr->name);
*p++ = ':';
*p++ = ' ';
printed = pj_utoa(hdr->min_se, p);
p += printed;
/* Print generic params */
printed = pjsip_param_print_on(&hdr->other_param, p, endbuf-p,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
return (int)printed;
p += printed;
return (int)(p - buf);
}
示例8: replaces_hdr_print
static int replaces_hdr_print( pjsip_replaces_hdr *hdr,
char *buf, pj_size_t size)
{
char *p = buf;
char *endbuf = buf+size;
int printed;
const pjsip_parser_const_t *pc = pjsip_parser_const();
copy_advance(p, hdr->name);
*p++ = ':';
*p++ = ' ';
copy_advance(p, hdr->call_id);
copy_advance_pair(p, ";to-tag=", 8, hdr->to_tag);
copy_advance_pair(p, ";from-tag=", 10, hdr->from_tag);
if (hdr->early_only) {
const pj_str_t str_early_only = { ";early-only", 11 };
copy_advance(p, str_early_only);
}
printed = pjsip_param_print_on(&hdr->other_param, p, endbuf-p,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
return printed;
p += printed;
return p - buf;
}
示例9: int_parse_hdr_authenticate
static void int_parse_hdr_authenticate( pj_scanner *scanner, pj_pool_t *pool,
pjsip_www_authenticate_hdr *hdr)
{
const pjsip_parser_const_t *pc = pjsip_parser_const();
if (*scanner->curptr == '"') {
pj_scan_get_quote(scanner, '"', '"', &hdr->scheme);
hdr->scheme.ptr++;
hdr->scheme.slen -= 2;
} else {
pj_scan_get(scanner, &pc->pjsip_TOKEN_SPEC, &hdr->scheme);
}
if (!pj_stricmp(&hdr->scheme, &pjsip_DIGEST_STR)) {
parse_digest_challenge(scanner, pool, &hdr->challenge.digest);
} else if (!pj_stricmp(&hdr->scheme, &pjsip_PGP_STR)) {
parse_pgp_challenge(scanner, pool, &hdr->challenge.pgp);
} else {
PJ_THROW(PJSIP_SYN_ERR_EXCEPTION);
}
pjsip_parse_end_hdr_imp( scanner );
}
示例10: pjsip_event_hdr_create
/*
* Parse Event header.
*/
static pjsip_hdr *parse_hdr_event(pjsip_parse_ctx *ctx)
{
pjsip_event_hdr *hdr = pjsip_event_hdr_create(ctx->pool);
const pj_str_t id_param = { "id", 2 };
const pjsip_parser_const_t *pc = pjsip_parser_const();
pj_scan_get(ctx->scanner, &pc->pjsip_TOKEN_SPEC, &hdr->event_type);
while (*ctx->scanner->curptr == ';') {
pj_str_t pname, pvalue;
pj_scan_get_char(ctx->scanner);
pjsip_parse_param_imp(ctx->scanner, ctx->pool, &pname, &pvalue, 0);
if (pj_stricmp(&pname, &id_param)==0) {
hdr->id_param = pvalue;
} else {
pjsip_param *param = PJ_POOL_ALLOC_T(ctx->pool, pjsip_param);
param->name = pname;
param->value = pvalue;
pj_list_push_back(&hdr->other_param, param);
}
}
pjsip_parse_end_hdr_imp( ctx->scanner );
return (pjsip_hdr*)hdr;
}
示例11: pjsip_session_expires_hdr_print_on
int pjsip_session_expires_hdr_print_on(void* h, char* buf, pj_size_t len)
{
char* p = buf;
const pjsip_session_expires_hdr* hdr = (pjsip_session_expires_hdr*)h;
const pjsip_parser_const_t *pc = pjsip_parser_const();
// As per pjsip_generic_int_hdr_print, integers are fewer then 15 characters long.
if ((pj_ssize_t)len < hdr->name.slen + 15)
{
return -1;
}
pj_memcpy(p, hdr->name.ptr, hdr->name.slen);
p += hdr->name.slen;
*p++ = ':';
*p++ = ' ';
p += pj_utoa(hdr->expires, p);
if (hdr->refresher != SESSION_REFRESHER_UNKNOWN)
{
// Check the refresher parameter will fit.
if (buf+len-p < 14)
{
return -1;
}
// Fill it in
*p++ = ';';
pj_memcpy(p, "refresher=", 10);
p += 10;
if (hdr->refresher == SESSION_REFRESHER_UAC)
{
pj_memcpy(p, "uac", 3);
}
else
{
pj_memcpy(p, "uas", 3);
}
p += 3;
}
// Try to add the other params.
pj_ssize_t printed = pjsip_param_print_on(&hdr->other_param, p, buf+len-p,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
{
return -1;
}
p += printed;
*p = '\0';
return p - buf;
}
示例12: parse_hdr_session_expires
pjsip_hdr* parse_hdr_session_expires(pjsip_parse_ctx* ctx)
{
pj_pool_t* pool = ctx->pool;
pj_scanner* scanner = ctx->scanner;
pjsip_session_expires_hdr* hdr = pjsip_session_expires_hdr_create(pool);
const pjsip_parser_const_t* pc = pjsip_parser_const();
// Parse the expiry number
pj_str_t int_str;
pj_scan_get(scanner, &pc->pjsip_DIGIT_SPEC, &int_str);
hdr->expires = pj_strtoul(&int_str);
pj_scan_skip_whitespace(scanner);
// Parse the rest of the params, looking for the refresher param
while (*scanner->curptr == ';')
{
// Consume the ';'.
pj_scan_get_char(scanner);
pj_scan_skip_whitespace(scanner);
// Parse the param.
pj_str_t name;
pj_str_t value;
pjsip_parse_param_imp(scanner, pool, &name, &value,
PJSIP_PARSE_REMOVE_QUOTE);
if (!pj_stricmp2(&name, "refresher"))
{
if (!pj_stricmp2(&value, "uac"))
{
hdr->refresher = SESSION_REFRESHER_UAC;
}
else if (!pj_stricmp2(&value, "uas"))
{
hdr->refresher = SESSION_REFRESHER_UAS;
}
else
{
PJ_THROW(PJSIP_SYN_ERR_EXCEPTION); // LCOV_EXCL_LINE
}
}
else
{
pjsip_param* param = PJ_POOL_ALLOC_T(pool, pjsip_param);
param->name = name;
param->value = value;
pj_list_insert_before(&hdr->other_param, param);
}
}
// We're done parsing this header.
pjsip_parse_end_hdr_imp(scanner);
return (pjsip_hdr*)hdr;
}
示例13: parse_hdr_reject_contact
pjsip_hdr* parse_hdr_reject_contact(pjsip_parse_ctx* ctx)
{
// The Reject-Contact header has the following ABNF:
//
// Reject-Contact = ("Reject-Contact" / "j") HCOLON rc-value
// *(COMMA rc-value)
// rc-value = "*" *(SEMI rc-params)
// rc-params = feature-param / generic-param
//
// But we allow any value for the header (not just *).
pj_pool_t* pool = ctx->pool;
pj_scanner* scanner = ctx->scanner;
const pjsip_parser_const_t* pc = pjsip_parser_const();
pjsip_reject_contact_hdr* hdr = pjsip_reject_contact_hdr_create(pool);
pj_str_t name;
pj_str_t value;
pjsip_param *param;
// Read and ignore the value.
pj_str_t header_value;
pj_scan_get(scanner, &pc->pjsip_TOKEN_SPEC, &header_value);
for (;;)
{
// We might need to swallow the ';'.
if (!pj_scan_is_eof(scanner) && *scanner->curptr == ';')
{
pj_scan_get_char(scanner);
}
pjsip_parse_param_imp(scanner, pool, &name, &value, 0);
param = PJ_POOL_ALLOC_T(pool, pjsip_param);
param->name = name;
param->value = value;
pj_list_insert_before(&hdr->feature_set, param);
// If we're EOF or looking at a newline, we're done.
pj_scan_skip_whitespace(scanner);
if (pj_scan_is_eof(scanner) ||
(*scanner->curptr == '\r') ||
(*scanner->curptr == '\n'))
{
break;
}
}
// We're done parsing this header.
pjsip_parse_end_hdr_imp(scanner);
return (pjsip_hdr*)hdr;
}
示例14: tel_uri_print
/* Print tel: URI */
static pj_ssize_t tel_uri_print( pjsip_uri_context_e context,
const pjsip_tel_uri *uri,
char *buf, pj_size_t size)
{
int printed;
char *startbuf = buf;
char *endbuf = buf+size-1;
const pjsip_parser_const_t *pc = pjsip_parser_const();
PJ_UNUSED_ARG(context);
/* Print scheme. */
copy_advance(buf, pc->pjsip_TEL_STR);
*buf++ = ':';
/* Print number. */
copy_advance_escape(buf, uri->number, pjsip_TEL_NUMBER_SPEC);
/* ISDN sub-address or extension must appear first. */
/* Extension param. */
copy_advance_pair_escape(buf, ";ext=", 5, uri->ext_param,
pjsip_TEL_EXT_VALUE_SPEC);
/* ISDN sub-address. */
copy_advance_pair_escape(buf, ";isub=", 6, uri->isub_param,
pjsip_TEL_URIC_SPEC);
/* Followed by phone context, if present. */
copy_advance_pair_escape(buf, ";phone-context=", 15, uri->context,
pjsip_TEL_PHONE_CONTEXT_SPEC);
/* Print other parameters. */
printed = (int)pjsip_param_print_on(&uri->other_param, buf, (endbuf-buf),
&pjsip_TEL_PNAME_SPEC,
&pjsip_TEL_PVALUE_SPEC, ';');
if (printed < 0)
return -1;
buf += printed;
*buf = '\0';
return (buf-startbuf);
}
示例15: se_hdr_print
/*
* Session-Expires header vptr.
*/
static int se_hdr_print(pjsip_sess_expires_hdr *hdr,
char *buf, pj_size_t size)
{
char *p = buf;
char *endbuf = buf+size;
pj_ssize_t printed;
const pjsip_parser_const_t *pc = pjsip_parser_const();
const pj_str_t *hname = pjsip_use_compact_form? &hdr->sname : &hdr->name;
/* Print header name and value */
if ((endbuf - p) < (hname->slen + 16))
return -1;
copy_advance(p, (*hname));
*p++ = ':';
*p++ = ' ';
printed = pj_utoa(hdr->sess_expires, p);
p += printed;
/* Print 'refresher' param */
if (hdr->refresher.slen)
{
if ((endbuf - p) < (STR_REFRESHER.slen + 2 + hdr->refresher.slen))
return -1;
*p++ = ';';
copy_advance(p, STR_REFRESHER);
*p++ = '=';
copy_advance(p, hdr->refresher);
}
/* Print generic params */
printed = pjsip_param_print_on(&hdr->other_param, p, endbuf-p,
&pc->pjsip_TOKEN_SPEC,
&pc->pjsip_TOKEN_SPEC, ';');
if (printed < 0)
return (int)printed;
p += printed;
return (int)(p - buf);
}