gst/net/gstnetclientclock.c (gst_net_client_clock_class_init): Port goes all the...
authorAndy Wingo <wingo@pobox.com>
Fri, 18 Nov 2005 11:57:30 +0000 (11:57 +0000)
committerAndy Wingo <wingo@pobox.com>
Fri, 18 Nov 2005 11:57:30 +0000 (11:57 +0000)
Original commit message from CVS:
2005-11-18  Andy Wingo  <wingo@pobox.com>

* gst/net/gstnetclientclock.c (gst_net_client_clock_class_init):
Port goes all the way to MAXUINT16.

* gst/net/gstnettimeprovider.c: Make the port range the same as
for the kernel: 0 assigns, otherwise ports are less than
MAXUINT16.

* check/net/gstnettimeprovider.c: Adapt for 0 == kernel assigns
port change.

* check/net/gstnetclientclock.c (test_functioning): Add the start
of another test.

ChangeLog
check/net/gstnetclientclock.c
check/net/gstnettimeprovider.c
gst/net/gstnetclientclock.c
gst/net/gstnettimeprovider.c
libs/gst/net/gstnetclientclock.c
libs/gst/net/gstnettimeprovider.c
tests/check/libs/gstnetclientclock.c
tests/check/libs/gstnettimeprovider.c

index 8ac38ed..397d9f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2005-11-18  Andy Wingo  <wingo@pobox.com>
+
+       * gst/net/gstnetclientclock.c (gst_net_client_clock_class_init):
+       Port goes all the way to MAXUINT16.
+
+       * gst/net/gstnettimeprovider.c: Make the port range the same as
+       for the kernel: 0 assigns, otherwise ports are less than
+       MAXUINT16.
+
+       * check/net/gstnettimeprovider.c: Adapt for 0 == kernel assigns
+       port change.
+
+       * check/net/gstnetclientclock.c (test_functioning): Add the start
+       of another test. 
+
 2005-11-18  Wim Taymans  <wim@fluendo.com>
 
        * gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func),
@@ -9,7 +24,6 @@
        Make sure we reselect a clock when we received a clock lost message.
        Keep a reference to the element that provided the clock.
 
-
 2005-11-18  Andy Wingo  <wingo@pobox.com>
 
        * gst/net/gstnetclientclock.c (gst_net_client_clock_new): Adjust
index 005d02f..cb46a20 100644 (file)
@@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
 
   gst_object_unref (client);
 
-  ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2);
+  ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
 
   gst_object_unref (local);
 }
 
 GST_END_TEST;
 
-#if 0
 GST_START_TEST (test_functioning)
 {
   GstNetTimeProvider *ntp;
-  GstNetTimePacket *packet;
-  GstClock *clock;
-  GstClockTime local;
-  struct sockaddr_in servaddr;
-  gint port = -1, sockfd, ret;
-  socklen_t len;
-
-  clock = gst_system_clock_obtain ();
-  fail_unless (clock != NULL, "failed to get system clock");
-  ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
-  fail_unless (ntp != NULL, "failed to create net time provider");
-
-  g_object_get (ntp, "port", &port, NULL);
-  fail_unless (port > 0);
+  GstClock *client, *server;
+  GstClockTimeDiff offset;
+  GstClockTime servint;         //, servtime, localtime;
+  gint port;
+  gdouble rate;
 
-  sockfd = socket (AF_INET, SOCK_DGRAM, 0);
-  fail_if (sockfd < 0, "socket failed");
+  server = gst_system_clock_obtain ();
+  fail_unless (server != NULL, "failed to get system clock");
 
-  memset (&servaddr, 0, sizeof (servaddr));
-  servaddr.sin_family = AF_INET;
-  servaddr.sin_port = htons (port);
-  inet_aton ("127.0.0.1", &servaddr.sin_addr);
+  /* move the clock ahead 1 minute */
+  gst_clock_get_rate_offset (server, &rate, &offset);
+  offset += 60 * GST_SECOND;
+  gst_clock_set_rate_offset (server, rate, offset);
+  servint = gst_clock_get_internal_time (GST_CLOCK (server));
 
-  packet = gst_net_time_packet_new (NULL);
-  fail_unless (packet != NULL, "failed to create packet");
+  ntp = gst_net_time_provider_new (server, "127.0.0.1", 0);
+  fail_unless (ntp != NULL, "failed to create network time provider");
 
-  packet->local_time = local = gst_clock_get_time (clock);
-
-  len = sizeof (servaddr);
-  ret = gst_net_time_packet_send (packet, sockfd,
-      (struct sockaddr *) &servaddr, len);
-
-  fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet");
+  g_object_get (ntp, "port", &port, NULL);
+  /* g_print ("server port: %d\n", port); */
 
-  g_free (packet);
+  client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
+  fail_unless (client != NULL, "failed to get network client clock");
 
-  packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr,
-      &len);
+  g_object_get (client, "port", &port, NULL);
+  /* g_print ("client connecting to server port %d\n", port); */
 
-  fail_unless (packet != NULL, "failed to receive packet");
-  fail_unless (packet->local_time == local, "local time is not the same");
-  fail_unless (packet->remote_time > local, "remote time not after local time");
-  fail_unless (packet->remote_time < gst_clock_get_time (clock),
-      "remote time in the future");
+  /* one for gstreamer, one for ntp, one for us */
+  ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
+  ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
 
-  g_free (packet);
+  gst_object_unref (ntp);
 
-  close (sockfd);
+  ASSERT_OBJECT_REFCOUNT (server, "system clock", 2);
 
-  gst_object_unref (ntp);
-  gst_object_unref (clock);
+  gst_object_unref (client);
+  gst_object_unref (server);
 }
 
 GST_END_TEST;
-#endif
 
 Suite *
 gst_net_client_clock_suite (void)
@@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_instantiation);
-  /* tcase_add_test (tc_chain, test_functioning); */
+  tcase_add_test (tc_chain, test_functioning);
 
   return s;
 }
index e005008..e0008da 100644 (file)
@@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
   /* one for gstreamer, one for us */
   ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2);
 
-  ntp = gst_net_time_provider_new (clock, NULL, -1);
+  ntp = gst_net_time_provider_new (clock, NULL, 0);
   fail_unless (ntp != NULL, "failed to create net time provider");
 
   /* one for ntp, one for gstreamer, one for us */
@@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
 
   clock = gst_system_clock_obtain ();
   fail_unless (clock != NULL, "failed to get system clock");
-  ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
+  ntp = gst_net_time_provider_new (clock, "127.0.0.1", 0);
   fail_unless (ntp != NULL, "failed to create net time provider");
 
   g_object_get (ntp, "port", &port, NULL);
index 64cb272..4017052 100644 (file)
@@ -104,7 +104,7 @@ gst_net_client_clock_class_init (GstNetClientClockClass * klass)
           "as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
       g_param_spec_int ("port", "port",
-          "The port on which the remote server is listening", 0, 32768,
+          "The port on which the remote server is listening", 0, G_MAXUINT16,
           DEFAULT_PORT, G_PARAM_READWRITE));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE,
       g_param_spec_int ("window-size", "Window size",
@@ -568,7 +568,7 @@ gst_net_client_clock_new (gchar * name, const gchar * remote_address,
 
   g_return_val_if_fail (remote_address != NULL, NULL);
   g_return_val_if_fail (remote_port > 0, NULL);
-  g_return_val_if_fail (remote_port < 32768, NULL);
+  g_return_val_if_fail (remote_port <= G_MAXUINT16, NULL);
   g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
 
   ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,
index 54a83b5..0258dd7 100644 (file)
@@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
       g_param_spec_int ("port", "port",
-          "The port to receive the packets from, -1=allocate", -1, 32768,
+          "The port to receive the packets from, 0=allocate", 0, G_MAXUINT16,
           DEFAULT_PORT, G_PARAM_READWRITE));
   g_object_class_install_property (gobject_class, PROP_ADDRESS,
       g_param_spec_string ("address", "address",
@@ -330,7 +330,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
 
   memset (&my_addr, 0, sizeof (my_addr));
   my_addr.sin_family = AF_INET; /* host byte order */
-  my_addr.sin_port = htons (self->port);        /* short, network byte order */
+  my_addr.sin_port = htons ((gint16) self->port);       /* short, network byte order */
   my_addr.sin_addr.s_addr = INADDR_ANY;
   if (self->address)
     inet_aton (self->address, &my_addr.sin_addr);
@@ -347,6 +347,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
 
   port = ntohs (my_addr.sin_port);
   GST_DEBUG_OBJECT (self, "bound, on port %d", port);
+
   if (port != self->port) {
     self->port = port;
     GST_DEBUG_OBJECT (self, "notifying %d", port);
@@ -432,7 +433,7 @@ gst_net_time_provider_new (GstClock * clock, const gchar * address, gint port)
   gint iret;
 
   g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL);
-  g_return_val_if_fail (port == -1 || port >= 0, NULL);
+  g_return_val_if_fail (port >= 0 && port <= G_MAXUINT16, NULL);
 
   ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address",
       address, "port", port, NULL);
index 64cb272..4017052 100644 (file)
@@ -104,7 +104,7 @@ gst_net_client_clock_class_init (GstNetClientClockClass * klass)
           "as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
       g_param_spec_int ("port", "port",
-          "The port on which the remote server is listening", 0, 32768,
+          "The port on which the remote server is listening", 0, G_MAXUINT16,
           DEFAULT_PORT, G_PARAM_READWRITE));
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE,
       g_param_spec_int ("window-size", "Window size",
@@ -568,7 +568,7 @@ gst_net_client_clock_new (gchar * name, const gchar * remote_address,
 
   g_return_val_if_fail (remote_address != NULL, NULL);
   g_return_val_if_fail (remote_port > 0, NULL);
-  g_return_val_if_fail (remote_port < 32768, NULL);
+  g_return_val_if_fail (remote_port <= G_MAXUINT16, NULL);
   g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
 
   ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,
index 54a83b5..0258dd7 100644 (file)
@@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
       g_param_spec_int ("port", "port",
-          "The port to receive the packets from, -1=allocate", -1, 32768,
+          "The port to receive the packets from, 0=allocate", 0, G_MAXUINT16,
           DEFAULT_PORT, G_PARAM_READWRITE));
   g_object_class_install_property (gobject_class, PROP_ADDRESS,
       g_param_spec_string ("address", "address",
@@ -330,7 +330,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
 
   memset (&my_addr, 0, sizeof (my_addr));
   my_addr.sin_family = AF_INET; /* host byte order */
-  my_addr.sin_port = htons (self->port);        /* short, network byte order */
+  my_addr.sin_port = htons ((gint16) self->port);       /* short, network byte order */
   my_addr.sin_addr.s_addr = INADDR_ANY;
   if (self->address)
     inet_aton (self->address, &my_addr.sin_addr);
@@ -347,6 +347,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
 
   port = ntohs (my_addr.sin_port);
   GST_DEBUG_OBJECT (self, "bound, on port %d", port);
+
   if (port != self->port) {
     self->port = port;
     GST_DEBUG_OBJECT (self, "notifying %d", port);
@@ -432,7 +433,7 @@ gst_net_time_provider_new (GstClock * clock, const gchar * address, gint port)
   gint iret;
 
   g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL);
-  g_return_val_if_fail (port == -1 || port >= 0, NULL);
+  g_return_val_if_fail (port >= 0 && port <= G_MAXUINT16, NULL);
 
   ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address",
       address, "port", port, NULL);
index 005d02f..cb46a20 100644 (file)
@@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
 
   gst_object_unref (client);
 
-  ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2);
+  ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
 
   gst_object_unref (local);
 }
 
 GST_END_TEST;
 
-#if 0
 GST_START_TEST (test_functioning)
 {
   GstNetTimeProvider *ntp;
-  GstNetTimePacket *packet;
-  GstClock *clock;
-  GstClockTime local;
-  struct sockaddr_in servaddr;
-  gint port = -1, sockfd, ret;
-  socklen_t len;
-
-  clock = gst_system_clock_obtain ();
-  fail_unless (clock != NULL, "failed to get system clock");
-  ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
-  fail_unless (ntp != NULL, "failed to create net time provider");
-
-  g_object_get (ntp, "port", &port, NULL);
-  fail_unless (port > 0);
+  GstClock *client, *server;
+  GstClockTimeDiff offset;
+  GstClockTime servint;         //, servtime, localtime;
+  gint port;
+  gdouble rate;
 
-  sockfd = socket (AF_INET, SOCK_DGRAM, 0);
-  fail_if (sockfd < 0, "socket failed");
+  server = gst_system_clock_obtain ();
+  fail_unless (server != NULL, "failed to get system clock");
 
-  memset (&servaddr, 0, sizeof (servaddr));
-  servaddr.sin_family = AF_INET;
-  servaddr.sin_port = htons (port);
-  inet_aton ("127.0.0.1", &servaddr.sin_addr);
+  /* move the clock ahead 1 minute */
+  gst_clock_get_rate_offset (server, &rate, &offset);
+  offset += 60 * GST_SECOND;
+  gst_clock_set_rate_offset (server, rate, offset);
+  servint = gst_clock_get_internal_time (GST_CLOCK (server));
 
-  packet = gst_net_time_packet_new (NULL);
-  fail_unless (packet != NULL, "failed to create packet");
+  ntp = gst_net_time_provider_new (server, "127.0.0.1", 0);
+  fail_unless (ntp != NULL, "failed to create network time provider");
 
-  packet->local_time = local = gst_clock_get_time (clock);
-
-  len = sizeof (servaddr);
-  ret = gst_net_time_packet_send (packet, sockfd,
-      (struct sockaddr *) &servaddr, len);
-
-  fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet");
+  g_object_get (ntp, "port", &port, NULL);
+  /* g_print ("server port: %d\n", port); */
 
-  g_free (packet);
+  client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
+  fail_unless (client != NULL, "failed to get network client clock");
 
-  packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr,
-      &len);
+  g_object_get (client, "port", &port, NULL);
+  /* g_print ("client connecting to server port %d\n", port); */
 
-  fail_unless (packet != NULL, "failed to receive packet");
-  fail_unless (packet->local_time == local, "local time is not the same");
-  fail_unless (packet->remote_time > local, "remote time not after local time");
-  fail_unless (packet->remote_time < gst_clock_get_time (clock),
-      "remote time in the future");
+  /* one for gstreamer, one for ntp, one for us */
+  ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
+  ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
 
-  g_free (packet);
+  gst_object_unref (ntp);
 
-  close (sockfd);
+  ASSERT_OBJECT_REFCOUNT (server, "system clock", 2);
 
-  gst_object_unref (ntp);
-  gst_object_unref (clock);
+  gst_object_unref (client);
+  gst_object_unref (server);
 }
 
 GST_END_TEST;
-#endif
 
 Suite *
 gst_net_client_clock_suite (void)
@@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_instantiation);
-  /* tcase_add_test (tc_chain, test_functioning); */
+  tcase_add_test (tc_chain, test_functioning);
 
   return s;
 }
index e005008..e0008da 100644 (file)
@@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
   /* one for gstreamer, one for us */
   ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2);
 
-  ntp = gst_net_time_provider_new (clock, NULL, -1);
+  ntp = gst_net_time_provider_new (clock, NULL, 0);
   fail_unless (ntp != NULL, "failed to create net time provider");
 
   /* one for ntp, one for gstreamer, one for us */
@@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
 
   clock = gst_system_clock_obtain ();
   fail_unless (clock != NULL, "failed to get system clock");
-  ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
+  ntp = gst_net_time_provider_new (clock, "127.0.0.1", 0);
   fail_unless (ntp != NULL, "failed to create net time provider");
 
   g_object_get (ntp, "port", &port, NULL);