This package implements a `BaggageContext` based solely on atoms and lexicographic merge. It provides no interpretation of the atoms, but does provide an implementation of the main `BaggageProvider` methods -- specifically serialization, merge/join, and trim.
This atom-only `BaggageContext` should be used in systems that wish to propagate baggage, but have no need to inspect or modify its contents (e.g., if baggage is just passing through). For this use case, none of the more heavyweight libraries (e.g., the baggage protocol and BDL client library) are necessary.
This package provides the core representation and implementations for the Tracing Plane's *atom* based `BaggageContext` implementation. This includes utility classes and methods based around lexicographic comparison and atom merging.
* The core interfaces for the Tracing Plane's `TransitLayer` -- to enhance the existing `BaggageContext` and `Baggage` interfaces that exist in `BaggageContext/API` and `BaggageContext/StaticAPI`.
* The out-of-the-box `TransitLayer` implementation, which is a NoOp and does nothing -- method calls are essentially ignored
* A `TransitLayer` implementation based on thread-local variables. This is the recommended context propagation library to use with the tracing plane. It is the default `TransitLayer` implementation in the Tracing Plane distribution jars.
## Transit Layer
The Tracing Plane provides an out-of-the-box context propagation library called the "Transit Layer". The Transit Layer uses thread-local storage to store `BaggageContext` instances for threads, and provides a static API in `brown.tracingplane.ActiveBaggage` that invokes transit layer methods. `ActiveBaggage` provides methods as follows: