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;
} 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
* @stream_id: The id of the stream
* 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
*
NiceAgent *
nice_agent_new_full (GMainContext *ctx,
NiceCompatibility compat,
- gboolean reliable,
- NiceNominationMode nomination);
+ NiceAgentOption flags);
/**
* nice_agent_add_local_address:
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);