This file is indexed.

/usr/include/mama/dictionary.h is in libmama-dev 2.2.2.1-11ubuntu1.

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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
/* $Id$
 *
 * OpenMAMA: The open middleware agnostic messaging API
 * Copyright (C) 2011 NYSE Technologies, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA
 */

#ifndef MamaDictionaryH__
#define MamaDictionaryH__


#if defined (__cplusplus)
extern "C" {
#endif

#include "mama/types.h"
#include "mama/fielddesc.h"


/**
 * The mamaDictionary class maps field identifiers (FIDs) to
 * human readable strings. Any incoming mamaMsg might contain FIDs but
 * no field names. The dictionary allows applications to determine the name
 * associated with a given FID. 
 */

/**
 * Typedefs for the dictionary callbacks.
 *
 *  - mamaDictionary_setErrorCallback ()
 *  - mamaDictionary_setCompleteCallback ()
 *  - mamaDictionary_setTimeoutCallback ()
 */
typedef void (MAMACALLTYPE *mamaDictionary_completeCallback)(mamaDictionary,void*);

typedef void (MAMACALLTYPE *mamaDictionary_timeoutCallback)(mamaDictionary,void*);

typedef void (MAMACALLTYPE *mamaDictionary_errorCallback)(mamaDictionary,const char*,void*);


/**
 * A structure containing the callbacks for dictionary creation.
 */
typedef struct mamaDictionaryCallbackSet
{
    mamaDictionary_completeCallback onComplete;
    mamaDictionary_timeoutCallback  onTimeout;
    mamaDictionary_errorCallback    onError;
} mamaDictionaryCallbackSet;

/**
 * Create a data dictionary from a subscription.
 *
 * @param dictionary A pointer for the dictionary being created.
 * @param queue      The mama queue.
 * @param dictionaryCallbacks   A mamaDictionaryCallbackSet with the callbacks
 *                              for completion, errors and timeouts.
 * @param source The mamaSource identifying the source of the dictionary.
 * @param timeout the timeout
 * @param retries number of retries
 * @param closure A user supplied value passed to the callbacks.
 *
 */
MAMAExpDLL
extern mama_status
mama_createDictionary (
    mamaDictionary*            dictionary,
    mamaQueue                  queue,
    mamaDictionaryCallbackSet  dictionaryCallbacks,
    mamaSource                 source,
    double                     timeout,
    int                        retries,
    void*                      closure);

/**
 * Create an empty mamaDictionary so that can be populated at
 * a later stage via a call to buildDictionaryFromMessage () or populated
 * manually via calls to addFieldDescriptor ()
 *
 * @param dictionary The address to where the dictionary will be written
 */
MAMAExpDLL
extern mama_status
mamaDictionary_create (
    mamaDictionary*  dictionary);


/**
 * Destroy this mamaDictionary object and free all its resources.
 *
 * @param dictionary The dictionary.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_destroy (
    mamaDictionary dictionary);

/**
 * Return the dictionary source feed name
 *
 * @param dictionary The dictionary.
 * @param result (out) points to the feed name
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFeedName (
    mamaDictionary dictionary,
    const char** result);

/**
 * Return the dictionary source feed host
 *
 * @param dictionary The dictionary.
 * @param result (out) points to the feed host
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFeedHost (
    mamaDictionary dictionary,
    const char** result);

/**
 * Return the mamaFieldDescriptor with the specified field FID. This method
 * is very efficient (constant time).
 *
 * @param dictionary The dictionary.
 * @param fid The field id.
 * @param result (out) points to the mamaFieldDescriptor (not a copy) 
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFieldDescriptorByFid (
    mamaDictionary        dictionary, 
    mamaFieldDescriptor*  result,
    mama_fid_t            fid);

/**
 * Return the field with the corresponding zero based index. This method
 * is O (N) with respect to the size of the dictionary.
 *
 * @param dictionary The dictionary.
 * @param index The zero-based index.
 * @param result The result.
 *
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFieldDescriptorByIndex (
    mamaDictionary        dictionary,
    mamaFieldDescriptor*  result,
    unsigned short        index);

/**
 * Return the descriptor of the field with the specified name. If there 
 * is more than one field with the same name, the one with the lowest 
 * field id is returned.
 *
 * @param dictionary The dictionary.
 * @param result the result * or NULL if no such field 
 * @param fname The name of the field to search for.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFieldDescriptorByName (
    mamaDictionary        dictionary, 
    mamaFieldDescriptor*  result,
    const char*           fname);

/**
 * Return an array of mamaFieldDescriptor which includes every field 
 * in the dictionary with the specified name. 
 * The caller is responsible for allocating descList with room enough
 * for all possible duplicate fields (use mamaDictionary_getSize () to 
 * be safe). 
 *
 * @param dictionary The dictionary.
 * @param fname (in) The name to search dictionary for.
 * @param descList (out) An array of mamaFieldDescriptor objects, which are
 * not copies and should not be destroyed by the caller.
 * @param size (out) The final number of entries in descList.  The value should 
 * be intialised to the size allocated to decList.  This will be modified to the
 * actual number found on return, or will return once this value has been found.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getFieldDescriptorByNameAll (
    mamaDictionary        dictionary, 
    const char*           fname,
    mamaFieldDescriptor*  descList,
    size_t*               size);

/**
 * Return the highest field identifier.
 *
 * @param dictionary The dictionary.
 * @param value A pointer that will contain highest FID.
 */
MAMAExpDLL
extern mama_status 
mamaDictionary_getMaxFid (
    mamaDictionary  dictionary,
    mama_fid_t*     value);

/**
 * Return the number of fields in the dictionary.
 *
 * @param dictionary The dictionary.
 * @param value   The number of entries in the dictionary.
 */
MAMAExpDLL
extern mama_status 
mamaDictionary_getSize (
    mamaDictionary  dictionary,
    size_t*         value);

/**
 * Return true if there are multiple fields with the same name.
 *
 * @param dictionary The dictionary.
 * @param value 1 if there are duplicates, 0 otherwise.
 */
MAMAExpDLL
extern mama_status 
mamaDictionary_hasDuplicates (
    mamaDictionary  dictionary,
    int*            value);

/**
 * Build a data dictionary from the specified message.
 *
 * @param dictionary The dictionary 
 * @param msg A mamaMsg representing the contents of a data dictionary.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_buildDictionaryFromMessage (
    mamaDictionary dictionary,
    const mamaMsg msg );

/**
 * Get the underlying message for the data dictionary.
 * 
 * A new message instance is created each time this function is called. It is
 * the responsibility for the caller to destroy the message when no longer
 * required.
 *
 * @param dictionary The Dictionary
 * @param msg The address of the mamaMsg where the result is to be written
 */
MAMAExpDLL
extern mama_status
mamaDictionary_getDictionaryMessage (
    mamaDictionary dictionary,
    mamaMsg* msg);

/**
 * Create a new field descriptor and add it to the dictionary.
 * New fields can be added to an existing dictionary obtained
 * from the MAMA infrastructure. This function can also be used
 * to manually populate a new data dictionary.
 *
 * @param dictionary The dictionary to which the field is to be added.
 * @param fid        The fid for the new field descriptor.
 * @param name       The name for the new field descriptor.
 * @param type       The type for the new field descriptor.
 * @param descriptor The newly created fieldDescriptor. NULL can be specified.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_createFieldDescriptor (
        mamaDictionary       dictionary,
        mama_fid_t           fid,
        const char*          name,
        mamaFieldType        type,
        mamaFieldDescriptor* descriptor);

/**
 * Tell the dictionary what the probable maximum fid in the data dictionary
 * may be. This is not necessary but will aid performance for manually
 * creating  a new dictionary or adding new fields to an existing dictionary.
 *
 * Calling this function ensures that there is capacity in the dictionary for
 * field descriptors with fids up to the max specified.
 *
 * Fields with fids greater than specified can be added to the dictionary
 * but this will incur the overhead of allocating more memory and copying
 * dictionary elements.
 *
 * @param dictionary The mamaDictionary.
 * @param maxFid     The probable maximum fid being added to the dictionary.
 */
MAMAExpDLL
extern mama_status
mamaDictionary_setMaxFid (
        mamaDictionary       dictionary,
        mama_size_t          maxFid);

/**
 * Write the data dictionary to a file.
 * The dictionary will be written in the form:
 * fid|fieldName|fieldType
 *
 * @param dictionary The dictionary to serialize.
 * @param fileName   The name of the file to serialize the dictionary to. This
 *      can be a fully qualified name, relative or a file on the
 *      \$WOMBAT_PATH
 */
MAMAExpDLL
extern mama_status
mamaDictionary_writeToFile (
        mamaDictionary       dictionary,
        const char*          fileName);

/**
 * Populate a dictionary from the contents of a file.
 * Can be used to add additional fields to an existing dictionary or
 * to populate a new dictionary.
 *
 * @param dictionary The dictionary to populate.
 * @param fileName   The file from which to populate the dictionary. This
 *      can be a fully qualified name, relative or a file on the
 *      \$WOMBAT_PATH
 */
MAMAExpDLL
extern mama_status
mamaDictionary_populateFromFile (
        mamaDictionary       dictionary,
        const char*          fileName);

#if defined (__cplusplus)
}
#endif

#endif /* MamaDictionaryH__ */