diff options
author | Jacob Gilbert <jacob.gilbert@protonmail.com> | 2021-03-14 10:29:08 -0700 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2021-03-18 16:35:41 -0400 |
commit | 4a3fe8539ce0f0830db150d7c8b920d9c0828c0c (patch) | |
tree | e41709e4e7a4ac1a843895c55cf81490929418fc /gr-blocks/lib/tcp_connection.cc | |
parent | a8a9913136a64da903f190493bdc117b5349625e (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.cc | 101 |
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 */ |