Token.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2019 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 
27 namespace Format
28 {
29 
30 class TokenTableEntry;
31 
32 #define LOG_BUF_SZ (MAX_URL<<2)
33 
34 // XXX: inherit from linked list
35 class Token
36 {
37 public:
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;
61  char separator;
62  } header;
63  } data;
64  int widthMin;
65  int widthMax;
66  enum Quoting quote;
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 
73 private:
74  const char *scanForToken(TokenTableEntry const table[], const char *cur);
75 };
76 
77 } // namespace Format
78 
79 #endif /* _SQUID_FORMAT_TOKEN_H */
80 
ProxyProtocol::Two::FieldType headerId
the cached ID of the parsed header or zero
Definition: Token.h:56
char * header
Definition: Token.h:59
enum Quoting quote
Definition: Token.h:66
const char * scanForToken(TokenTableEntry const table[], const char *cur)
Definition: Token.cc:266
Token * next
Definition: Token.h:71
char * string
Definition: Token.h:53
int parse(const char *def, enum Quoting *quote)
Definition: Token.cc:285
One entry in a table of format tokens.
Quoting
Quoting style for a format output.
Definition: ByteCode.h:256
int divisor
Definition: Token.h:70
bool left
Definition: Token.h:67
ByteCode_t type
Definition: Token.h:50
bool space
Definition: Token.h:68
int cur
Definition: ModDevPoll.cc:76
char separator
Definition: Token.h:61
char * element
Definition: Token.h:60
const char * label
Definition: Token.h:51
bool zero
Definition: Token.h:69
static void Init()
Initialize the format token registrations.
Definition: Token.cc:246
int widthMin
minimum field width
Definition: Token.h:64
FieldType
numeric IDs of registered PROXY protocol TLV types and pseudo headers
Definition: Elements.h:19
int widthMax
maximum field width
Definition: Token.h:65
struct Format::Token::@69 data
ByteCode_t
Definition: ByteCode.h:30

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors