decode_c converted to ByteString
This speeds up a few things, notably CmdLine.Seek using Git.Filename which uses decode_c and this avoids a conversion to String and back, and probably the ByteString implementation of decode_c is also faster for simple cases at least than the string version. encode_c cannot be converted to ByteString (or if it did, it would have to convert right back to String in order to handle unicode). Sponsored-by: Brock Spratlen on Patreon
This commit is contained in:
parent
f0b1034f8f
commit
371d4f8183
4 changed files with 57 additions and 36 deletions
|
@ -15,6 +15,7 @@ import Utility.Format
|
|||
import Utility.Metered (TotalSize(..))
|
||||
|
||||
import Data.Char
|
||||
import qualified Data.ByteString.Lazy as L
|
||||
|
||||
-- Sent to start a transfer.
|
||||
data TransferRequest
|
||||
|
@ -106,9 +107,9 @@ instance Proto.Sendable TransferResponse where
|
|||
|
||||
instance Proto.Receivable TransferResponse where
|
||||
parseCommand "om" = Proto.parse1 $
|
||||
TransferOutput . OutputMessage . encodeBS . decode_c
|
||||
TransferOutput . OutputMessage . decode_c . encodeBS
|
||||
parseCommand "oe" = Proto.parse1 $
|
||||
TransferOutput . OutputError . decode_c
|
||||
TransferOutput . OutputError . decodeBS . decode_c . encodeBS
|
||||
parseCommand "opb" = Proto.parse0 $
|
||||
TransferOutput BeginProgressMeter
|
||||
parseCommand "ops" = Proto.parse1 $
|
||||
|
@ -122,7 +123,7 @@ instance Proto.Receivable TransferResponse where
|
|||
parseCommand "opre" = Proto.parse0 $
|
||||
TransferOutput EndPrompt
|
||||
parseCommand "oj" = Proto.parse1 $
|
||||
TransferOutput . JSONObject . encodeBL . decode_c
|
||||
TransferOutput . JSONObject . L.fromStrict . decode_c . encodeBS
|
||||
parseCommand "t" = Proto.parse0 $
|
||||
TransferResult True
|
||||
parseCommand "f" = Proto.parse0 $
|
||||
|
@ -143,7 +144,7 @@ instance Proto.Serializable TransferRemote where
|
|||
serialize (TransferRemoteName r) = 'r':encode_c' isSpace r
|
||||
|
||||
deserialize ('u':u) = Just (TransferRemoteUUID (toUUID u))
|
||||
deserialize ('r':r) = Just (TransferRemoteName (decode_c r))
|
||||
deserialize ('r':r) = Just (TransferRemoteName (decodeBS (decode_c (encodeBS r))))
|
||||
deserialize _ = Nothing
|
||||
|
||||
instance Proto.Serializable TransferAssociatedFile where
|
||||
|
@ -156,4 +157,4 @@ instance Proto.Serializable TransferAssociatedFile where
|
|||
deserialize "" = Just $ TransferAssociatedFile $
|
||||
AssociatedFile Nothing
|
||||
deserialize s = Just $ TransferAssociatedFile $
|
||||
AssociatedFile $ Just $ toRawFilePath $ decode_c s
|
||||
AssociatedFile $ Just $ decode_c $ encodeBS s
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue