module Simplex.FileTransfer.Chunks
  ( serverChunkSizes,
    chunkSize0,
    chunkSize1,
    chunkSize2,
    chunkSize3,
    kb,
    toKB,
    mb,
    gb,
  ) where

import Data.Word (Word32)

serverChunkSizes :: [Word32]
serverChunkSizes :: [Word32]
serverChunkSizes = [Word32
chunkSize0, Word32
chunkSize1, Word32
chunkSize2, Word32
chunkSize3]
{-# INLINE serverChunkSizes #-}

chunkSize0 :: Word32
chunkSize0 :: Word32
chunkSize0 = Word32 -> Word32
forall a. Integral a => a -> a
kb Word32
64
{-# INLINE chunkSize0 #-}

chunkSize1 :: Word32
chunkSize1 :: Word32
chunkSize1 = Word32 -> Word32
forall a. Integral a => a -> a
kb Word32
256
{-# INLINE chunkSize1 #-}

chunkSize2 :: Word32
chunkSize2 :: Word32
chunkSize2 = Word32 -> Word32
forall a. Integral a => a -> a
mb Word32
1
{-# INLINE chunkSize2 #-}

chunkSize3 :: Word32
chunkSize3 :: Word32
chunkSize3 = Word32 -> Word32
forall a. Integral a => a -> a
mb Word32
4
{-# INLINE chunkSize3 #-}

kb :: Integral a => a -> a
kb :: forall a. Integral a => a -> a
kb a
n = a
1024 a -> a -> a
forall a. Num a => a -> a -> a
* a
n
{-# INLINE kb #-}

toKB :: Integral a => a -> a
toKB :: forall a. Integral a => a -> a
toKB a
n = a
n a -> a -> a
forall a. Integral a => a -> a -> a
`div` a
1024
{-# INLINE toKB #-}

mb :: Integral a => a -> a
mb :: forall a. Integral a => a -> a
mb a
n = a
1024 a -> a -> a
forall a. Num a => a -> a -> a
* a -> a
forall a. Integral a => a -> a
kb a
n
{-# INLINE mb #-}

gb :: Integral a => a -> a
gb :: forall a. Integral a => a -> a
gb a
n = a
1024 a -> a -> a
forall a. Num a => a -> a -> a
* a -> a
forall a. Integral a => a -> a
mb a
n
{-# INLINE gb #-}