[#BloombergLP-ball-Context] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::Context :relfileprefix: ../../ :mrdocs: This class provides a container for aggregating the auxiliary information needed to transmit a log record. For each context attribute in this class (e.g., `recordIndex`), there is an accessor for obtaining the attribute's value (`recordIndex`) and there are manipulators for changing the contained attribute values (`setAttributes` checks attribute constraints; `setAttributesRaw` and `setRecordIndexRaw` do not). A static `isValid` method is also provided to verify that particular attribute values are consistent before they are used to create or modify a context object. Note that it is the client's responsibility not to construct or unilaterally modify a context object to hold incompatible attribute values. == Synopsis Declared in `<ball_context.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class Context; ---- == Description Additionally, this class supports a complete set of _value_ _semantic_ operations, including copy construction, assignment and equality comparison, and `ostream` printing. A precise operational definition of when two instances have the same value can be found in the description of `operator==` for the class. This class is _exception_ _neutral_ with no guarantee of rollback: if an exception is thrown during the invocation of a method on a pre‐existing instance, the object is left in a valid state, but its value is undefined. In no event is memory leaked. Finally, _aliasing_ (e.g., using all or part of an object as both source and destination) is supported in all cases. == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/Context/2constructor-09.adoc[`Context`] [.small]#[constructor]# | Constructors | xref:BloombergLP/ball/Context/operator_assign.adoc[`operator=`] | Assign to this context object the value of the specified `rhs` context object. | xref:BloombergLP/ball/Context/print.adoc[`print`] | Format this object to the specified output `stream` at the optionally specified indentation `level` and return a reference to the modifiable `stream`. If `level` is specified, optionally specify `spacesPerLevel`, the number of spaces per indentation level for this and all of its nested objects. Each line is indented by the absolute value of `level * spacesPerLevel`. If `level` is negative, suppress indentation of the first line. If `spacesPerLevel` is negative, suppress line breaks and format the entire output on one line. If `stream` is initially invalid, this operation has no effect. | xref:BloombergLP/ball/Context/recordIndex.adoc[`recordIndex`] | Return the record index attribute of this context object. | xref:BloombergLP/ball/Context/sequenceLength.adoc[`sequenceLength`] | Return the sequence length attribute of this context object. | xref:BloombergLP/ball/Context/setAttributes.adoc[`setAttributes`] | Set the value of this context object to the specified `transmissionCause`, `recordIndex`, and `sequenceLength` values if `transmissionCause`, `recordIndex`, and `sequenceLength` represent a valid context. Return 0 on success, and a non‐zero value (with no effect on this context object) otherwise. | xref:BloombergLP/ball/Context/setAttributesRaw.adoc[`setAttributesRaw`] | Set the value of this context object to the specified `transmissionCause`, `recordIndex`, and `sequenceLength` values. The behavior is undefined if the resulting attribute values are incompatible. | xref:BloombergLP/ball/Context/setRecordIndexRaw.adoc[`setRecordIndexRaw`] | Set the record index attribute of this context object to the specified `index`. The behavior is undefined if the resulting attribute values are incompatible. | xref:BloombergLP/ball/Context/transmissionCause.adoc[`transmissionCause`] | Return the transmission cause attribute of this context object. | xref:BloombergLP/ball/Context/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration<Context, UsesBslmaAllocator>`] | Declare that this type uses a `bslma` allocator. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/Context/isValid.adoc[`isValid`] | Return `true` if the specified `transmissionCause`, `recordIndex`, and `sequenceLength` represent a valid context, and `false` otherwise. (See the CONSTRAINTS section of the component‐level documentation above for a complete specification of the constraints on attribute values.) |=== == Friends [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/ball/operator_eq-07.adoc[BloombergLP::ball::operator==]` | Return `true` if the specified `lhs` and `rhs` context objects have the same value, and `false` otherwise. Two context objects have the same value if each respective pair of corresponding attributes have the same value. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/ball/operator_not_eq-02.adoc[`operator!=`] | Return `true` if the specified `lhs` and `rhs` context objects do not have the same value, and `false` otherwise. Two context objects do not have the same value if one or more respective attributes differ in value. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#