Module libdata::column
[−]
Column descriptions and values.
A column is a kind of value tagged onto a flow (o part of it). As these can be arbitrary data, this module contains an abstraction allowing to manipulate them.
The basic type is a Value
, which represents one opaque tag. The other
important type is Ident
. That one describes the kind (identity) of a
value. In a nutshell, Ident
can talk about a remote IP address, while Value
holds an actual
instance of that IP address. Of course, a Value
knows its own identity.
To use a data type as a public tag, two things need to be performed:
- Implement the
Type
trait for it. This allows creation of values out of this type and having an identity for it. - Register it inside a global registry. It can either be done here in the source, if it is
globally available (eg. multiple modules might want to use it, like the flow direction), or
it can be registered from the outside by
register
orregister_endpoint
.
If the column is to be used only as a key for internal use (eg. users won't be able to query for it), the registration is not needed.
There are also some other helpful types that build on top of these.
Structs
FlowTags |
A reference counted handle to |
Headers |
A multi-set of tags. |
Ident |
An identity of a column. |
Local |
A wrapper for local-endpoint columns. |
RefHeaders |
Just like |
Remote |
A wrapper for remote-endpoint columns. |
Tags |
Tags of a single entity. |
Value |
A column value. |
Traits
EndpointType |
A trait to implement endpoint types. |
Type |
A trait for the types that can be made into the generic |
Functions
register |
Register a type to be used as a column. |
register_endpoint |
Register a type to be used as endpoint columns. |
Type Definitions
Header |
A set of values of the same type. |
RefHeader |
Just like |