~ubuntu-branches/debian/squeeze/libnice/squeeze

« back to all changes in this revision

Viewing changes to agent/test-mainloop.c

  • Committer: Bazaar Package Importer
  • Author(s): Laurent Bigonville
  • Date: 2009-01-04 17:45:34 UTC
  • Revision ID: james.westby@ubuntu.com-20090104174534-dh5u1pfonumqa99c
Tags: upstream-0.0.4
ImportĀ upstreamĀ versionĀ 0.0.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * This file is part of the Nice GLib ICE library.
 
3
 *
 
4
 * (C) 2006, 2007 Collabora Ltd.
 
5
 *  Contact: Dafydd Harries
 
6
 * (C) 2006, 2007 Nokia Corporation. All rights reserved.
 
7
 *  Contact: Kai Vehmanen
 
8
 *
 
9
 * The contents of this file are subject to the Mozilla Public License Version
 
10
 * 1.1 (the "License"); you may not use this file except in compliance with
 
11
 * the License. You may obtain a copy of the License at
 
12
 * http://www.mozilla.org/MPL/
 
13
 *
 
14
 * Software distributed under the License is distributed on an "AS IS" basis,
 
15
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 
16
 * for the specific language governing rights and limitations under the
 
17
 * License.
 
18
 *
 
19
 * The Original Code is the Nice GLib ICE library.
 
20
 *
 
21
 * The Initial Developers of the Original Code are Collabora Ltd and Nokia
 
22
 * Corporation. All Rights Reserved.
 
23
 *
 
24
 * Contributors:
 
25
 *   Dafydd Harries, Collabora Ltd.
 
26
 *   Kai Vehmanen, Nokia
 
27
 *
 
28
 * Alternatively, the contents of this file may be used under the terms of the
 
29
 * the GNU Lesser General Public License Version 2.1 (the "LGPL"), in which
 
30
 * case the provisions of LGPL are applicable instead of those above. If you
 
31
 * wish to allow use of your version of this file only under the terms of the
 
32
 * LGPL and not to allow others to use your version of this file under the
 
33
 * MPL, indicate your decision by deleting the provisions above and replace
 
34
 * them with the notice and other provisions required by the LGPL. If you do
 
35
 * not delete the provisions above, a recipient may use your version of this
 
36
 * file under either the MPL or the LGPL.
 
37
 */
 
38
#ifdef HAVE_CONFIG_H
 
39
# include <config.h>
 
40
#endif
 
41
 
 
42
#include <string.h>
 
43
 
 
44
#include <nice/nice.h>
 
45
 
 
46
static GMainLoop *loop = NULL;
 
47
 
 
48
static void
 
49
recv_cb (
 
50
  NiceAgent *agent,
 
51
  guint stream_id,
 
52
  guint component_id,
 
53
  guint len,
 
54
  gchar *buf,
 
55
  gpointer data)
 
56
{
 
57
  g_assert (agent != NULL);
 
58
  g_assert (stream_id == 1);
 
59
  g_assert (component_id == 1);
 
60
  g_assert (len == 6);
 
61
  g_assert (0 == strncmp (buf,  "\x80hello", len));
 
62
  g_assert (42 == GPOINTER_TO_UINT (data));
 
63
  g_main_loop_quit (loop);
 
64
}
 
65
 
 
66
int
 
67
main (void)
 
68
{
 
69
  NiceAgent *agent;
 
70
  NiceAddress addr;
 
71
  guint stream;
 
72
 
 
73
  nice_address_init (&addr);
 
74
  g_type_init ();
 
75
  g_thread_init (NULL);
 
76
  loop = g_main_loop_new (NULL, FALSE);
 
77
 
 
78
  agent = nice_agent_new (g_main_loop_get_context (loop), NICE_COMPATIBILITY_DRAFT19);
 
79
  nice_address_set_ipv4 (&addr, 0x7f000001);
 
80
  nice_agent_add_local_address (agent, &addr);
 
81
  stream = nice_agent_add_stream (agent, 1);
 
82
  nice_agent_gather_candidates (agent, stream);
 
83
 
 
84
  // attach to default main context
 
85
  nice_agent_attach_recv (agent, stream, NICE_COMPONENT_TYPE_RTP,
 
86
      g_main_loop_get_context (loop), recv_cb, GUINT_TO_POINTER (42));
 
87
 
 
88
    {
 
89
      NiceCandidate *candidate;
 
90
      GSList *candidates, *i;
 
91
 
 
92
      candidates = nice_agent_get_local_candidates (agent, 1, 1);
 
93
      candidate = candidates->data;
 
94
 
 
95
      nice_socket_send (candidate->sockptr, &(candidate->addr), 6, "\x80hello");
 
96
      for (i = candidates; i; i = i->next)
 
97
        nice_candidate_free ((NiceCandidate *) i->data);
 
98
      g_slist_free (candidates);
 
99
    }
 
100
 
 
101
  g_main_loop_run (loop);
 
102
 
 
103
  g_object_unref (agent);
 
104
  return 0;
 
105
}
 
106