Token.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef _SQUID_FORMAT_TOKEN_H
10#define _SQUID_FORMAT_TOKEN_H
11
12#include "format/ByteCode.h"
13#include "proxyp/Elements.h"
14
15/*
16 * Squid configuration allows users to define custom formats in
17 * several components.
18 * - logging
19 * - external ACL input
20 * - deny page URL
21 *
22 * These enumerations and classes define the API for parsing of
23 * format directives to define these patterns. Along with output
24 * functionality to produce formatted buffers.
25 */
26
27namespace Format
28{
29
30class TokenTableEntry;
31
32#define LOG_BUF_SZ (MAX_URL<<2)
33
34// XXX: inherit from linked list
35class Token
36{
37public:
38 Token();
39 ~Token();
40
42 static void Init();
43
48 int parse(const char *def, enum Quoting *quote);
49
51 const char *label;
52 struct {
53 char *string;
54 // TODO: Add ID caching for protocols other than PROXY protocol.
57
58 struct {
59 char *header;
60 char *element;
67 bool left;
68 bool space;
69 bool zero;
70 int divisor; // class invariant: MUST NOT be zero.
71 Token *next; // TODO: move from linked list to array
72
73private:
74 const char *scanForToken(TokenTableEntry const table[], const char *cur);
75};
76
77} // namespace Format
78
79#endif /* _SQUID_FORMAT_TOKEN_H */
80
int cur
Definition: ModDevPoll.cc:74
One entry in a table of format tokens.
int widthMin
minimum field width
Definition: Token.h:64
const char * scanForToken(TokenTableEntry const table[], const char *cur)
Definition: Token.cc:274
enum Quoting quote
Definition: Token.h:66
char separator
Definition: Token.h:61
char * element
Definition: Token.h:60
int divisor
Definition: Token.h:70
char * string
Definition: Token.h:53
ProxyProtocol::Two::FieldType headerId
the cached ID of the parsed header or zero
Definition: Token.h:56
const char * label
Definition: Token.h:51
Token * next
Definition: Token.h:71
bool zero
Definition: Token.h:69
int parse(const char *def, enum Quoting *quote)
Definition: Token.cc:293
ByteCode_t type
Definition: Token.h:50
bool left
Definition: Token.h:67
bool space
Definition: Token.h:68
static void Init()
Initialize the format token registrations.
Definition: Token.cc:253
char * header
Definition: Token.h:59
struct Format::Token::@64 data
int widthMax
maximum field width
Definition: Token.h:65
ByteCode_t
Definition: ByteCode.h:30
Quoting
Quoting style for a format output.
Definition: ByteCode.h:261
FieldType
numeric IDs of registered PROXY protocol TLV types and pseudo headers
Definition: Elements.h:19

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors