Commit graph

320 commits

Author SHA1 Message Date
William Manley 7c10499ecd tcp: Add element socketsrc
`socketsrc` can be considered a source counterpart to `multisocketsink`.
It can be considered a generalization of `tcpclientsrc` and
`tcpserversrc`:  it contains all the logic required to communicate over
the socket but none of the logic for creating the sockets/establishing
the connection in the first place, allowing the user to accomplish this
externally in whatever manner they wish making it applicable to other
types of sockets besides TCP.

This commit essentially copies the implementation directly from
tcpserversrc.  Later patches will tidy the implementation up and
re-implement `tcpclientsrc` and `tcpserversrc` in terms of `socketsrc`.

See https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13 20:05:00 +01:00
William Manley b8232a7467 multisocketsink: Map GstMemorys individually when sending
If a buffer is made up of non-contiguous `GstMemory`s `gst_buffer_map`
has to copy all the data into a new `GstMemory` which is contiguous.  By
mapping all the `GstMemory`s individually and then using scatter-gather
IO we avoid this situation.

This is a preparatory step for adding support to multisocketsink for
sending file descriptors, where a GstBuffer may be made up of several
`GstMemory`s, some of which are backed by a memfd or file, but I think this
patch is valid and useful on its own.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=746150
2015-03-13 16:20:50 +01:00
Sebastian Dröge 90eb93c2ef Don't compare booleans for equality to TRUE and FALSE
TRUE is 1, but every other non-zero value is also considered true. Comparing
for equality with TRUE would only consider 1 but not the others.
2014-12-01 09:51:12 +01:00
William Manley ffb43c0591 tcpserversink: Don't leak a GSocket and a GInetSocketAddress
when accepting a connection.

Discovered by `make check-valgrind` with the new `socketintegrationtest`.

https://bugzilla.gnome.org/show_bug.cgi?id=739544
2014-11-07 10:15:43 +01:00
Michael Olbrich 5ebfe5b26b tcpserversrc: close the server socket after accepting a connection
g_socket_accept() is only called once for a server socket. So
keeping the socket open ist just confusing possible clients.

https://bugzilla.gnome.org/show_bug.cgi?id=731566
2014-06-13 11:18:10 +01:00
Tim-Philipp Müller 79cf59b7dd tcpclientsrc: return FLUSHING when select() is canceled
https://bugzilla.gnome.org/show_bug.cgi?id=731567
2014-06-13 10:04:47 +01:00
Michael Olbrich 593a52a656 tcpserversrc: return FLOW_FLUSHING instead of an error when accept/select is canceled
Canceling the accept/select happens when the source is shut down. This is
not an error and the GST_FLOW_ERROR causes problems when only part of the
pipeline is shut down.

https://bugzilla.gnome.org/show_bug.cgi?id=731567
2014-06-13 09:19:49 +01:00
Tim-Philipp Müller bcb8068e27 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:28:57 +01:00
Tim-Philipp Müller 1d40b1d2bb tcp: fix compilation with MSVC
error C2440 at line 165 of gsttcpserversink.c
type cast error: cannot convert from GSocket* to GstMultiSinkHandle
2013-11-28 16:24:13 +00:00
Tim-Philipp Müller b1ff48c1a1 docs: remove old 0.10 Since markers
They're just confusing.
2013-11-16 16:10:07 +00:00
Sebastian Dröge b12cd5432a multisocketsink: Fix handling of partial writes and WOULD_BLOCK errors 2013-07-28 13:52:28 +02:00
Sebastian Dröge 692fd81ac7 multifdsink: Update current time after every write
Each write will update the last_activity_time and otherwise we would
compare against a too old current time and immediately timeout because
current time is smaller than last activity time (overflow).
2013-07-28 13:23:41 +02:00
Sebastian Dröge 930bfe3cbc multihandlesink: Update current time after every write
Each write will update the last_activity_time and otherwise we would
compare against a too old current time and immediately timeout because
current time is smaller than last activity time (overflow).
2013-07-28 13:22:17 +02:00
Sebastian Dröge 7f6e1bdfdb tcp: Use the generic marshaller instead of generating custom ones 2013-04-25 09:20:29 +02:00
Sebastian Dröge e06cc5295a tcp: Add FIXME comment for 2.0 to rename "host" to "bind-address" for the server elements 2013-04-25 09:06:33 +02:00
Sebastian Dröge 948a4a3632 gst: Add better support for static plugins 2013-04-15 15:52:58 +02:00
Tim-Philipp Müller 0b172593fa tcp: print warning if someone tries to add clients in NULL state
And mention this in docs.

https://bugzilla.gnome.org/show_bug.cgi?id=689326
2012-12-02 12:54:17 +00:00
Tim-Philipp Müller 5f59b4f7ee Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Sebastian Dröge 3c1041d5eb Revert "gst: Add better support for static plugins"
This reverts commit d2d79e3bc2,
which was accidentially pushed.
2012-10-24 13:26:26 +02:00
Sebastian Dröge d2d79e3bc2 gst: Add better support for static plugins 2012-10-24 12:10:44 +02:00
Sebastian Dröge ce0bfbb7cc tcp: sys/socket.h is needed for getsockname() and similar functions 2012-10-22 15:45:47 +02:00
Tim-Philipp Müller 0ea6526770 tcpserver{sink,src}: improve docs and property strings
And some minor clean-ups.
2012-10-19 18:29:56 +01:00
Alexandre Relange d2f1d82778 tcpserver{sink,src}: add 'current-port' property and signal actually used port
Useful when port=0 (use random available port) was requested.

https://bugzilla.gnome.org/show_bug.cgi?id=580093
2012-10-19 18:23:20 +01:00
Mark Nauwelaerts 6a87cb5248 tcp: adjust comment style 2012-09-10 14:03:49 +02:00
Tim-Philipp Müller 9efb5f5af2 multi{fd,socket}sink: rename client-handle-removed signal to client-{fd,socket}-removed 2012-09-09 02:00:49 +01:00
Tim-Philipp Müller 84a3add409 multifdsink, multisocketsink: fix broken action signal setup
We can't just make a vfunc that takes a union of int
and pointer as argument, and then set up subclass-specific
action signals and signals that take int (in multifdsink's
case) or a GSocket * (in multisocketsink's case), and then
expect everything to Just Work. This blows up spectacularly
on PPC G4 for some reason.

Fixes multifdsink unit test on PPC, and fixes aborts in
multisocketunit test (now hangs in gst_pad_push - progress).
2012-09-09 01:57:59 +01:00
Tim-Philipp Müller 17c839c8a1 No statements with side-effects in g_assert() or g_return_*() please 2012-08-08 10:11:48 +01:00
Tim-Philipp Müller 924139f589 multifdsink: remove deprecated and unused "mode" property 2012-07-06 12:43:26 +01:00
Mark Nauwelaerts 56602aa8fc tcpclientsink: ensure proper cleanup upon startup error 2012-04-24 17:15:23 +02:00
Mark Nauwelaerts 62cc0cade7 tcp: update property documentation to reference correct property 2012-04-11 21:45:46 +02:00
Tim-Philipp Müller 3c6a3ad629 Use new gst_element_class_set_static_metadata() 2012-04-10 00:45:16 +01:00
Sebastian Dröge ad42b16375 gst: Update for GST_PLUGIN_DEFINE() API change 2012-04-05 15:11:05 +02:00
Raimo Järvi 086bee8c14 tcp: Fix compiling with mingw
https://bugzilla.gnome.org/show_bug.cgi?id=673056
2012-04-02 11:26:45 +02:00
Alessandro Decina 9f1732fba7 Fix compiler warnings 2012-02-26 20:36:46 +01:00
Christian Fredrik Kalager Schaller 4a774a1eea Add missing header file to build file 2012-02-13 16:03:03 +00:00
Thomas Vander Stichele 4d59dc2391 multifdsink: depends on sys/socket.h 2012-02-12 22:23:45 +01:00
Thomas Vander Stichele b11c895efe multihandlesink: finish refactor 2012-02-12 22:23:45 +01:00
Thomas Vander Stichele 029b9b49de multihandle: rename num-fds/-sockets to num-handles 2012-02-12 22:23:45 +01:00
Thomas Vander Stichele fa14beb88b multihandlesink: rework to use Handle 2012-02-12 22:23:45 +01:00
Thomas Vander Stichele 64d8ec6459 multihandlesink: introduce Handle union 2012-02-12 22:23:44 +01:00
Thomas Vander Stichele 14ac8bb585 multihandlesink: rework to use GST_TYPE_FORMAT 2012-02-12 22:23:44 +01:00
Thomas Vander Stichele 16a675081d test: use more literal enums 2012-02-12 22:23:44 +01:00
Thomas Vander Stichele 020739664a multihandlesink: further refactoring 2012-02-12 22:23:44 +01:00
Thomas Vander Stichele 99185cc8f5 multisocketsink: fix refcounting bug 2012-02-12 22:17:56 +01:00
Thomas Vander Stichele 604ddc8740 multihandlesink: further refactoring 2012-02-12 22:17:56 +01:00
Thomas Vander Stichele d21c42a709 multihandlesink: fix one bug in multisocketsink refactoring 2012-02-12 22:10:51 +01:00
Thomas Vander Stichele c024274261 multihandlesink: first stab at common base class 2012-02-12 22:10:50 +01:00
Thomas Vander Stichele 684aa4baaf gst/tcp: Factor out common symbols; fix tests. 2012-02-12 22:07:29 +01:00
Thomas Vander Stichele 3b0fae73ae multifdsink: put back multifdsink before refactoring 2012-02-12 22:07:29 +01:00
Wim Taymans a75e9102c5 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 15:17:49 +01:00