summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/tcp_connection.cc
diff options
context:
space:
mode:
authorJacob Gilbert <jacob.gilbert@protonmail.com>2021-03-14 10:29:08 -0700
committermormj <34754695+mormj@users.noreply.github.com>2021-03-18 16:35:41 -0400
commit4a3fe8539ce0f0830db150d7c8b920d9c0828c0c (patch)
treee41709e4e7a4ac1a843895c55cf81490929418fc /gr-blocks/lib/tcp_connection.cc
parenta8a9913136a64da903f190493bdc117b5349625e (diff)
gr-blocks: remove pdu blocks
The following have been moved to the new gr::pdu module or to gr::network and are no longer needed in gr::blocks: - pdu (noblock) - pdu_filter block - pdu_remove block - pdu_set block - pdu_to_tagged_stream block - random_pdu block - socket_pdu block - stream_pdu_base (noblock) - tagged_stream_to_pdu block - tcp_connection (noblock) - tuntap_pdu block The digital and FEC modules had a large number of references to the PDU blocks that were moved from gr-blocks to gr-pdu, this updates these changes in example flowgraphs and a few python files. The usage-manual update will be propagated to the wiki so that future exports will remain up to date. Signed-off-by: Jacob Gilbert <jacob.gilbert@protonmail.com>
Diffstat (limited to 'gr-blocks/lib/tcp_connection.cc')
-rw-r--r--gr-blocks/lib/tcp_connection.cc101
1 files changed, 0 insertions, 101 deletions
diff --git a/gr-blocks/lib/tcp_connection.cc b/gr-blocks/lib/tcp_connection.cc
deleted file mode 100644
index 76f42614e9..0000000000
--- a/gr-blocks/lib/tcp_connection.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2013 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "tcp_connection.h"
-#include <gnuradio/basic_block.h>
-#include <gnuradio/blocks/pdu.h>
-
-namespace gr {
-namespace blocks {
-
-tcp_connection::sptr tcp_connection::make(boost::asio::io_service& io_service,
- int MTU /*= 10000*/,
- bool no_delay /*=false*/)
-{
- return sptr(new tcp_connection(io_service, MTU, no_delay));
-}
-
-tcp_connection::tcp_connection(boost::asio::io_service& io_service,
- int MTU /*= 10000*/,
- bool no_delay /*=false*/)
- : d_socket(io_service), d_buf(MTU), d_block(NULL), d_no_delay(no_delay)
-{
- try {
- d_socket.set_option(boost::asio::ip::tcp::no_delay(no_delay));
- } catch (...) {
- // Silently ignore failure (socket might be current in accept stage) and try again
- // in 'start'
- }
-}
-
-void tcp_connection::send(pmt::pmt_t vector)
-{
- size_t len = pmt::blob_length(vector);
-
- // Asio async_write() requires the buffer to remain valid until the handler is called.
- auto txbuf = std::make_shared<std::vector<char>>(len);
-
- size_t temp = 0;
- memcpy(txbuf->data(), pmt::uniform_vector_elements(vector, temp), len);
-
- size_t offset = 0;
- while (offset < len) {
- // Limit the size of each write() to the MTU.
- // FIXME: Note that this has the effect of breaking a large PDU into several
- // smaller PDUs, each containing <= MTU bytes. Is this the desired behavior?
- size_t send_len = std::min((len - offset), d_buf.size());
- boost::asio::async_write(
- d_socket,
- boost::asio::buffer(txbuf->data() + offset, send_len),
- [txbuf](const boost::system::error_code& error, size_t bytes_transferred) {});
- offset += send_len;
- }
-}
-
-void tcp_connection::start(gr::basic_block* block)
-{
- d_block = block;
- d_socket.set_option(boost::asio::ip::tcp::no_delay(d_no_delay));
- d_socket.async_read_some(boost::asio::buffer(d_buf),
- boost::bind(&tcp_connection::handle_read,
- this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
-}
-
-void tcp_connection::handle_read(const boost::system::error_code& error,
- size_t bytes_transferred)
-{
- if (!error) {
- if (d_block) {
- pmt::pmt_t vector =
- pmt::init_u8vector(bytes_transferred, (const uint8_t*)&d_buf[0]);
- pmt::pmt_t pdu = pmt::cons(pmt::PMT_NIL, vector);
-
- d_block->message_port_pub(pdu::pdu_port_id(), pdu);
- }
-
- d_socket.async_read_some(
- boost::asio::buffer(d_buf),
- boost::bind(&tcp_connection::handle_read,
- this,
- boost::asio::placeholders::error,
- boost::asio::placeholders::bytes_transferred));
- } else {
- d_socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both);
- d_socket.close();
- }
-}
-} /* namespace blocks */
-} /* namespace gr */