{-# LANGUAGE DeriveGeneric #-}
module Instana.SDK.Span.RootEntry
( RootEntry(..)
, spanId
, traceId
, addAnnotation
, addToErrorCount
, setServiceName
, setCorrelationType
, setCorrelationId
, setSynthetic
, 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.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 RootEntry =
RootEntry
{
RootEntry -> Id
spanAndTraceId :: Id
, RootEntry -> SpanType
spanType :: SpanType
, RootEntry -> Int
timestamp :: Int
, RootEntry -> Int
errorCount :: Int
, RootEntry -> Maybe Text
serviceName :: Maybe Text
, RootEntry -> Bool
synthetic :: Bool
, RootEntry -> Maybe Text
correlationType :: Maybe Text
, RootEntry -> Maybe Text
correlationId :: Maybe Text
, RootEntry -> SpanData
spanData :: SpanData
, RootEntry -> Maybe W3CTraceContext
w3cTraceContext :: Maybe W3CTraceContext
} deriving (RootEntry -> RootEntry -> Bool
(RootEntry -> RootEntry -> Bool)
-> (RootEntry -> RootEntry -> Bool) -> Eq RootEntry
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RootEntry -> RootEntry -> Bool
$c/= :: RootEntry -> RootEntry -> Bool
== :: RootEntry -> RootEntry -> Bool
$c== :: RootEntry -> RootEntry -> Bool
Eq, (forall x. RootEntry -> Rep RootEntry x)
-> (forall x. Rep RootEntry x -> RootEntry) -> Generic RootEntry
forall x. Rep RootEntry x -> RootEntry
forall x. RootEntry -> Rep RootEntry x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RootEntry x -> RootEntry
$cfrom :: forall x. RootEntry -> Rep RootEntry x
Generic, Int -> RootEntry -> ShowS
[RootEntry] -> ShowS
RootEntry -> String
(Int -> RootEntry -> ShowS)
-> (RootEntry -> String)
-> ([RootEntry] -> ShowS)
-> Show RootEntry
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RootEntry] -> ShowS
$cshowList :: [RootEntry] -> ShowS
show :: RootEntry -> String
$cshow :: RootEntry -> String
showsPrec :: Int -> RootEntry -> ShowS
$cshowsPrec :: Int -> RootEntry -> ShowS
Show)
spanName :: RootEntry -> Text
spanName :: RootEntry -> Text
spanName = SpanType -> Text
SpanType.spanName (SpanType -> Text) -> (RootEntry -> SpanType) -> RootEntry -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RootEntry -> SpanType
spanType
traceId :: RootEntry -> Id
traceId :: RootEntry -> Id
traceId = RootEntry -> Id
spanAndTraceId
spanId :: RootEntry -> Id
spanId :: RootEntry -> Id
spanId = RootEntry -> Id
spanAndTraceId
addToErrorCount :: Int -> RootEntry -> RootEntry
addToErrorCount :: Int -> RootEntry -> RootEntry
addToErrorCount increment :: Int
increment rootEntry :: RootEntry
rootEntry =
let
ec :: Int
ec = RootEntry -> Int
errorCount RootEntry
rootEntry
in
RootEntry
rootEntry { errorCount :: Int
errorCount = Int
ec Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
increment }
setServiceName :: Text -> RootEntry -> RootEntry
setServiceName :: Text -> RootEntry -> RootEntry
setServiceName serviceName_ :: Text
serviceName_ rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { serviceName :: Maybe Text
serviceName = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
serviceName_ }
setW3cTraceContext :: W3CTraceContext -> RootEntry -> RootEntry
setW3cTraceContext :: W3CTraceContext -> RootEntry -> RootEntry
setW3cTraceContext w3cTraceContext_ :: W3CTraceContext
w3cTraceContext_ rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { w3cTraceContext :: Maybe W3CTraceContext
w3cTraceContext = W3CTraceContext -> Maybe W3CTraceContext
forall a. a -> Maybe a
Just W3CTraceContext
w3cTraceContext_ }
setSynthetic :: Bool -> RootEntry -> RootEntry
setSynthetic :: Bool -> RootEntry -> RootEntry
setSynthetic synthetic_ :: Bool
synthetic_ rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { synthetic :: Bool
synthetic = Bool
synthetic_ }
setCorrelationType :: Text -> RootEntry -> RootEntry
setCorrelationType :: Text -> RootEntry -> RootEntry
setCorrelationType correlationType_ :: Text
correlationType_ rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { correlationType :: Maybe Text
correlationType = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
correlationType_ }
setCorrelationId :: Text -> RootEntry -> RootEntry
setCorrelationId :: Text -> RootEntry -> RootEntry
setCorrelationId correlationId_ :: Text
correlationId_ rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { correlationId :: Maybe Text
correlationId = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
correlationId_ }
addAnnotation :: Annotation -> RootEntry -> RootEntry
addAnnotation :: Annotation -> RootEntry -> RootEntry
addAnnotation annotation :: Annotation
annotation rootEntry :: RootEntry
rootEntry =
RootEntry
rootEntry { spanData :: SpanData
spanData = Annotation -> SpanData -> SpanData
SpanData.merge Annotation
annotation (SpanData -> SpanData) -> SpanData -> SpanData
forall a b. (a -> b) -> a -> b
$ RootEntry -> SpanData
spanData RootEntry
rootEntry }