gstreamer/gst/tcp
Doug Nazar 3676a2c6de tcp: Rework client start error handling.
Ensure errors are cleaned up properly at the right level.
Abort connection attempts if we're cancelled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1115>
2021-04-22 07:17:06 +00:00
..
gstmultifdsink.c tcp: allow per feature registration 2021-03-16 17:58:59 +00:00
gstmultifdsink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gstmultihandlesink.c multihandlesink: Don't pass NULL caps to gst_caps_is_equal 2020-10-08 21:55:38 +00:00
gstmultihandlesink.h docs: Convert gtkdoc comments to markdown 2017-03-10 18:19:17 -03:00
gstmultisocketsink.c tcp: allow per feature registration 2021-03-16 17:58:59 +00:00
gstmultisocketsink.h multisocketsink: add GstNetworkMessage event 2015-12-10 12:44:42 +01:00
gstsocketsrc.c tcp: cleanup files 2021-04-20 09:49:23 +00:00
gstsocketsrc.h socketsrc: handle GstNetworkMessage events 2015-12-10 12:44:42 +01:00
gsttcpclientsink.c tcp: Rework client start error handling. 2021-04-22 07:17:06 +00:00
gsttcpclientsink.h tcp: cleanup files 2021-04-20 09:49:23 +00:00
gsttcpclientsrc.c tcp: Rework client start error handling. 2021-04-22 07:17:06 +00:00
gsttcpclientsrc.h tcpclientsrc: Expose connection stats as property 2020-02-28 14:17:34 +02:00
gsttcpelements.c tcp: Rework client start error handling. 2021-04-22 07:17:06 +00:00
gsttcpelements.h tcp: Add helper functions to lookup hostnames and create sockets. 2021-04-20 09:49:23 +00:00
gsttcpplugin.c tcp: allow per feature registration 2021-03-16 17:58:59 +00:00
gsttcpserversink.c tcp: Convert tcpserversink to new helpers. 2021-04-20 09:49:23 +00:00
gsttcpserversink.h Fix FSF address 2012-11-03 23:05:09 +00:00
gsttcpserversrc.c tcp: Convert tcpserversrc to new helpers. 2021-04-20 09:49:23 +00:00
gsttcpserversrc.h tcp: cleanup files 2021-04-20 09:49:23 +00:00
gsttcpsrcstats.c tcpserversrc: Add stats property 2020-05-06 15:25:44 +03:00
gsttcpsrcstats.h tcpserversrc: Add stats property 2020-05-06 15:25:44 +03:00
meson.build tcp: cleanup files 2021-04-20 09:49:23 +00:00
README docs: add examples for tcp elements, also use correct section name. Fixes #564139 2009-03-23 17:03:38 +02: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