semaphore-compat-2.0.0: src/System/Semaphore/Internal/Unsupported.hs
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE LambdaCase #-}
-- | Stub backend for wasm and targets without POSIX/Win32 sockets/semaphores.
module System.Semaphore.Internal.Unsupported
( ClientSemaphore, ServerSemaphore
, clientSemaphoreName, serverClientSemaphore
, SemaphoreToken
, create_sem, open_sem_raw
, waitOnSemaphore, tryWaitOnSemaphore
, releaseSemaphoreToken
, destroyClientSemaphore, destroyServerSemaphore
, getSemaphoreValue
, getTimeSeed
) where
import Control.Exception ( IOException )
import GHC.IO.Exception ( unsupportedOperation )
import System.IO.Error ( ioeSetLocation )
import System.Semaphore.Internal.Common
data ClientSemaphore
data ServerSemaphore
data SemaphoreToken
clientSemaphoreName :: ClientSemaphore -> SemaphoreName
clientSemaphoreName = \case {}
serverClientSemaphore :: ServerSemaphore -> ClientSemaphore
serverClientSemaphore = \case {}
unsupported :: String -> IOException
unsupported op = ioeSetLocation unsupportedOperation ("semaphore-compat." ++ op)
create_sem :: SemaphoreName -> Int -> IO (Either SemaphoreError ServerSemaphore)
create_sem _ _ =
return $ Left $ SemaphoreOtherError $ unsupported "createSemaphore"
open_sem_raw :: SemaphoreName -> IO (Either SemaphoreError ClientSemaphore)
open_sem_raw _ =
return $ Left $ SemaphoreOtherError $ unsupported "openSemaphore"
waitOnSemaphore :: ClientSemaphore -> IO SemaphoreToken
waitOnSemaphore = \case {}
tryWaitOnSemaphore :: ClientSemaphore -> IO (Maybe SemaphoreToken)
tryWaitOnSemaphore = \case {}
releaseSemaphoreToken :: SemaphoreToken -> IO ()
releaseSemaphoreToken = \case {}
destroyClientSemaphore :: ClientSemaphore -> IO ()
destroyClientSemaphore = \case {}
destroyServerSemaphore :: ServerSemaphore -> IO ()
destroyServerSemaphore = \case {}
getSemaphoreValue :: ServerSemaphore -> IO Int
getSemaphoreValue = \case {}
getTimeSeed :: IO Int
getTimeSeed =
ioError $ unsupported "getTimeSeed"