uniformized; added signals to serversink for new and removed clients

Original commit message from CVS:
uniformized; added signals to serversink for new and removed clients
This commit is contained in:
Thomas Vander Stichele 2004-06-08 09:12:12 +00:00
parent 278e55e65c
commit 6a35436fdc
8 changed files with 114 additions and 54 deletions

View file

@ -1,3 +1,24 @@
2004-06-08 Thomas Vander Stichele <thomas at apestaart dot org>
* gst/tcp/Makefile.am:
* gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_get_type),
(gst_tcpclientsink_class_init), (gst_tcpclientsink_init),
(gst_tcpclientsink_set_property), (gst_tcpclientsink_get_property):
* gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_class_init),
(gst_tcpclientsrc_init), (gst_tcpclientsrc_set_property),
(gst_tcpclientsrc_get_property):
* gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
(gst_tcpserversink_init), (gst_tcpserversink_handle_server_read),
(gst_tcpserversink_handle_client_read),
(gst_tcpserversink_handle_client_write),
(gst_tcpserversink_set_property), (gst_tcpserversink_get_property):
* gst/tcp/gsttcpserversink.h:
add signals client-added and client-removed
* gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_class_init),
(gst_tcpserversrc_init), (gst_tcpserversrc_set_property),
(gst_tcpserversrc_get_property):
uniformized, change default protocol to NONE
* gst/tcp/gsttcp-marshal.list: added
2004-06-07 Benjamin Otte <otte@gnome.org> 2004-06-07 Benjamin Otte <otte@gnome.org>
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event): * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):

View file

@ -2,13 +2,13 @@ plugin_LTLIBRARIES = libgsttcp.la
# variables used for enum/marshal generation # variables used for enum/marshal generation
glib_enum_headers = gsttcp.h glib_enum_headers = gsttcp.h
glib_enum_define = GST_TCP_PROTOCOL glib_enum_define = GST_TCP
glib_enum_prefix = gst_tcp_protocol glib_enum_prefix = gst_tcp
include $(top_srcdir)/common/glib-gen.mak include $(top_srcdir)/common/glib-gen.mak
built_sources = gsttcp-enumtypes.c built_sources = gsttcp-enumtypes.c gsttcp-marshal.c
built_headers = gsttcp-enumtypes.h built_headers = gsttcp-enumtypes.h gsttcp-marshal.h
BUILT_SOURCES = $(built_sources) $(built_headers) BUILT_SOURCES = $(built_sources) $(built_headers)

View file

@ -0,0 +1 @@
VOID:STRING,UINT

View file

@ -131,7 +131,7 @@ gst_tcpclientsink_class_init (GstTCPClientSink * klass)
0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE)); 0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_PROTOCOL, g_object_class_install_property (gobject_class, ARG_PROTOCOL,
g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in", g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in",
GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_GDP, GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_NONE,
G_PARAM_READWRITE)); G_PARAM_READWRITE));
gobject_class->set_property = gst_tcpclientsink_set_property; gobject_class->set_property = gst_tcpclientsink_set_property;
gobject_class->get_property = gst_tcpclientsink_get_property; gobject_class->get_property = gst_tcpclientsink_get_property;
@ -166,7 +166,7 @@ gst_tcpclientsink_init (GstTCPClientSink * this)
/* this->mtu = 1500; */ /* this->mtu = 1500; */
this->sock_fd = -1; this->sock_fd = -1;
this->protocol = GST_TCP_PROTOCOL_TYPE_GDP; this->protocol = GST_TCP_PROTOCOL_TYPE_NONE;
GST_FLAG_UNSET (this, GST_TCPCLIENTSINK_OPEN); GST_FLAG_UNSET (this, GST_TCPCLIENTSINK_OPEN);
this->clock = NULL; this->clock = NULL;
@ -254,12 +254,8 @@ gst_tcpclientsink_set_property (GObject * object, guint prop_id,
switch (prop_id) { switch (prop_id) {
case ARG_HOST: case ARG_HOST:
if (tcpclientsink->host != NULL) g_free (tcpclientsink->host);
g_free (tcpclientsink->host); tcpclientsink->host = g_strdup (g_value_get_string (value));
if (g_value_get_string (value) == NULL)
tcpclientsink->host = NULL;
else
tcpclientsink->host = g_strdup (g_value_get_string (value));
break; break;
case ARG_PORT: case ARG_PORT:
tcpclientsink->port = g_value_get_int (value); tcpclientsink->port = g_value_get_int (value);
@ -267,7 +263,9 @@ gst_tcpclientsink_set_property (GObject * object, guint prop_id,
case ARG_PROTOCOL: case ARG_PROTOCOL:
tcpclientsink->protocol = g_value_get_enum (value); tcpclientsink->protocol = g_value_get_enum (value);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
} }
} }
@ -292,6 +290,7 @@ gst_tcpclientsink_get_property (GObject * object, guint prop_id, GValue * value,
case ARG_PROTOCOL: case ARG_PROTOCOL:
g_value_set_enum (value, tcpclientsink->protocol); g_value_set_enum (value, tcpclientsink->protocol);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;

View file

@ -61,8 +61,8 @@ enum
enum enum
{ {
ARG_0, ARG_0,
ARG_PORT,
ARG_HOST, ARG_HOST,
ARG_PORT,
ARG_PROTOCOL ARG_PROTOCOL
}; };
@ -139,7 +139,7 @@ gst_tcpclientsrc_class_init (GstTCPClientSrc * klass)
32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE)); 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_PROTOCOL, g_object_class_install_property (gobject_class, ARG_PROTOCOL,
g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in", g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in",
GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_GDP, GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_NONE,
G_PARAM_READWRITE)); G_PARAM_READWRITE));
gobject_class->set_property = gst_tcpclientsrc_set_property; gobject_class->set_property = gst_tcpclientsrc_set_property;
@ -174,7 +174,7 @@ gst_tcpclientsrc_init (GstTCPClientSrc * this)
this->host = g_strdup (TCP_DEFAULT_HOST); this->host = g_strdup (TCP_DEFAULT_HOST);
this->clock = NULL; this->clock = NULL;
this->sock_fd = -1; this->sock_fd = -1;
this->protocol = GST_TCP_PROTOCOL_TYPE_GDP; this->protocol = GST_TCP_PROTOCOL_TYPE_NONE;
this->curoffset = 0; this->curoffset = 0;
GST_FLAG_UNSET (this, GST_TCPCLIENTSRC_OPEN); GST_FLAG_UNSET (this, GST_TCPCLIENTSRC_OPEN);
@ -345,17 +345,17 @@ gst_tcpclientsrc_set_property (GObject * object, guint prop_id,
tcpclientsrc = GST_TCPCLIENTSRC (object); tcpclientsrc = GST_TCPCLIENTSRC (object);
switch (prop_id) { switch (prop_id) {
case ARG_PORT:
tcpclientsrc->port = g_value_get_int (value);
break;
case ARG_HOST: case ARG_HOST:
/* FIXME: create a setter and handle changes correctly */
g_free (tcpclientsrc->host); g_free (tcpclientsrc->host);
tcpclientsrc->host = g_strdup (g_value_get_string (value)); tcpclientsrc->host = g_strdup (g_value_get_string (value));
break; break;
case ARG_PORT:
tcpclientsrc->port = g_value_get_int (value);
break;
case ARG_PROTOCOL: case ARG_PROTOCOL:
tcpclientsrc->protocol = g_value_get_enum (value); tcpclientsrc->protocol = g_value_get_enum (value);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -372,12 +372,12 @@ gst_tcpclientsrc_get_property (GObject * object, guint prop_id, GValue * value,
tcpclientsrc = GST_TCPCLIENTSRC (object); tcpclientsrc = GST_TCPCLIENTSRC (object);
switch (prop_id) { switch (prop_id) {
case ARG_PORT:
g_value_set_int (value, tcpclientsrc->port);
break;
case ARG_HOST: case ARG_HOST:
g_value_set_string (value, tcpclientsrc->host); g_value_set_string (value, tcpclientsrc->host);
break; break;
case ARG_PORT:
g_value_set_int (value, tcpclientsrc->port);
break;
case ARG_PROTOCOL: case ARG_PROTOCOL:
g_value_set_enum (value, tcpclientsrc->protocol); g_value_set_enum (value, tcpclientsrc->protocol);
break; break;

View file

@ -30,6 +30,7 @@
#endif #endif
#include "gsttcpserversink.h" #include "gsttcpserversink.h"
#include "gsttcp-marshal.h"
#define TCP_DEFAULT_HOST "127.0.0.1" #define TCP_DEFAULT_HOST "127.0.0.1"
#define TCP_DEFAULT_PORT 4953 #define TCP_DEFAULT_PORT 4953
@ -42,23 +43,23 @@ GST_ELEMENT_DETAILS ("TCP Server sink",
"Send data as a server over the network via TCP", "Send data as a server over the network via TCP",
"Thomas Vander Stichele <thomas at apestaart dot org>"); "Thomas Vander Stichele <thomas at apestaart dot org>");
GST_DEBUG_CATEGORY (tcpserversink_debug);
#define GST_CAT_DEFAULT (tcpserversink_debug)
/* TCPServerSink signals and args */ /* TCPServerSink signals and args */
enum enum
{ {
FRAME_ENCODED, SIGNAL_CLIENT_ADDED,
/* FILL ME */ SIGNAL_CLIENT_REMOVED,
LAST_SIGNAL LAST_SIGNAL
}; };
GST_DEBUG_CATEGORY (tcpserversink_debug);
#define GST_CAT_DEFAULT (tcpserversink_debug)
enum enum
{ {
ARG_0, ARG_0,
ARG_HOST, ARG_HOST,
ARG_PORT ARG_PORT,
/* FILL ME */ ARG_PROTOCOL
}; };
static void gst_tcpserversink_base_init (gpointer g_class); static void gst_tcpserversink_base_init (gpointer g_class);
@ -80,7 +81,7 @@ static void gst_tcpserversink_get_property (GObject * object, guint prop_id,
static GstElementClass *parent_class = NULL; static GstElementClass *parent_class = NULL;
/*static guint gst_tcpserversink_signals[LAST_SIGNAL] = { 0 }; */ static guint gst_tcpserversink_signals[LAST_SIGNAL] = { 0 };
GType GType
gst_tcpserversink_get_type (void) gst_tcpserversink_get_type (void)
@ -134,6 +135,22 @@ gst_tcpserversink_class_init (GstTCPServerSink * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
g_param_spec_int ("port", "port", "The port to send the packets to", g_param_spec_int ("port", "port", "The port to send the packets to",
0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE)); 0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_PROTOCOL,
g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in",
GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_NONE,
G_PARAM_READWRITE));
gst_tcpserversink_signals[SIGNAL_CLIENT_ADDED] =
g_signal_new ("client-added", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstTCPServerSinkClass, client_added),
NULL, NULL, gst_tcp_marshal_VOID__STRING_UINT, G_TYPE_NONE, 2,
G_TYPE_STRING, G_TYPE_UINT);
gst_tcpserversink_signals[SIGNAL_CLIENT_REMOVED] =
g_signal_new ("client-removed", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstTCPServerSinkClass,
client_removed), NULL, NULL, gst_tcp_marshal_VOID__STRING_UINT,
G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_UINT);
gobject_class->set_property = gst_tcpserversink_set_property; gobject_class->set_property = gst_tcpserversink_set_property;
gobject_class->get_property = gst_tcpserversink_get_property; gobject_class->get_property = gst_tcpserversink_get_property;
@ -168,7 +185,7 @@ gst_tcpserversink_init (GstTCPServerSink * this)
this->server_sock_fd = -1; this->server_sock_fd = -1;
GST_FLAG_UNSET (this, GST_TCPSERVERSINK_OPEN); GST_FLAG_UNSET (this, GST_TCPSERVERSINK_OPEN);
this->protocol = GST_TCP_PROTOCOL_TYPE_GDP; this->protocol = GST_TCP_PROTOCOL_TYPE_NONE;
this->clock = NULL; this->clock = NULL;
} }
@ -205,6 +222,9 @@ gst_tcpserversink_handle_server_read (GstTCPServerSink * sink)
FD_SET (client_sock_fd, &(sink->clientfds)); FD_SET (client_sock_fd, &(sink->clientfds));
GST_DEBUG_OBJECT (sink, "added new client ip %s with fd %d", GST_DEBUG_OBJECT (sink, "added new client ip %s with fd %d",
inet_ntoa (client_address.sin_addr), client_sock_fd); inet_ntoa (client_address.sin_addr), client_sock_fd);
g_signal_emit (G_OBJECT (sink),
gst_tcpserversink_signals[SIGNAL_CLIENT_ADDED], 0,
inet_ntoa (client_address.sin_addr), client_sock_fd);
return TRUE; return TRUE;
} }
@ -229,6 +249,9 @@ gst_tcpserversink_handle_client_read (GstTCPServerSink * sink, int fd)
} }
FD_CLR (fd, &sink->clientfds); FD_CLR (fd, &sink->clientfds);
FD_CLR (fd, &sink->caps_sent); FD_CLR (fd, &sink->caps_sent);
/* FIXME: we need to keep track of IP info so we can signal it here */
g_signal_emit (G_OBJECT (sink),
gst_tcpserversink_signals[SIGNAL_CLIENT_REMOVED], 0, NULL, fd);
} else { } else {
/* FIXME: we should probably just Read 'n' Drop */ /* FIXME: we should probably just Read 'n' Drop */
g_warning ("Don't know what to do with %d bytes to read", nread); g_warning ("Don't know what to do with %d bytes to read", nread);
@ -248,7 +271,7 @@ gst_tcpserversink_handle_client_write (GstTCPServerSink * sink, int fd,
break; break;
case GST_TCP_PROTOCOL_TYPE_GDP: case GST_TCP_PROTOCOL_TYPE_GDP:
/* if we haven't send caps yet, send them first */ /* if we haven't sent caps yet, send them first */
if (!FD_ISSET (fd, &(sink->caps_sent))) { if (!FD_ISSET (fd, &(sink->caps_sent))) {
const GstCaps *caps; const GstCaps *caps;
gchar *string; gchar *string;
@ -295,7 +318,8 @@ gst_tcpserversink_handle_client_write (GstTCPServerSink * sink, int fd,
*/ */
/* FIXME: there should be a better way to report problems, since we /* FIXME: there should be a better way to report problems, since we
want to continue for other clients and just drop this particular one */ want to continue for other clients and just drop this particular one */
g_warning ("Write failed: %d of %d written", wrote, GST_BUFFER_SIZE (buf)); GST_DEBUG_OBJECT (sink, "Write failed: %d of %d bytes written", wrote,
GST_BUFFER_SIZE (buf));
/* write failed, so drop the client */ /* write failed, so drop the client */
GST_DEBUG_OBJECT (sink, "removing client on fd %d", fd); GST_DEBUG_OBJECT (sink, "removing client on fd %d", fd);
if (close (fd) != 0) { if (close (fd) != 0) {
@ -304,6 +328,8 @@ gst_tcpserversink_handle_client_write (GstTCPServerSink * sink, int fd,
} }
FD_CLR (fd, &sink->clientfds); FD_CLR (fd, &sink->clientfds);
FD_CLR (fd, &sink->caps_sent); FD_CLR (fd, &sink->caps_sent);
g_signal_emit (G_OBJECT (sink),
gst_tcpserversink_signals[SIGNAL_CLIENT_REMOVED], 0, NULL, fd);
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
@ -416,17 +442,18 @@ gst_tcpserversink_set_property (GObject * object, guint prop_id,
switch (prop_id) { switch (prop_id) {
case ARG_HOST: case ARG_HOST:
if (tcpserversink->host != NULL) g_free (tcpserversink->host);
g_free (tcpserversink->host); tcpserversink->host = g_strdup (g_value_get_string (value));
if (g_value_get_string (value) == NULL)
tcpserversink->host = NULL;
else
tcpserversink->host = g_strdup (g_value_get_string (value));
break; break;
case ARG_PORT: case ARG_PORT:
tcpserversink->server_port = g_value_get_int (value); tcpserversink->server_port = g_value_get_int (value);
break; break;
case ARG_PROTOCOL:
tcpserversink->protocol = g_value_get_enum (value);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
} }
} }
@ -447,6 +474,10 @@ gst_tcpserversink_get_property (GObject * object, guint prop_id, GValue * value,
case ARG_PORT: case ARG_PORT:
g_value_set_int (value, tcpserversink->server_port); g_value_set_int (value, tcpserversink->server_port);
break; break;
case ARG_PROTOCOL:
g_value_set_enum (value, tcpserversink->protocol);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;

View file

@ -81,7 +81,10 @@ struct _GstTCPServerSink {
size_t data_written; /* how much bytes have we written ? */ size_t data_written; /* how much bytes have we written ? */
fd_set clientfds; /* all the client file descriptors that are open */ fd_set clientfds; /* all the client file descriptors that are open */
fd_set caps_sent; /* all the client file descriptors that have had caps sent */ fd_set caps_sent; /* all the client file descriptors
* that have had caps sent */
fd_set streamheader_sent; /* all the client file descriptors that have had
* streamheader sent */
GstTCPProtocolType protocol; GstTCPProtocolType protocol;
guint mtu; guint mtu;
@ -90,6 +93,10 @@ struct _GstTCPServerSink {
struct _GstTCPServerSinkClass { struct _GstTCPServerSinkClass {
GstElementClass parent_class; GstElementClass parent_class;
/* signals */
void (*client_added) (GstElement *element, gchar *host, gint fd);
void (*client_removed) (GstElement *element, gchar *host, gint fd);
}; };
GType gst_tcpserversink_get_type (void); GType gst_tcpserversink_get_type (void);

View file

@ -56,8 +56,8 @@ enum
enum enum
{ {
ARG_0, ARG_0,
ARG_PORT,
ARG_HOST, ARG_HOST,
ARG_PORT,
ARG_PROTOCOL ARG_PROTOCOL
}; };
@ -125,16 +125,16 @@ gst_tcpserversrc_class_init (GstTCPServerSrc * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT); parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HOST,
g_param_spec_string ("host", "Host", "The hostname to listen",
TCP_DEFAULT_HOST, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
g_param_spec_int ("port", "Port", "The port to listen to", g_param_spec_int ("port", "Port", "The port to listen to",
0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE)); 0, 32768, TCP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_PROTOCOL, g_object_class_install_property (gobject_class, ARG_PROTOCOL,
g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in", g_param_spec_enum ("protocol", "Protocol", "The protocol to wrap data in",
GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_GDP, GST_TYPE_TCP_PROTOCOL_TYPE, GST_TCP_PROTOCOL_TYPE_NONE,
G_PARAM_READWRITE)); G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HOST,
g_param_spec_string ("host", "Host", "The hostname to listen",
TCP_DEFAULT_HOST, G_PARAM_READWRITE));
gobject_class->set_property = gst_tcpserversrc_set_property; gobject_class->set_property = gst_tcpserversrc_set_property;
gobject_class->get_property = gst_tcpserversrc_get_property; gobject_class->get_property = gst_tcpserversrc_get_property;
@ -170,7 +170,7 @@ gst_tcpserversrc_init (GstTCPServerSrc * this)
this->server_sock_fd = -1; this->server_sock_fd = -1;
this->client_sock_fd = -1; this->client_sock_fd = -1;
this->curoffset = 0; this->curoffset = 0;
this->protocol = GST_TCP_PROTOCOL_TYPE_GDP; this->protocol = GST_TCP_PROTOCOL_TYPE_NONE;
GST_FLAG_UNSET (this, GST_TCPSERVERSRC_OPEN); GST_FLAG_UNSET (this, GST_TCPSERVERSRC_OPEN);
} }
@ -403,17 +403,17 @@ gst_tcpserversrc_set_property (GObject * object, guint prop_id,
tcpserversrc = GST_TCPSERVERSRC (object); tcpserversrc = GST_TCPSERVERSRC (object);
switch (prop_id) { switch (prop_id) {
case ARG_HOST:
g_free (tcpserversrc->host);
tcpserversrc->host = g_strdup (g_value_get_string (value));
break;
case ARG_PORT: case ARG_PORT:
tcpserversrc->server_port = g_value_get_int (value); tcpserversrc->server_port = g_value_get_int (value);
break; break;
case ARG_PROTOCOL: case ARG_PROTOCOL:
tcpserversrc->protocol = g_value_get_enum (value); tcpserversrc->protocol = g_value_get_enum (value);
break; break;
case ARG_HOST:
if (tcpserversrc->host)
g_free (tcpserversrc->host);
tcpserversrc->host = g_strdup (g_value_get_string (value));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -430,15 +430,16 @@ gst_tcpserversrc_get_property (GObject * object, guint prop_id, GValue * value,
tcpserversrc = GST_TCPSERVERSRC (object); tcpserversrc = GST_TCPSERVERSRC (object);
switch (prop_id) { switch (prop_id) {
case ARG_HOST:
g_value_set_string (value, tcpserversrc->host);
break;
case ARG_PORT: case ARG_PORT:
g_value_set_int (value, tcpserversrc->server_port); g_value_set_int (value, tcpserversrc->server_port);
break; break;
case ARG_PROTOCOL: case ARG_PROTOCOL:
g_value_set_enum (value, tcpserversrc->protocol); g_value_set_enum (value, tcpserversrc->protocol);
break; break;
case ARG_HOST:
g_value_set_string (value, tcpserversrc->host);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;