{-# LANGUAGE PatternSynonyms #-}

module OpenTelemetry.Processor
  {-# DEPRECATED "use OpenTelemetry.Processor.Span instead" #-} (
  Processor,
  SpanProcessor (
    Processor,
    processorOnStart,
    processorOnEnd,
    processorShutdown,
    processorForceFlush
  ),
  ShutdownResult (..),
) where

import Control.Concurrent.Async (Async)
import Data.IORef (IORef)
import OpenTelemetry.Context (Context)
import OpenTelemetry.Internal.Trace.Types (ImmutableSpan)
import OpenTelemetry.Processor.Span


{-# DEPRECATED Processor "use SpanProcessor instead" #-}


type Processor = SpanProcessor


pattern Processor
  :: (IORef ImmutableSpan -> Context -> IO ())
  -> (IORef ImmutableSpan -> IO ())
  -> IO (Async ShutdownResult)
  -> IO ()
  -> SpanProcessor
pattern $mProcessor :: forall {r}.
SpanProcessor
-> ((IORef ImmutableSpan -> Context -> IO ())
    -> (IORef ImmutableSpan -> IO ())
    -> IO (Async ShutdownResult)
    -> IO ()
    -> r)
-> ((# #) -> r)
-> r
$bProcessor :: (IORef ImmutableSpan -> Context -> IO ())
-> (IORef ImmutableSpan -> IO ())
-> IO (Async ShutdownResult)
-> IO ()
-> SpanProcessor
Processor {SpanProcessor -> IORef ImmutableSpan -> Context -> IO ()
processorOnStart, SpanProcessor -> IORef ImmutableSpan -> IO ()
processorOnEnd, SpanProcessor -> IO (Async ShutdownResult)
processorShutdown, SpanProcessor -> IO ()
processorForceFlush} =
  SpanProcessor
    { spanProcessorOnStart = processorOnStart
    , spanProcessorOnEnd = processorOnEnd
    , spanProcessorShutdown = processorShutdown
    , spanProcessorForceFlush = processorForceFlush
    }