This file is indexed.

/usr/include/proton/reactor.h is in libqpid-proton8-dev 0.14.0-5.1ubuntu1.

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
#ifndef PROTON_REACTOR_H
#define PROTON_REACTOR_H 1

/*
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

#include <proton/import_export.h>
#include <proton/type_compat.h>
#include <proton/event.h>
#include <proton/selectable.h>
#include <proton/ssl.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @file
 *
 * Reactor API for proton.
 *
 * @defgroup reactor Reactor
 * @{
 */

typedef struct pn_reactor_t pn_reactor_t;
typedef struct pn_acceptor_t pn_acceptor_t;
typedef struct pn_timer_t pn_timer_t;
typedef struct pn_task_t pn_task_t;

PN_EXTERN pn_handler_t *pn_handler(void (*dispatch)(pn_handler_t *, pn_event_t *, pn_event_type_t));
PN_EXTERN pn_handler_t *pn_handler_new(void (*dispatch)(pn_handler_t *, pn_event_t *, pn_event_type_t), size_t size,
                                       void (*finalize)(pn_handler_t *));
PN_EXTERN void pn_handler_free(pn_handler_t *handler);
PN_EXTERN void *pn_handler_mem(pn_handler_t *handler);
PN_EXTERN void pn_handler_add(pn_handler_t *handler, pn_handler_t *child);
PN_EXTERN void pn_handler_clear(pn_handler_t *handler);
PN_EXTERN void pn_handler_dispatch(pn_handler_t *handler, pn_event_t *event, pn_event_type_t type);

