/usr/include/svxlink/AsyncUdpSocket.h is in libasynccore-dev 15.11-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | /**
* @file AsyncUdpSocket.h
* @brief Contains a class for using UDP sockets
* @author Tobias Blomberg
* @date 2003-04-26
*
* This file contains a class for communication over a UDP sockets.
*
* \verbatim
* Async - A library for programming event driven applications
* Copyright (C) 2003 Tobias Blomberg
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* \endverbatim
*/
/** @example AsyncUdpSocket_demo.cpp
An example of how to use the Async::UdpSocket class
*/
#ifndef ASYNC_UDP_SOCKET_INCLUDED
#define ASYNC_UDP_SOCKET_INCLUDED
/****************************************************************************
*
* System Includes
*
****************************************************************************/
#include <sigc++/sigc++.h>
#include <stdint.h>
/****************************************************************************
*
* Project Includes
*
****************************************************************************/
#include <AsyncIpAddress.h>
/****************************************************************************
*
* Local Includes
*
****************************************************************************/
/****************************************************************************
*
* Forward declarations
*
****************************************************************************/
class UdpPacket;
/****************************************************************************
*
* Namespace
*
****************************************************************************/
namespace Async
{
/****************************************************************************
*
* Forward declarations of classes inside of the declared namespace
*
****************************************************************************/
class FdWatch;
/****************************************************************************
*
* Defines & typedefs
*
****************************************************************************/
/****************************************************************************
*
* Exported Global Variables
*
****************************************************************************/
/****************************************************************************
*
* Class definitions
*
****************************************************************************/
/**
@brief A class for working with UDP sockets
@author Tobias Blomberg
@date 2003-04-26
This class is used to work with UDP sockets. An example usage is shown below.
\include AsyncUdpSocket_demo.cpp
*/
class UdpSocket : public sigc::trackable
{
public:
/**
* @brief Constructor
* @param local_port The local port to use. If not specified, a random
* local port will be used.
* @param bind_ip Bind to the interface with the given IP address.
* If left empty, bind to all interfaces.
*/
UdpSocket(uint16_t local_port=0, const IpAddress &bind_ip=IpAddress());
/**
* @brief Destructor
*/
~UdpSocket(void);
/**
* @brief Check if the initialization was ok
* @return Returns \em true if everything went fine during initialization
* or \em false if something went wrong
*
* This function should always be called after constructing the object to
* see if everything went fine.
*/
bool initOk(void) const { return (sock != -1); }
/**
* @brief Write data to the remote host
* @param remote_ip The IP-address of the remote host
* @param remote_port The remote port to use
* @param buf A buffer containing the data to send
* @param count The number of bytes to write
* @return Return \em true on success or \em false on failure
*/
bool write(const IpAddress& remote_ip, int remote_port, const void *buf,
int count);
/**
* @brief Get the file descriptor for the UDP socket
* @return Returns the file descriptor associated with the socket or
* -1 on error
*/
int fd(void) const { return sock; }
/**
* @brief A signal that is emitted when data has been received
* @param ip The IP-address the data was received from
* @param buf The buffer containing the read data
* @param count The number of bytes read
*/
sigc::signal<void, const IpAddress&, void *, int> dataReceived;
/**
* @brief A signal that is emitted when the send buffer is full
* @param is_full Set to \em true if the buffer is full or \em false
* if the buffer full condition has been cleared
*/
sigc::signal<void, bool> sendBufferFull;
protected:
private:
int sock;
FdWatch * rd_watch;
FdWatch * wr_watch;
UdpPacket * send_buf;
void cleanup(void);
void handleInput(FdWatch *watch);
void sendRest(FdWatch *watch);
}; /* class UdpSocket */
} /* namespace */
#endif /* ASYNC_UDP_SOCKET_INCLUDED */
/*
* This file has not been truncated
*/
|