{-# LINE 1 "src/System/Metrics/Prometheus/Ridley/Metrics/Network/Types.hsc" #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module System.Metrics.Prometheus.Ridley.Metrics.Network.Types where

import qualified Data.Map as Map
import           Data.Map.Strict as M
import qualified Data.Text as T
import           Foreign.C.String
import           Foreign.C.Types
import           Foreign.Ptr
import           Foreign.Storable (Storable(..))
import           Language.C.Inline.Context
import qualified Language.C.Types as C
import qualified Language.Haskell.TH as TH
import qualified System.Metrics.Prometheus.Metric.Gauge as P


{-# LINE 24 "src/System/Metrics/Prometheus/Ridley/Metrics/Network/Types.hsc" #-}



data IfData = IfData {

{-# LINE 41 "src/System/Metrics/Prometheus/Ridley/Metrics/Network/Types.hsc" #-}
    ifi_ipackets :: {-# UNPACK #-} !Int
  , ifi_opackets :: {-# UNPACK #-} !Int
  , ifi_ierrors  :: {-# UNPACK #-} !Int
  , ifi_oerrors  :: {-# UNPACK #-} !Int
  , ifi_ibytes   :: {-# UNPACK #-} !Int
  , ifi_obytes   :: {-# UNPACK #-} !Int
  , ifi_imcasts  :: {-# UNPACK #-} !Int
  , ifi_omcasts  :: {-# UNPACK #-} !Int
  , ifi_iqdrops  :: {-# UNPACK #-} !Int
  , ifi_name     :: !String
  , ifi_error    :: {-# UNPACK #-} !Int

{-# LINE 53 "src/System/Metrics/Prometheus/Ridley/Metrics/Network/Types.hsc" #-}
  } deriving Show



{-# LINE 110 "src/System/Metrics/Prometheus/Ridley/Metrics/Network/Types.hsc" #-}

--------------------------------------------------------------------------------
type NetworkMetrics = M.Map T.Text NetworkMetric

--------------------------------------------------------------------------------
data NetworkMetric = NetworkMetric {
    receive_packets     :: P.Gauge
  , transmit_packets    :: P.Gauge
  , receive_errs        :: P.Gauge
  , transmit_errs       :: P.Gauge
  , receive_bytes       :: P.Gauge
  , transmit_bytes      :: P.Gauge
  , receive_multicast   :: P.Gauge
  , transmit_multicast  :: P.Gauge
  , receive_drop        :: P.Gauge
  }