PN_EXTERN pn_reactor_t *pn_reactor(void);
PN_EXTERN pn_record_t *pn_reactor_attachments(pn_reactor_t *reactor);
PN_EXTERN pn_millis_t pn_reactor_get_timeout(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_set_timeout(pn_reactor_t *reactor, pn_millis_t timeout);
PN_EXTERN pn_timestamp_t pn_reactor_mark(pn_reactor_t *reactor);
PN_EXTERN pn_timestamp_t pn_reactor_now(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_yield(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_free(pn_reactor_t *reactor);
PN_EXTERN pn_collector_t *pn_reactor_collector(pn_reactor_t *reactor);
PN_EXTERN pn_handler_t *pn_reactor_get_global_handler(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_set_global_handler(pn_reactor_t *reactor, pn_handler_t *handler);
PN_EXTERN pn_handler_t *pn_reactor_get_handler(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_set_handler(pn_reactor_t *reactor, pn_handler_t *handler);
PN_EXTERN pn_io_t *pn_reactor_io(pn_reactor_t *reactor);
PN_EXTERN pn_list_t *pn_reactor_children(pn_reactor_t *reactor);
PN_EXTERN pn_selectable_t *pn_reactor_selectable(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_update(pn_reactor_t *reactor, pn_selectable_t *selectable);
PN_EXTERN pn_acceptor_t *pn_reactor_acceptor(pn_reactor_t *reactor, const char *host, const char *port,
                                             pn_handler_t *handler);


/**
 * Create an outgoing connection that will be managed by the reactor.
 *
 * The reator's pn_iohandler will create a socket connection to the host
 * once the connection is opened.
 *
 * @param[in] reactor the reactor that will own the connection.
 * @param[in] host the address of the remote host. e.g. "localhost"
 * @param[in] port the port to connect to. e.g. "5672"
 * @param[in] handler the handler that will process all events generated by
 * this connection.
 * @return a connection object
 */
PN_EXTERN pn_connection_t *pn_reactor_connection_to_host(pn_reactor_t *reactor,
                                                         const char *host,
                                                         const char *port,
                                                         pn_handler_t *handler);

/**
 * Create an outgoing connection that will be managed by the reactor.
 *
 * The host address for the connection must be set via
 * ::pn_reactor_set_connection_host() prior to opening the connection.
 * Typically this can be done by the handler when processing the
 * ::PN_CONNECTION_INIT event.
 *
 * @param[in] reactor the reactor that will own the connection.
 * @param[in] handler the handler that will process all events generated by
 * this connection.
 * @return a connection object
 * @deprecated Use ::pn_reactor_connection_to_host() instead.
 */
PN_EXTERN pn_connection_t *pn_reactor_connection(pn_reactor_t *reactor,
                                                 pn_handler_t *handler);

/**
 * Change the host address used by an outgoing reactor connection.
 *
 * The address is used by the reactor's iohandler to create an outgoing socket
 * connection.  This must be set prior to (re)opening the connection.
 *
 * @param[in] reactor the reactor that owns the connection.
 * @param[in] connection the connection created by the reactor.
 * @param[in] host the network address or DNS name of the host to connect to.
 * @param[in] port the network port to use. Optional - default is "5672"
 */
PN_EXTERN void pn_reactor_set_connection_host(pn_reactor_t *reactor,
                                              pn_connection_t *connection,
                                              const char *host,
                                              const char *port);
/**
 * Retrieve the peer host address for a reactor connection.
 *
 * This may be used to retrieve the host address used by the reactor to
 * establish the outgoing socket connection.  In the case of an accepted
 * connection the returned value is the address of the remote.
 *
 * @note Note that the returned address may be in numeric IP format.
 *
 * The pointer returned by this operation is valid until either the address is
 * changed via ::pn_reactor_set_connection_host() or the connection object
 * is freed.
 *
 * @param[in] reactor the reactor that owns the connection.
 * @param[in] connection the reactor connection
 * @return a C string containing the address in URL format or NULL if no
 * address available.  ::pn_url_parse() may be used to create a Proton pn_url_t
 * instance from the returned value.
 */
PN_EXTERN const char *pn_reactor_get_connection_address(pn_reactor_t *reactor,
                                                        pn_connection_t *connection);

PN_EXTERN int pn_reactor_wakeup(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_start(pn_reactor_t *reactor);
PN_EXTERN bool pn_reactor_quiesced(pn_reactor_t *reactor);
PN_EXTERN bool pn_reactor_process(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_stop(pn_reactor_t *reactor);
PN_EXTERN void pn_reactor_run(pn_reactor_t *reactor);
PN_EXTERN pn_task_t *pn_reactor_schedule(pn_reactor_t *reactor, int delay, pn_handler_t *handler);


PN_EXTERN void pn_acceptor_set_ssl_domain(pn_acceptor_t *acceptor, pn_ssl_domain_t *domain);
PN_EXTERN void pn_acceptor_close(pn_acceptor_t *acceptor);
PN_EXTERN pn_acceptor_t *pn_connection_acceptor(pn_connection_t *connection);

PN_EXTERN pn_timer_t *pn_timer(pn_collector_t *collector);
PN_EXTERN pn_timestamp_t pn_timer_deadline(pn_timer_t *timer);
PN_EXTERN void pn_timer_tick(pn_timer_t *timer, pn_timestamp_t now);
PN_EXTERN pn_task_t *pn_timer_schedule(pn_timer_t *timer, pn_timestamp_t deadline);
PN_EXTERN int pn_timer_tasks(pn_timer_t *timer);

PN_EXTERN pn_record_t *pn_task_attachments(pn_task_t *task);
PN_EXTERN void pn_task_cancel(pn_task_t *task);

PN_EXTERN pn_reactor_t *pn_class_reactor(const pn_class_t *clazz, void *object);
PN_EXTERN pn_reactor_t *pn_object_reactor(void *object);
PN_EXTERN pn_reactor_t *pn_event_reactor(pn_event_t *event);

PN_EXTERN pn_handler_t *pn_record_get_handler(pn_record_t *record);
PN_EXTERN void pn_record_set_handler(pn_record_t *record, pn_handler_t *handler);

/** @}
 */

#ifdef __cplusplus
}
#endif

#endif /* reactor.h */