Commit e3ddaa28 authored by Olivier Crête's avatar Olivier Crête 👻

agent: Adjust the nice_agent_new_full() to use flags

This makes it easier to read and more extensible.
parent c7a5a92b
......@@ -1168,14 +1168,15 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat)
NICEAPI_EXPORT NiceAgent *
nice_agent_new_full (GMainContext *ctx,
NiceCompatibility compat,
gboolean reliable,
NiceNominationMode nomination)
NiceAgentOption flags)
{
NiceAgent *agent = g_object_new (NICE_TYPE_AGENT,
"compatibility", compat,
"main-context", ctx,
"reliable", reliable,
"nomination-mode", nomination,
"reliable", (flags & NICE_AGENT_OPTION_RELIABLE) ? TRUE : FALSE,
"nomination-mode", (flags & NICE_AGENT_OPTION_REGULAR_NOMINATION) ?
NICE_NOMINATION_MODE_REGULAR : NICE_NOMINATION_MODE_AGGRESSIVE,
"full-mode", (flags & NICE_AGENT_OPTION_LITE_MODE) ? FALSE : TRUE,
NULL);
return agent;
......
......@@ -398,6 +398,25 @@ typedef enum
NICE_NOMINATION_MODE_AGGRESSIVE,
} NiceNominationMode;
/**
* NiceAgentOption:
* @NICE_AGENT_OPTION_REGULAR_NOMINATION: Enables regular nomination, default
* is aggrssive mode (see #NiceNominationMode).
* @NICE_AGENT_OPTION_RELIABLE: Enables reliable mode, possibly using PseudoTCP, * see nice_agent_new_reliable().
* @NICE_AGENT_OPTION_LITE_MODE: Enable lite mode
*
* These are options that can be passed to nice_agent_new_full(). They set
* various properties on the agent. Not including them sets the property to
* the other value.
*
* Since: UNRELEASED
*/
typedef enum {
NICE_AGENT_OPTION_REGULAR_NOMINATION = 1 << 0,
NICE_AGENT_OPTION_RELIABLE = 1 << 1,
NICE_AGENT_OPTION_LITE_MODE = 1 << 2,
} NiceAgentOption;
/**
* NiceAgentRecvFunc:
* @agent: The #NiceAgent Object
......@@ -452,13 +471,12 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat);
* nice_agent_new_full:
* @ctx: The Glib Mainloop Context to use for timers
* @compat: The compatibility mode of the agent
* @reliable: The reliability mode of the agent
* @nomination: The nomination mode of the agent
* @flags: Flags to set the properties
*
* Create a new #NiceAgent with parameters that must be be defined at
* construction time.
* The returned object must be freed with g_object_unref()
* <para> See also: #NiceNominationMode </para>
* <para> See also: #NiceNominationMode and #NiceAgentOption</para>
*
* Since: UNRELEASED
*
......@@ -467,8 +485,7 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat);
NiceAgent *
nice_agent_new_full (GMainContext *ctx,
NiceCompatibility compat,
gboolean reliable,
NiceNominationMode nomination);
NiceAgentOption flags);
/**
* nice_agent_add_local_address:
......
......@@ -140,13 +140,13 @@ run_test(NiceNominationMode l_nomination_mode,
lagent = nice_agent_new_full (NULL,
NICE_COMPATIBILITY_RFC5245,
FALSE, /* reliable */
l_nomination_mode);
l_nomination_mode == NICE_NOMINATION_MODE_REGULAR ?
NICE_AGENT_OPTION_REGULAR_NOMINATION : 0);
ragent = nice_agent_new_full (NULL,
NICE_COMPATIBILITY_RFC5245,
FALSE, /* reliable */
r_nomination_mode);
r_nomination_mode == NICE_NOMINATION_MODE_REGULAR ?
NICE_AGENT_OPTION_REGULAR_NOMINATION : 0);
g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL);
g_object_set (G_OBJECT (ragent), "ice-tcp", FALSE, NULL);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment