-----------------------------------------------------------------------------

-----------------------------------------------------------------------------

{- |
 Module      :  OpenTelemetry.Processor
 Copyright   :  (c) Ian Duncan, 2021
 License     :  BSD-3
 Description :  Hooks for performing actions on the start and end of recording spans
 Maintainer  :  Ian Duncan
 Stability   :  experimental
 Portability :  non-portable (GHC extensions)

 Span processor is an interface which allows hooks for span start and end method invocations. The span processors are invoked only when IsRecording is true.

 Built-in span processors are responsible for batching and conversion of spans to exportable representation and passing batches to exporters.

 Span processors can be registered directly on SDK TracerProvider and they are invoked in the same order as they were registered.

 Each processor registered on TracerProvider is a start of pipeline that consist of span processor and optional exporter. SDK MUST allow to end each pipeline with individual exporter.

 SDK MUST allow users to implement and configure custom processors and decorate built-in processors for advanced scenarios such as tagging or filtering.
-}
module OpenTelemetry.Processor (
  Processor (..),
  ShutdownResult (..),
) where

import OpenTelemetry.Internal.Trace.Types