This file is indexed.

/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
 */