{-# LANGUAGE DeriveGeneric #-}
module Instana.SDK.Span.ExitSpan
( ExitSpan(..)
, parentId
, traceId
, addAnnotation
, addToErrorCount
, setServiceName
, setW3cTraceContext
, spanName
) where
import Data.Text (Text)
import GHC.Generics
import Instana.SDK.Internal.Id (Id)
import Instana.SDK.Internal.W3CTraceContext (W3CTraceContext)
import Instana.SDK.Span.EntrySpan (EntrySpan)
import qualified Instana.SDK.Span.EntrySpan as EntrySpan
import Instana.SDK.Span.SpanData (Annotation, SpanData)
import qualified Instana.SDK.Span.SpanData as SpanData
import Instana.SDK.Span.SpanType (SpanType)
import qualified Instana.SDK.Span.SpanType as SpanType
data ExitSpan =
ExitSpan
{
ExitSpan -> EntrySpan
parentSpan :: EntrySpan
, ExitSpan -> Id
spanId :: Id
, ExitSpan -> SpanType
spanType :: SpanType
, ExitSpan -> Int
timestamp :: Int
, ExitSpan -> Maybe Text
serviceName :: Maybe Text
, ExitSpan -> Int
errorCount :: Int
, ExitSpan -> SpanData
spanData :: SpanData
, ExitSpan -> W3CTraceContext
w3cTraceContext :: W3CTraceContext
} deriving (ExitSpan -> ExitSpan -> Bool
(ExitSpan -> ExitSpan -> Bool)
-> (ExitSpan -> ExitSpan -> Bool) -> Eq ExitSpan
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExitSpan -> ExitSpan -> Bool
$c/= :: ExitSpan -> ExitSpan -> Bool
== :: ExitSpan -> ExitSpan -> Bool
$c== :: ExitSpan -> ExitSpan -> Bool
Eq, (forall x. ExitSpan -> Rep ExitSpan x)
-> (forall x. Rep ExitSpan x -> ExitSpan) -> Generic ExitSpan
forall x. Rep ExitSpan x -> ExitSpan
forall x. ExitSpan -> Rep ExitSpan x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ExitSpan x -> ExitSpan
$cfrom :: forall x. ExitSpan -> Rep ExitSpan x
Generic, Int -> ExitSpan -> ShowS
[ExitSpan] -> ShowS
ExitSpan -> String
(Int -> ExitSpan -> ShowS)
-> (ExitSpan -> String) -> ([ExitSpan] -> ShowS) -> Show ExitSpan
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ExitSpan] -> ShowS
$cshowList :: [ExitSpan] -> ShowS
show :: ExitSpan -> String
$cshow :: ExitSpan -> String
showsPrec :: Int -> ExitSpan -> ShowS
$cshowsPrec :: Int -> ExitSpan -> ShowS
Show)
spanName :: ExitSpan -> Text
spanName :: ExitSpan -> Text
spanName = SpanType -> Text
SpanType.spanName (SpanType -> Text) -> (ExitSpan -> SpanType) -> ExitSpan -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ExitSpan -> SpanType
spanType
traceId :: ExitSpan -> Id
traceId :: ExitSpan -> Id
traceId exitSpan :: ExitSpan
exitSpan =
EntrySpan -> Id
EntrySpan.traceId (EntrySpan -> Id) -> EntrySpan -> Id
forall a b. (a -> b) -> a -> b
$ ExitSpan -> EntrySpan
parentSpan ExitSpan
exitSpan
parentId :: ExitSpan -> Id
parentId :: ExitSpan -> Id
parentId exitSpan :: ExitSpan
exitSpan =
EntrySpan -> Id
EntrySpan.spanId (EntrySpan -> Id) -> EntrySpan -> Id
forall a b. (a -> b) -> a -> b
$ ExitSpan -> EntrySpan
parentSpan ExitSpan
exitSpan
addToErrorCount :: Int -> ExitSpan -> ExitSpan
addToErrorCount :: Int -> ExitSpan -> ExitSpan
addToErrorCount increment :: Int
increment exitSpan :: ExitSpan
exitSpan =
let
ec :: Int
ec = ExitSpan -> Int
errorCount ExitSpan
exitSpan
in
ExitSpan
exitSpan { errorCount :: Int
errorCount = Int
ec Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
increment }
setServiceName :: Text -> ExitSpan -> ExitSpan
setServiceName :: Text -> ExitSpan -> ExitSpan
setServiceName serviceName_ :: Text
serviceName_ exitSpan :: ExitSpan
exitSpan =
ExitSpan
exitSpan { serviceName :: Maybe Text
serviceName = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
serviceName_ }
setW3cTraceContext :: W3CTraceContext -> ExitSpan -> ExitSpan
setW3cTraceContext :: W3CTraceContext -> ExitSpan -> ExitSpan
setW3cTraceContext w3cTraceContext_ :: W3CTraceContext
w3cTraceContext_ exitSpan :: ExitSpan
exitSpan =
ExitSpan
exitSpan { w3cTraceContext :: W3CTraceContext
w3cTraceContext = W3CTraceContext
w3cTraceContext_ }
addAnnotation :: Annotation -> ExitSpan -> ExitSpan
addAnnotation :: Annotation -> ExitSpan -> ExitSpan
addAnnotation annotation :: Annotation
annotation exitSpan :: ExitSpan
exitSpan =
ExitSpan
exitSpan { spanData :: SpanData
spanData = Annotation -> SpanData -> SpanData
SpanData.merge Annotation
annotation (SpanData -> SpanData) -> SpanData -> SpanData
forall a b. (a -> b) -> a -> b
$ ExitSpan -> SpanData
spanData ExitSpan
exitSpan }