Example #1
0
/* Presence */
PJ_DEF(void) pjpidf_pres_construct(pj_pool_t *pool, pjpidf_pres *pres,
				   const pj_str_t *entity)
{
    pj_xml_attr *attr;

    xml_init_node(pool, pres, &PRESENCE, NULL);
    attr = xml_create_attr(pool, &ENTITY, entity);
    pj_xml_add_attr(pres, attr);
    attr = xml_create_attr(pool, &XMLNS, &PIDF_XMLNS);
    pj_xml_add_attr(pres, attr);
}
Example #2
0
PJ_DEF(pjxpidf_pres*) pjxpidf_create(pj_pool_t *pool, const pj_str_t *uri_cstr)
{
    pjxpidf_pres *pres;
    pj_xml_node *presentity;
    pj_xml_node *atom;
    pj_xml_node *addr;
    pj_xml_node *status;
    pj_xml_attr *attr;
    pj_str_t uri;
    pj_str_t tmp;

    /* <presence> */
    pres = xml_create_node(pool, &STR_PRESENCE, NULL);

    /* <presentity> */
    presentity = xml_create_node(pool, &STR_PRESENTITY, NULL);
    pj_xml_add_node(pres, presentity);

    /* uri attribute */
    uri.ptr = (char*) pj_pool_alloc(pool, uri_cstr->slen + 
    					   STR_SUBSCRIBE_PARAM.slen);
    pj_strcpy( &uri, uri_cstr);
    pj_strcat( &uri, &STR_SUBSCRIBE_PARAM);
    attr = xml_create_attr(pool, &STR_URI, &uri);
    pj_xml_add_attr(presentity, attr);

    /* <atom> */
    atom = xml_create_node(pool, &STR_ATOM, NULL);
    pj_xml_add_node(pres, atom);

    /* atom id */
    pj_create_unique_string(pool, &tmp);
    attr = xml_create_attr(pool, &STR_ATOMID, &tmp);
    pj_xml_add_attr(atom, attr);

    /* address */
    addr = xml_create_node(pool, &STR_ADDRESS, NULL);
    pj_xml_add_node(atom, addr);

    /* address'es uri */
    attr = xml_create_attr(pool, &STR_URI, uri_cstr);
    pj_xml_add_attr(addr, attr);

    /* status */
    status = xml_create_node(pool, &STR_STATUS, NULL);
    pj_xml_add_node(addr, status);

    /* status attr */
    attr = xml_create_attr(pool, &STR_STATUS, &STR_OPEN);
    pj_xml_add_attr(status, attr);

    return pres;
}   
Example #3
0
/* Tuple */
PJ_DEF(void) pjpidf_tuple_construct(pj_pool_t *pool, pjpidf_tuple *t,
				    const pj_str_t *id)
{
    pj_xml_attr *attr;
    pjpidf_status *st;

    xml_init_node(pool, t, &TUPLE, NULL);
    attr = xml_create_attr(pool, &ID, id);
    pj_xml_add_attr(t, attr);
    st = PJ_POOL_ALLOC_T(pool, pjpidf_status);
    pjpidf_status_construct(pool, st);
    pj_xml_add_node(t, st);
}
Example #4
0
PJ_DECL(void) pjdialog_info_dialog_set_direction(pj_pool_t *pool,
                            pjdialog_info_dialog *dialog,
                            const pj_str_t *direction)
{
    pj_xml_attr *attr = pj_xml_find_attr(dialog, &DIRECTION, NULL);
    if (!attr)
    {
        attr = xml_create_attr(pool, &DIRECTION, direction);
        pj_xml_add_attr(dialog, attr);
    }
    else
        pj_strdup(pool, &attr->value, direction);
}
Example #5
0
PJ_DECL(void) pjdialog_info_dialog_set_local_tag(pj_pool_t *pool,
                            pjdialog_info_dialog *dialog,
                            const pj_str_t *local_tag)
{
    pj_xml_attr *attr = pj_xml_find_attr(dialog, &LOCAL_TAG, NULL);
    if (!attr)
    {
        attr = xml_create_attr(pool, &LOCAL_TAG, local_tag);
        pj_xml_add_attr(dialog, attr);
    }
    else
        pj_strdup(pool, &attr->value, local_tag);
}
Example #6
0
PJ_DECL(void) pjdialog_info_dialog_set_call_id(pj_pool_t *pool,
                            pjdialog_info_dialog *dialog,
                            const pj_str_t *call_id)
{
    pj_xml_attr *attr = pj_xml_find_attr(dialog, &CALL_ID, NULL);
    if (!attr)
    {
        attr = xml_create_attr(pool, &CALL_ID, call_id);
        pj_xml_add_attr(dialog, attr);
    }
    else
        pj_strdup(pool, &attr->value, call_id);
}
Example #7
0
/* Dialog-Info */
PJ_DECL(void) pjdialog_info_dialog_info_construct(pj_pool_t *pool,
                            pjdialog_info_dialog_info *dialog_info,
                            const pj_str_t *version,
                            const pj_str_t *state,
                            const pj_str_t* entity)
{
    pj_xml_attr *attr;
    pjdialog_info_dialog *dialog;

    xml_init_node(pool, dialog_info, &DIALOG_INFO, NULL);
    attr = xml_create_attr(pool, &VERSION, version);
    pj_xml_add_attr(dialog_info, attr);

    attr = xml_create_attr(pool, &STATE, state);
    pj_xml_add_attr(dialog_info, attr);

    attr = xml_create_attr(pool, &ENTITY, entity);
    pj_xml_add_attr(dialog_info, attr);

    dialog = PJ_POOL_ALLOC_T(pool, pjdialog_info_dialog);
    pjdialog_info_local_construct(pool, dialog);
    pj_xml_add_node(dialog_info, dialog);
}
Example #8
0
PJ_DECL(void) pjdialog_info_dialog_set_state_code(pj_pool_t *pool,
                            pjdialog_info_dialog *dialog,
                            const pj_str_t *state_code)
{
    pj_xml_node *node = pj_xml_find_node((pj_xml_node*)dialog, &STATE);
    pj_assert(node);
    pj_xml_attr *attr = pj_xml_find_attr(node, &CODE, NULL);
    if (!attr)
    {
        attr = xml_create_attr(pool, &CODE, state_code);
        pj_xml_add_attr(node, attr);
    }
    else
        pj_strdup(pool, &attr->value, state_code);
}
Example #9
0
PJ_DEF(void) pjpidf_tuple_set_contact_prio(pj_pool_t *pool, pjpidf_tuple *t, 
					   const pj_str_t *prio)
{
    pj_xml_node *node = pj_xml_find_node(t, &CONTACT);
    pj_xml_attr *attr;

    if (!node) {
	node = PJ_POOL_ALLOC_T(pool, pj_xml_node);
	xml_init_node(pool, node, &CONTACT, NULL);
	pj_xml_add_node(t, node);
    }
    attr = pj_xml_find_attr(node, &PRIORITY, NULL);
    if (!attr) {
	attr = xml_create_attr(pool, &PRIORITY, prio);
	pj_xml_add_attr(node, attr);
    } else {
	pj_strdup(pool, &attr->value, prio);
    }
}
Example #10
0
/* Dialog */
PJ_DECL(void) pjdialog_info_dialog_construct(pj_pool_t *pool,
                            pjdialog_info_dialog *dialog,
                            const pj_str_t *id)
{
    pj_xml_attr *attr;
    pjdialog_info_local *local;
    pjdialog_info_remote *remote;

    xml_init_node(pool, dialog, &DIALOG, NULL);
    attr = xml_create_attr(pool, &ID, id);
    pj_xml_add_attr(dialog, attr);
    local = PJ_POOL_ALLOC_T(pool, pjdialog_info_local);
    pjdialog_info_local_construct(pool, local);
    pj_xml_add_node(dialog, local);

    remote = PJ_POOL_ALLOC_T(pool, pjdialog_info_remote);
    pjdialog_info_remote_construct(pool, remote);
    pj_xml_add_node(dialog, remote);
}
Example #11
0
PJ_DECL(void) pjdialog_info_local_set_target_uri(pj_pool_t *pool,
                            pjdialog_info_local *local,
                            const pj_str_t * target_uri)
{
    pj_xml_node *node = pj_xml_find_node((pj_xml_node*)local, &TARGET);
    pj_xml_attr *attr;

    if (!node) {
        node = PJ_POOL_ALLOC_T(pool, pj_xml_node);
        xml_init_node(pool, node, &TARGET, NULL);
        pj_xml_add_node(local, node);
    }
    attr = pj_xml_find_attr(node, &URI, NULL);
    if (!attr) {
        attr = xml_create_attr(pool, &URI, target_uri);
        pj_xml_add_attr(node, attr);
    } else {
        pj_strdup(pool, &attr->value, target_uri);
    }
}
Example #12
0
PJ_DECL(void) pjdialog_info_local_set_identity_display(pj_pool_t *pool,
                            pjdialog_info_local *local,
                            const pj_str_t *identity_display)
{
    pj_xml_node *node = pj_xml_find_node((pj_xml_node*)local, &IDENTITY);
    pj_xml_attr *attr;

    if (!node) {
        node = PJ_POOL_ALLOC_T(pool, pj_xml_node);
        xml_init_node(pool, node, &IDENTITY, NULL);
        pj_xml_add_node(local, node);
    }
    attr = pj_xml_find_attr(node, &DISPLAY, NULL);
    if (!attr) {
        attr = xml_create_attr(pool, &DISPLAY, identity_display);
        pj_xml_add_attr(node, attr);
    } else {
        pj_strdup(pool, &attr->value, identity_display);
    }
}