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) ...@@ -1168,14 +1168,15 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat)
NICEAPI_EXPORT NiceAgent * NICEAPI_EXPORT NiceAgent *
nice_agent_new_full (GMainContext *ctx, nice_agent_new_full (GMainContext *ctx,
NiceCompatibility compat, NiceCompatibility compat,
gboolean reliable, NiceAgentOption flags)
NiceNominationMode nomination)
{ {
NiceAgent *agent = g_object_new (NICE_TYPE_AGENT, NiceAgent *agent = g_object_new (NICE_TYPE_AGENT,
"compatibility", compat, "compatibility", compat,
"main-context", ctx, "main-context", ctx,
"reliable", reliable, "reliable", (flags & NICE_AGENT_OPTION_RELIABLE) ? TRUE : FALSE,
"nomination-mode", nomination, "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); NULL);
return agent; return agent;
......
...@@ -398,6 +398,25 @@ typedef enum ...@@ -398,6 +398,25 @@ typedef enum
NICE_NOMINATION_MODE_AGGRESSIVE, NICE_NOMINATION_MODE_AGGRESSIVE,
} NiceNominationMode; } 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: * NiceAgentRecvFunc:
* @agent: The #NiceAgent Object * @agent: The #NiceAgent Object
...@@ -452,13 +471,12 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); ...@@ -452,13 +471,12 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat);
* nice_agent_new_full: * nice_agent_new_full:
* @ctx: The Glib Mainloop Context to use for timers * @ctx: The Glib Mainloop Context to use for timers
* @compat: The compatibility mode of the agent * @compat: The compatibility mode of the agent
* @reliable: The reliability mode of the agent * @flags: Flags to set the properties
* @nomination: The nomination mode of the agent
* *
* Create a new #NiceAgent with parameters that must be be defined at * Create a new #NiceAgent with parameters that must be be defined at
* construction time. * construction time.
* The returned object must be freed with g_object_unref() * The returned object must be freed with g_object_unref()
* <para> See also: #NiceNominationMode </para> * <para> See also: #NiceNominationMode and #NiceAgentOption</para>
* *
* Since: UNRELEASED * Since: UNRELEASED
* *
...@@ -467,8 +485,7 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat); ...@@ -467,8 +485,7 @@ nice_agent_new_reliable (GMainContext *ctx, NiceCompatibility compat);
NiceAgent * NiceAgent *
nice_agent_new_full (GMainContext *ctx, nice_agent_new_full (GMainContext *ctx,
NiceCompatibility compat, NiceCompatibility compat,
gboolean reliable, NiceAgentOption flags);
NiceNominationMode nomination);
/** /**
* nice_agent_add_local_address: * nice_agent_add_local_address:
......
...@@ -140,13 +140,13 @@ run_test(NiceNominationMode l_nomination_mode, ...@@ -140,13 +140,13 @@ run_test(NiceNominationMode l_nomination_mode,
lagent = nice_agent_new_full (NULL, lagent = nice_agent_new_full (NULL,
NICE_COMPATIBILITY_RFC5245, NICE_COMPATIBILITY_RFC5245,
FALSE, /* reliable */ l_nomination_mode == NICE_NOMINATION_MODE_REGULAR ?
l_nomination_mode); NICE_AGENT_OPTION_REGULAR_NOMINATION : 0);
ragent = nice_agent_new_full (NULL, ragent = nice_agent_new_full (NULL,
NICE_COMPATIBILITY_RFC5245, NICE_COMPATIBILITY_RFC5245,
FALSE, /* reliable */ r_nomination_mode == NICE_NOMINATION_MODE_REGULAR ?
r_nomination_mode); NICE_AGENT_OPTION_REGULAR_NOMINATION : 0);
g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL); g_object_set (G_OBJECT (lagent), "ice-tcp", FALSE, NULL);
g_object_set (G_OBJECT (ragent), "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