GNU Radio Manual and C++ API Reference  3.9.1.0
The Free & Open Software Radio Ecosystem
udp_sink_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2020 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef INCLUDED_NETWORK_UDP_SINK_IMPL_H
12 #define INCLUDED_NETWORK_UDP_SINK_IMPL_H
13 
15 #include <boost/asio.hpp>
16 #include <boost/asio/ip/udp.hpp>
17 #include <boost/circular_buffer.hpp>
18 
20 
21 namespace gr {
22 namespace network {
23 
25 {
26 protected:
27  int d_port;
28  size_t d_itemsize;
29  size_t d_veclen;
30  size_t d_block_size;
31 
32  bool is_ipv6;
35  uint64_t d_seq_num;
36  uint16_t d_payloadsize;
37  bool b_send_eof;
38 
41 
42  char d_tmpheaderbuff[12]; // Largest header is 10 bytes
43 
44  // A queue is required because we have 2 different timing
45  // domains: The network packets and the GR work()/scheduler
46  boost::circular_buffer<char>* d_localqueue;
48 
49  boost::system::error_code ec;
50 
51  boost::asio::io_service d_io_service;
52  boost::asio::ip::udp::endpoint d_endpoint;
53  boost::asio::ip::udp::socket* d_udpsocket;
54 
56 
57  virtual void
58  build_header(); // returns header size. Header is stored in tmpHeaderBuff
59 
60 public:
61  udp_sink_impl(size_t itemsize,
62  size_t veclen,
63  const std::string& host,
64  int port,
65  int header_type = HEADERTYPE_NONE,
66  int payloadsize = 1472,
67  bool send_eof = true);
68  ~udp_sink_impl() override;
69 
70  bool stop() override;
71 
72  int work(int noutput_items,
73  gr_vector_const_void_star& input_items,
74  gr_vector_void_star& output_items) override;
75 };
76 
77 } // namespace network
78 } // namespace gr
79 
80 #endif /* INCLUDED_NETWORK_UDP_SINK_IMPL_H */
gr::network::udp_sink_impl::d_precomp_datasize
int d_precomp_datasize
Definition: udp_sink_impl.h:39
gr::network::udp_sink_impl::d_seq_num
uint64_t d_seq_num
Definition: udp_sink_impl.h:35
gr::network::udp_sink_impl::b_send_eof
bool b_send_eof
Definition: udp_sink_impl.h:37
gr::blocks::pdu::itemsize
BLOCKS_API size_t itemsize(vector_type type)
gr::network::udp_sink_impl::d_header_type
int d_header_type
Definition: udp_sink_impl.h:33
gr::network::udp_sink_impl::d_header_size
int d_header_size
Definition: udp_sink_impl.h:34
udp_sink.h
gr::network::udp_sink_impl::d_localqueue
boost::circular_buffer< char > * d_localqueue
Definition: udp_sink_impl.h:46
HEADERTYPE_NONE
constexpr int HEADERTYPE_NONE
Definition: udp_header_types.h:14
gr::network::udp_sink_impl::d_port
int d_port
Definition: udp_sink_impl.h:27
gr::network::udp_sink_impl::d_localbuffer
char * d_localbuffer
Definition: udp_sink_impl.h:47
gr::network::udp_sink_impl::is_ipv6
bool is_ipv6
Definition: udp_sink_impl.h:32
gr::network::udp_sink_impl::d_block_size
size_t d_block_size
Definition: udp_sink_impl.h:30
gr::thread::mutex
boost::mutex mutex
Definition: thread.h:37
gr::network::udp_sink_impl::d_veclen
size_t d_veclen
Definition: udp_sink_impl.h:29
gr::network::udp_sink_impl::d_udpsocket
boost::asio::ip::udp::socket * d_udpsocket
Definition: udp_sink_impl.h:53
gr_vector_const_void_star
std::vector< const void * > gr_vector_const_void_star
Definition: types.h:28
gr::network::udp_sink_impl::d_io_service
boost::asio::io_service d_io_service
Definition: udp_sink_impl.h:51
gr::network::udp_sink_impl::ec
boost::system::error_code ec
Definition: udp_sink_impl.h:49
gr::network::udp_sink_impl::d_itemsize
size_t d_itemsize
Definition: udp_sink_impl.h:28
packet_headers.h
gr::network::udp_sink
This block provides a UDP Sink block that can send data over UDP streams to a specified host.
Definition: gr-network/include/gnuradio/network/udp_sink.h:49
NETWORK_API
#define NETWORK_API
Definition: gr-network/include/gnuradio/network/api.h:19
gr
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:29
gr::network::udp_sink_impl::d_payloadsize
uint16_t d_payloadsize
Definition: udp_sink_impl.h:36
gr::network::udp_sink_impl::d_mutex
boost::mutex d_mutex
Definition: udp_sink_impl.h:55
gr::network::udp_sink_impl::d_precomp_data_overitemsize
int d_precomp_data_overitemsize
Definition: udp_sink_impl.h:40
gr_vector_void_star
std::vector< void * > gr_vector_void_star
Definition: types.h:27
gr::network::udp_sink_impl::d_endpoint
boost::asio::ip::udp::endpoint d_endpoint
Definition: udp_sink_impl.h:52
gr::network::udp_sink_impl
Definition: udp_sink_impl.h:24