コード例 #1
0
ファイル: candpair.c プロジェクト: anchowee/traversal_server
int icem_candpair_alloc(struct candpair **cpp, struct icem *icem,
			struct cand *lcand, struct cand *rcand)
{
	struct candpair *cp;
	struct icem_comp *comp;

	if (!icem || !lcand || !rcand)
		return EINVAL;

	comp = icem_comp_find(icem, lcand->compid);
	if (!comp)
		return ENOENT;

	cp = mem_zalloc(sizeof(*cp), candpair_destructor);
	if (!cp)
		return ENOMEM;

	cp->icem  = icem;
	cp->comp  = comp;
	cp->lcand = mem_ref(lcand);
	cp->rcand = mem_ref(rcand);
	cp->state = CANDPAIR_FROZEN;
	cp->ertt  = -1;
	cp->def   = comp->def_lcand == lcand && comp->def_rcand == rcand;

	candpair_set_pprio(cp);

	list_add_sorted(&icem->checkl, cp);

	if (cpp)
		*cpp = cp;

	return 0;
}
コード例 #2
0
ファイル: candpair.c プロジェクト: anchowee/traversal_server
int icem_candpair_clone(struct candpair **cpp, struct candpair *cp0,
			struct cand *lcand, struct cand *rcand)
{
	struct candpair *cp;

	if (!cp0)
		return EINVAL;

	cp = mem_zalloc(sizeof(*cp), candpair_destructor);
	if (!cp)
		return ENOMEM;

	cp->icem      = cp0->icem;
	cp->comp      = cp0->comp;
	cp->lcand     = mem_ref(lcand ? lcand : cp0->lcand);
	cp->rcand     = mem_ref(rcand ? rcand : cp0->rcand);
	cp->def       = cp0->def;
	cp->valid     = cp0->valid;
	cp->nominated = cp0->nominated;
	cp->state     = cp0->state;
	cp->pprio     = cp0->pprio;
	cp->usec_sent = cp0->usec_sent;
	cp->ertt      = cp0->ertt;
	cp->err       = cp0->err;
	cp->scode     = cp0->scode;

	list_add_sorted(&cp0->icem->checkl, cp);

	if (cpp)
		*cpp = cp;

	return 0;
}
コード例 #3
0
ファイル: candpair.c プロジェクト: anchowee/traversal_server
void icem_candpair_make_valid(struct candpair *cp)
{
	if (!cp)
		return;

	cp->err = 0;
	cp->scode = 0;
	cp->valid = true;

	if (cp->usec_sent)
		cp->ertt = (long)(ice_get_usec() - cp->usec_sent);

	icem_candpair_set_state(cp, CANDPAIR_SUCCEEDED);

	list_unlink(&cp->le);
	list_add_sorted(&cp->icem->validl, cp);
}
コード例 #4
0
ファイル: main.cpp プロジェクト: DaveBerkeley/utils
static void item_add_sorted(Item **head, Item *w, Mutex *mutex)
{
    list_add_sorted((pList*) head, (pList) w, pnext_item, item_cmp, mutex);
}
コード例 #5
0
ファイル: dynstuff.cpp プロジェクト: 0xmono/miranda-ng
/*
 * list_add()
 *
 * wrapper do list_add_sorted(), który zachowuje poprzedni± sk³adniê.
 */
void *list_add(list_t *list, void *data, int alloc_size)
{
	return list_add_sorted(list, data, alloc_size, NULL);
}