summaryrefslogtreecommitdiffstats
path: root/addons/51degrees/dummy/pattern/51Degrees.h
blob: 9aaf9498ea323c52cd0330e31c028e0dedf2e093 (plain)
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
/* *********************************************************************
 * This Source Code Form is copyright of 51Degrees Mobile Experts Limited.
 * Copyright 2019 51Degrees Mobile Experts Limited, 5 Charlotte Close,
 * Caversham, Reading, Berkshire, United Kingdom RG4 7BY
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.
 *
 * If a copy of the MPL was not distributed with this file, You can obtain
 * one at http://mozilla.org/MPL/2.0/.
 *
 * This Source Code Form is "Incompatible With Secondary Licenses", as
 * defined by the Mozilla Public License, v. 2.0.
 * *********************************************************************/

/* *********************************************************************
 * Dummy library for HAProxy. This does not function, and is designed
 * solely for HAProxy testing purposes.
 * *********************************************************************/
#ifndef FIFTYONEDEGREES_H_INCLUDED
#define FIFTYONEDEGREES_H_INCLUDED

#ifndef FIFTYONEDEGREES_H_PATTERN_INCLUDED
#define FIFTYONEDEGREES_H_PATTERN_INCLUDED
#endif

#ifndef FIFTYONEDEGREES_DUMMY_LIB
#define FIFTYONEDEGREES_DUMMY_LIB
#endif

#include <stdint.h>

typedef enum e_fiftyoneDegrees_MatchMethod {
	NONE,
	EXACT,
	NUMERIC,
	NEAREST,
	CLOSEST
} fiftyoneDegreesMatchMethod;

typedef enum e_fiftyoneDegrees_DataSetInitStatus {
	DATA_SET_INIT_STATUS_SUCCESS,
	DATA_SET_INIT_STATUS_INSUFFICIENT_MEMORY,
	DATA_SET_INIT_STATUS_CORRUPT_DATA,
	DATA_SET_INIT_STATUS_INCORRECT_VERSION,
	DATA_SET_INIT_STATUS_FILE_NOT_FOUND,
	DATA_SET_INIT_STATUS_NOT_SET,
	DATA_SET_INIT_STATUS_POINTER_OUT_OF_BOUNDS,
	DATA_SET_INIT_STATUS_NULL_POINTER
} fiftyoneDegreesDataSetInitStatus;

typedef struct fiftyoneDegrees_ascii_string_t {
	const int16_t length;
	const char firstByte;
} fiftyoneDegreesAsciiString;

typedef struct fiftyoneDegrees_dataset_header_t {
} fiftyoneDegreesDataSetHeader;

typedef struct fiftyoneDegrees_workset_pool_t {
} fiftyoneDegreesWorksetPool;

typedef struct fiftyoneDegrees_property_t {
} fiftyoneDegreesProperty;

typedef struct fiftyoneDegrees_value_t {
} fiftyoneDegreesValue;

typedef struct fiftyoneDegrees_resultset_cache_t {
} fiftyoneDegreesResultsetCache;

typedef struct fiftyoneDegrees_http_header_t {
	int32_t headerNameOffset;
	const char *headerName;
} fiftyoneDegreesHttpHeader;

typedef struct fiftyoneDegrees_http_header_workset_t {
	fiftyoneDegreesHttpHeader *header;
	const char *headerValue;
	int headerValueLength;
} fiftyoneDegreesHttpHeaderWorkset;


typedef struct fiftyoneDegrees_dataset_t {
    int32_t httpHeadersCount;
    fiftyoneDegreesHttpHeader *httpHeaders;
    int32_t requiredPropertyCount;
    const fiftyoneDegreesProperty **requiredProperties;
} fiftyoneDegreesDataSet;

typedef struct fiftyoneDegrees_workset_t {
    fiftyoneDegreesDataSet *dataSet;
	int32_t importantHeadersCount;
	fiftyoneDegreesHttpHeaderWorkset *importantHeaders;
    fiftyoneDegreesMatchMethod method;
    int32_t difference;
    const fiftyoneDegreesValue **values;
} fiftyoneDegreesWorkset;

int32_t fiftyoneDegreesGetSignatureRank(fiftyoneDegreesWorkset *ws);

const char* fiftyoneDegreesGetPropertyName(
	const fiftyoneDegreesDataSet *dataSet,
	const fiftyoneDegreesProperty *property);

int32_t fiftyoneDegreesSetValues(
	fiftyoneDegreesWorkset *ws,
	int32_t requiredPropertyIndex);

const char* fiftyoneDegreesGetValueName(
	const fiftyoneDegreesDataSet *dataSet,
	const fiftyoneDegreesValue *value);

fiftyoneDegreesWorkset *fiftyoneDegreesWorksetPoolGet(
	fiftyoneDegreesWorksetPool *pool);

void fiftyoneDegreesWorksetPoolRelease(
    fiftyoneDegreesWorksetPool *pool,
    fiftyoneDegreesWorkset *ws);

void fiftyoneDegreesMatchForHttpHeaders(fiftyoneDegreesWorkset *ws);

void fiftyoneDegreesMatch(
	fiftyoneDegreesWorkset *ws,
	const char* userAgent);

fiftyoneDegreesDataSetInitStatus fiftyoneDegreesInitWithPropertyArray(
	const char *fileName,
	fiftyoneDegreesDataSet *dataSet,
	const char** properties,
	int32_t count);

fiftyoneDegreesWorksetPool *fiftyoneDegreesWorksetPoolCreate(
	fiftyoneDegreesDataSet *dataSet,
	fiftyoneDegreesResultsetCache *cache,
	int32_t size);

void fiftyoneDegreesWorksetPoolFree(
	const fiftyoneDegreesWorksetPool *pool);

void fiftyoneDegreesDataSetFree(const fiftyoneDegreesDataSet *dataSet);

const fiftyoneDegreesAsciiString* fiftyoneDegreesGetString(
	const fiftyoneDegreesDataSet *dataSet,
	int32_t offset);

#endif