packages feed

otel-effectful-1.0.0: src/Effectful/OpenTelemetry/Exporter/STM.hs

module Effectful.OpenTelemetry.Exporter.STM where

import Control.Concurrent.STM hiding (atomically)
import Control.Concurrent.STM qualified as STM
import Effectful.OpenTelemetry.Exporter.Type
import Prelude

atomically :: (a -> STM ()) -> Exporter es a
atomically = fromIO . (STM.atomically .)

tvar :: TVar a -> Exporter es a
tvar = atomically . writeTVar

tmvar :: TMVar a -> Exporter es a
tmvar = atomically . putTMVar

tqueue :: TQueue a -> Exporter es a
tqueue = atomically . writeTQueue

tbqueue :: TBQueue a -> Exporter es a
tbqueue = atomically . writeTBQueue