gstreamer/gst/tcp
William Manley a297b0545f socketsrc: Add connection-closed-by-peer signal
This provides notification that the socket in use was closed by the peer
and gives an opportunity to replace it with a new one which is not
closed, allowing reading from many sockets in order.

I use this in pulsevideo to implement reconnection logic to handle the
pulsevideo service dieing, such that is can be restarted without
disrupting downstream.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13 20:05:00 +01:00
..
.gitignore gst/tcp/: Added burst on connect sync_method, deprecated sync_clients, streamlined the sync code some more. 2004-10-29 11:10:38 +00:00
gstmultifdsink.c docs: remove outdated and pointless 'Last reviewed' lines from docs 2014-04-26 23:28:57 +01:00
gstmultifdsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstmultihandlesink.c Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
gstmultihandlesink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstmultioutputsink.c Don't compare booleans for equality to TRUE and FALSE 2014-12-01 09:51:12 +01:00
gstmultisocketsink.c multisocketsink: Map GstMemorys individually when sending 2015-03-13 16:20:50 +01:00
gstmultisocketsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstsocketsrc.c socketsrc: Add connection-closed-by-peer signal 2015-03-13 20:05:00 +01:00
gstsocketsrc.h socketsrc: Add connection-closed-by-peer signal 2015-03-13 20:05:00 +01:00
gsttcp.h tcp: Use the generic marshaller instead of generating custom ones 2013-04-25 09:20:29 +02:00
gsttcpclientsink.c Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpclientsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpclientsrc.c tcpclientsrc: return FLUSHING when select() is canceled 2014-06-13 10:04:47 +01:00
gsttcpclientsrc.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpplugin.c tcp: Add element socketsrc 2015-03-13 20:05:00 +01:00
gsttcpserversink.c tcpserversink: Don't leak a GSocket and a GInetSocketAddress 2014-11-07 10:15:43 +01:00
gsttcpserversink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpserversrc.c tcpserversrc: close the server socket after accepting a connection 2014-06-13 11:18:10 +01:00
gsttcpserversrc.h Fix FSF address 2012-11-03 23:05:09 +00:00
Makefile.am tcp: Add element socketsrc 2015-03-13 20:05:00 +01:00
README docs: add examples for tcp elements, also use correct section name. Fixes #564139 2009-03-23 17:03:38 +02:00
tcp.vcproj more working plugins 2004-07-27 21:41:30 +00:00

This part of the documentation is for the new tcp elements:
- tcpclientsrc
- tcpclientsink
- tcpserversrc
- tcpserversink
                                                                                
TESTS
-----
Use these tests to test functionality of the various tcp plugins

* server: nc -l -p 3000
  client: nc localhost 3000
  everything you type in the server is shown on the client
  everything you type in the client is shown on the server

* server: nc -l -p 3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  everything you type in the server is shown on the client

* server: nc -l -p 3000
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000
  everything you type in the client is shown on the server

* server: gst-launch tcpserversrc protocol=none port=3000 ! fdsink fd=2
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000

* server: gst-launch fdsrc fd=1 ! tcpserversink protocol=none port=3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  -> Received first buffer without caps set

TODO
----
- implement DNS resolution

multifdsink
-----------
- operation:
  - client fd gets added when "add" signal gets emitted on multifdsink
  - signal handler creates a GstTCPClient structure, adds it to ->clients,
    and adds the fd to ->fd_hash, then emits client-added
  - client 

  - when a buffer comes in:
    - the _render vmethod puts the buffer on the global queue
    - and increases bytes_to_serve
    - (currently it sets streamheaders, but since this is treated globally
       this is wrong - clients can be at different positions in the stream)

  - when a client issues a write (ie requests data):
    - when using GDP, if no caps sent yet, send caps first, then set caps_sent
    - if streamheader buffers, and we haven't sent yet to this client,
      send current streamheader buffers, then set streamheader_sent
    - send out buffers