mirror of
https://github.com/haskell-nix/hnix-store.git
synced 2024-10-26 21:56:29 +03:00
remote: also include what was parsed (via Show) in incremental parser errors
This commit is contained in:
parent
6ebc2fcc5b
commit
f1f30af6d5
@ -98,6 +98,7 @@ doReq
|
||||
. ( MonadIO m
|
||||
, MonadRemoteStore m
|
||||
, StoreReply a
|
||||
, Show a
|
||||
)
|
||||
=> StoreRequest a
|
||||
-> m a
|
||||
|
@ -41,7 +41,10 @@ processOutput = do
|
||||
sockGet8 >>= go . (decoder protoVersion)
|
||||
|
||||
Control.Monad.unless (leftover == mempty) $
|
||||
throwError $ RemoteStoreError_LoggerLeftovers leftover
|
||||
throwError
|
||||
$ RemoteStoreError_LoggerLeftovers
|
||||
(show ectrl)
|
||||
leftover
|
||||
|
||||
case ectrl of
|
||||
Left e -> throwError $ RemoteStoreError_SerializerLogger e
|
||||
|
@ -46,14 +46,14 @@ data RemoteStoreError
|
||||
| RemoteStoreError_ClientVersionTooOld
|
||||
| RemoteStoreError_Disconnected
|
||||
| RemoteStoreError_GetAddrInfoFailed
|
||||
| RemoteStoreError_GenericIncrementalLeftovers ByteString -- when there are bytes left over after genericIncremental parser is done
|
||||
| RemoteStoreError_GenericIncrementalLeftovers String ByteString -- when there are bytes left over after genericIncremental parser is done, (Done x leftover), first param is show x
|
||||
| RemoteStoreError_GenericIncrementalFail String ByteString -- when genericIncremental parser returns ((Fail msg leftover) :: Result)
|
||||
| RemoteStoreError_SerializerGet SError
|
||||
| RemoteStoreError_SerializerHandshake HandshakeSError
|
||||
| RemoteStoreError_SerializerLogger LoggerSError
|
||||
| RemoteStoreError_SerializerPut SError
|
||||
| RemoteStoreError_IOException SomeException
|
||||
| RemoteStoreError_LoggerLeftovers ByteString -- when there are bytes left over after incremental logger parser is done
|
||||
| RemoteStoreError_LoggerLeftovers String ByteString -- when there are bytes left over after incremental logger parser is done, (Done x leftover), first param is show x
|
||||
| RemoteStoreError_LoggerParserFail String ByteString -- when incremental parser returns ((Fail msg leftover) :: Result)
|
||||
| RemoteStoreError_NoDataProvided
|
||||
| RemoteStoreError_NoNarSourceProvided
|
||||
|
@ -22,6 +22,7 @@ import qualified Data.Serialize.Get
|
||||
genericIncremental
|
||||
:: ( MonadIO m
|
||||
, MonadError RemoteStoreError m
|
||||
, Show a
|
||||
)
|
||||
=> m ByteString
|
||||
-> Get a
|
||||
@ -30,9 +31,10 @@ genericIncremental getsome parser = do
|
||||
getsome >>= go . decoder
|
||||
where
|
||||
decoder = Data.Serialize.Get.runGetPartial parser
|
||||
go (Done _ leftover) | leftover /= mempty =
|
||||
go (Done x leftover) | leftover /= mempty =
|
||||
throwError
|
||||
$ RemoteStoreError_GenericIncrementalLeftovers
|
||||
(show x)
|
||||
leftover
|
||||
|
||||
go (Done x _leftover) = pure x
|
||||
@ -99,6 +101,8 @@ sockGetS
|
||||
, MonadError e m
|
||||
, MonadReader r m
|
||||
, MonadIO m
|
||||
, Show a
|
||||
, Show e
|
||||
)
|
||||
=> NixSerializer r e a
|
||||
-> m a
|
||||
@ -114,19 +118,19 @@ sockGetS s = do
|
||||
-- * Obsolete
|
||||
|
||||
getSocketIncremental
|
||||
:: MonadRemoteStore m
|
||||
:: (MonadRemoteStore m, Show a)
|
||||
=> Get a
|
||||
-> m a
|
||||
getSocketIncremental = genericIncremental sockGet8
|
||||
|
||||
sockGet
|
||||
:: MonadRemoteStore m
|
||||
:: (MonadRemoteStore m, Show a)
|
||||
=> Get a
|
||||
-> m a
|
||||
sockGet = getSocketIncremental
|
||||
|
||||
sockGetInt
|
||||
:: (Integral a, MonadRemoteStore m)
|
||||
:: (Integral a, MonadRemoteStore m, Show a)
|
||||
=> m a
|
||||
sockGetInt = getSocketIncremental getInt
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user