/*!
@mainpage Välkommen!
@note
This documentation (text and illustrations) is licensed under a
Creative
Commons Attribution-ShareAlike 4.0 International license.
Welcome to the
\bt_api (libbabeltrace2) documentation!
To get an idea of how to use the libbabeltrace2 API, have a look at
the \ref guides "guides" and \ref examples "examples".
That being said, we recommend that you read the \ref api-fund to
understand what the API expects exactly.
If you are developing a \bt_name \bt_plugin or an application which
uses libbabeltrace2, we recommend that you
\ref guide-build-bt2-dev "build the \bt_name library for development".
@section main-bt2-nutshell \bt_name in a nutshell
\bt_name
is an open-source software project by
EfficiOS; its purpose is to
process or convert
traces.
The \bt_name project contains:
- A library, libbabeltrace2, which all the other parts rely on.
libbabeltrace2 offers a
C99 interface.
This documentation is about libbabeltrace2's API.
- A command-line program, \bt_cli, which can convert and manipulate
traces.
- Python 3 bindings which offer a Pythonic interface of
libbabeltrace2.
- "Standard" plugins which ship with the project.
Common Trace Format (CTF) input
and output, plain text input and output, and various utilities are
part of those plugins.
With the \bt_name library, you can:
- Write custom \ref api-comp-cls-src "source",
\ref api-comp-cls-flt "filter", \ref api-comp-cls-sink "sink"
component classes which you can package as \bt_p_plugin.
Component classes are instantiated as \bt_p_comp within a trace
processing \bt_graph and components are assembled to accomplish a
trace manipulation or conversion job.
- Load \bt_p_plugin, instantiate their component classes within a
trace processing \bt_graph, connect the components as needed, and
run the graph to accomplish a trace manipulation or conversion job.
This is what the \bt_cli CLI tool's
convert
and
run
commands do, for example.
A trace processing \bt_graph contains connected components. The specific
component topology determines the trace processing task to realize.
@image html basic-convert-graph.png "A conversion graph, a specific trace processing graph."
Between the components of a trace processing graph, \bt_p_msg flow from
\bt_p_oport to \bt_p_iport following the configured \bt_p_conn through
\bt_p_msg_iter. There are many types of messages, chief amongst which is
the \bt_ev_msg.
With libbabeltrace2, you can also \ref api-qexec "query" some specific
object from a component class (for example, the available LTTng live sessions
of an LTTng relay daemon).
This is what the \bt_cli CLI tool's
query
command does, for example.
Make sure to read \bt_man{babeltrace2-intro,7}
to learn even more about the \bt_name project and its core concepts.
@section main-contents What's in this documentation?