agent: separate type for agent file errors (#1185)

This commit is contained in:
spaced4ndy
2024-06-05 18:44:32 +04:00
committed by GitHub
parent 3d605310ed
commit 3c0cd7efcc
10 changed files with 105 additions and 56 deletions
+1
View File
@@ -148,6 +148,7 @@ import Data.Word (Word16)
import Simplex.FileTransfer.Agent (closeXFTPAgent, deleteSndFileInternal, deleteSndFileRemote, deleteSndFilesInternal, deleteSndFilesRemote, startXFTPWorkers, toFSFilePath, xftpDeleteRcvFile', xftpDeleteRcvFiles', xftpReceiveFile', xftpSendDescription', xftpSendFile')
import Simplex.FileTransfer.Description (ValidFileDescription)
import Simplex.FileTransfer.Protocol (FileParty (..))
import Simplex.FileTransfer.Types (RcvFileId, SndFileId)
import Simplex.FileTransfer.Util (removePath)
import Simplex.Messaging.Agent.Client
import Simplex.Messaging.Agent.Env.SQLite
@@ -105,7 +105,6 @@ data AgentConfig = AgentConfig
storedMsgDataTTL :: NominalDiffTime,
rcvFilesTTL :: NominalDiffTime,
sndFilesTTL :: NominalDiffTime,
xftpNotifyErrsOnRetry :: Bool,
xftpConsecutiveRetries :: Int,
xftpMaxRecipientsPerRequest :: Int,
deleteErrorCount :: Int,
@@ -176,7 +175,6 @@ defaultAgentConfig =
storedMsgDataTTL = 21 * nominalDay,
rcvFilesTTL = 2 * nominalDay,
sndFilesTTL = nominalDay,
xftpNotifyErrsOnRetry = True,
xftpConsecutiveRetries = 3,
xftpMaxRecipientsPerRequest = 200,
deleteErrorCount = 10,
+9 -6
View File
@@ -115,8 +115,6 @@ module Simplex.Messaging.Agent.Protocol
cryptoErrToSyncState,
ATransmission,
ConnId,
RcvFileId,
SndFileId,
ConfirmationId,
InvitationId,
MsgIntegrity (..),
@@ -169,6 +167,7 @@ import Database.SQLite.Simple.ToField
import Simplex.FileTransfer.Description
import Simplex.FileTransfer.Protocol (FileParty (..))
import Simplex.FileTransfer.Transport (XFTPErrorType)
import Simplex.FileTransfer.Types (FileErrorType)
import Simplex.Messaging.Agent.QueryString
import Simplex.Messaging.Client (ProxyClientError)
import qualified Simplex.Messaging.Crypto as C
@@ -352,9 +351,11 @@ data AEvent (e :: AEntity) where
RFPROG :: Int64 -> Int64 -> AEvent AERcvFile
RFDONE :: FilePath -> AEvent AERcvFile
RFERR :: AgentErrorType -> AEvent AERcvFile
RFWARN :: AgentErrorType -> AEvent AERcvFile
SFPROG :: Int64 -> Int64 -> AEvent AESndFile
SFDONE :: ValidFileDescription 'FSender -> [ValidFileDescription 'FRecipient] -> AEvent AESndFile
SFERR :: AgentErrorType -> AEvent AESndFile
SFWARN :: AgentErrorType -> AEvent AESndFile
deriving instance Eq (AEvent e)
@@ -420,9 +421,11 @@ data AEventTag (e :: AEntity) where
RFDONE_ :: AEventTag AERcvFile
RFPROG_ :: AEventTag AERcvFile
RFERR_ :: AEventTag AERcvFile
RFWARN_ :: AEventTag AERcvFile
SFPROG_ :: AEventTag AESndFile
SFDONE_ :: AEventTag AESndFile
SFERR_ :: AEventTag AESndFile
SFWARN_ :: AEventTag AESndFile
deriving instance Eq (AEventTag e)
@@ -470,9 +473,11 @@ aEventTag = \case
RFPROG {} -> RFPROG_
RFDONE {} -> RFDONE_
RFERR {} -> RFERR_
RFWARN {} -> RFWARN_
SFPROG {} -> SFPROG_
SFDONE {} -> SFDONE_
SFERR {} -> SFERR_
SFWARN {} -> SFWARN_
data QueueDirection = QDRcv | QDSnd
deriving (Eq, Show)
@@ -1077,10 +1082,6 @@ connModeT = \case
-- | SMP agent connection ID.
type ConnId = ByteString
type RcvFileId = ByteString
type SndFileId = ByteString
type ConfirmationId = ByteString
type InvitationId = ByteString
@@ -1316,6 +1317,8 @@ data AgentErrorType
NTF {serverAddress :: String, ntfErr :: ErrorType}
| -- | XFTP protocol errors forwarded to agent clients
XFTP {serverAddress :: String, xftpErr :: XFTPErrorType}
| -- | XFTP agent errors
FILE {fileErr :: FileErrorType}
| -- | SMP proxy errors
PROXY {proxyServer :: String, relayServer :: String, proxyErr :: ProxyClientError}
| -- | XRCP protocol errors forwarded to agent clients
+4 -1
View File
@@ -24,7 +24,7 @@ import Database.SQLite.Simple (ResultError (..), SQLData (..))
import Database.SQLite.Simple.FromField (FieldParser, returnError)
import Database.SQLite.Simple.Internal (Field (..))
import Database.SQLite.Simple.Ok (Ok (Ok))
import Simplex.Messaging.Util ((<$?>))
import Simplex.Messaging.Util (safeDecodeUtf8, (<$?>))
import Text.Read (readMaybe)
base64P :: Parser ByteString
@@ -154,3 +154,6 @@ singleFieldJSON_ objectTag tagModifier =
defaultJSON :: J.Options
defaultJSON = J.defaultOptions {J.omitNothingFields = True}
textP :: Parser String
textP = T.unpack . safeDecodeUtf8 <$> A.takeByteString