haxl-2.4.0.0: Haxl/Core.hs
-- Copyright (c) 2014-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is distributed under the terms of a BSD license,
-- found in the LICENSE file.
-- | Everything needed to define data sources and to invoke the
-- engine.
--
{-# LANGUAGE CPP #-}
module Haxl.Core (
-- * The monad and operations
GenHaxl (..), runHaxl, runHaxlWithWrites
-- ** Env
, Env(..), Caches, caches
-- *** Operations in the monad
, env, withEnv, withLabel
-- *** Building the Env
, initEnvWithData, initEnv, emptyEnv, sanitizeEnv
-- *** Building the StateStore
, StateStore, stateGet, stateSet, stateEmpty
-- ** Writes inside the monad
, tellWrite, tellWriteNoMemo
-- ** Exceptions
, throw, catch, catchIf, try, tryToHaxlException
-- ** Data fetching and caching
, dataFetch, uncachedRequest
, cacheRequest, dupableCacheRequest, cacheResult, cacheResultWithShow
, cachedComputation, preCacheComputation
, dumpCacheAsHaskell
-- ** Memoization
, newMemo, newMemoWith, prepareMemo, runMemo
, memo, memoUnique, memoize, memoize1, memoize2
, memoFingerprint, MemoFingerprintKey(..)
-- ** Conditionals
, pAnd, pOr, unsafeChooseFirst
-- ** Statistics
, Stats(..)
, FetchStats(..)
, CallId
, Microseconds
, Timestamp
, emptyStats
, numFetches
, ppStats
, ppFetchStats
, aggregateFetchBatches
, Profile(..)
, ProfileMemo(..)
, ProfileFetch(..)
, emptyProfile
, ProfileLabel
, ProfileKey
, ProfileData(..)
, emptyProfileData
, AllocCount
, LabelHitCount
-- * Report flags
, ReportFlag(..)
, ReportFlags
, defaultReportFlags
, profilingReportFlags
, setReportFlag
, clearReportFlag
, testReportFlag
-- ** Flags
, Flags(..)
, defaultFlags
, ifTrace
, ifReport
, ifProfiling
-- * Building data sources
, DataSource(..)
, ShowP(..)
, DataSourceName(..)
, Request
, BlockedFetch(..)
, PerformFetch(..)
, StateKey(..)
, SchedulerHint(..)
, FailureClassification(..)
-- ** Result variables
, ResultVar(..)
, mkResultVar
, putFailure
, putResult
, putSuccess
, putResultFromChildThread
, putResultWithStats
, putResultWithStatsFromChildThread
, DataSourceStats(..)
-- ** Default fetch implementations
, asyncFetch, asyncFetchWithDispatch, asyncFetchAcquireRelease
, backgroundFetchSeq, backgroundFetchPar
, backgroundFetchAcquireRelease, backgroundFetchAcquireReleaseMVar
, stubFetch
, syncFetch
-- ** Utilities
, except
, setError
, getMapFromRCMap
-- * Exceptions
, module Haxl.Core.Exception
-- * Recording the function callgraph
, module Haxl.Core.CallGraph
) where
import Haxl.Core.CallGraph
import Haxl.Core.DataSource
import Haxl.Core.Flags
import Haxl.Core.Memo
import Haxl.Core.Monad hiding (unsafeLiftIO {- Ask nicely to get this! -})
import Haxl.Core.Fetch
import Haxl.Core.Parallel
import Haxl.Core.Profile
import Haxl.Core.Run
import Haxl.Core.Stats
import Haxl.Core.Exception
import Haxl.Core.RequestStore (getMapFromRCMap)
import Haxl.Core.ShowP (ShowP(..))
import Haxl.Core.StateStore