Привет! Я хочу использовать следующую библиотеку в Haskell для передачи файлов между узлами: https://hackage.haskell.org/package/sendfile-0.7.11.1/docs/Network-Socket-SendFile.html
Я хочу иметь возможность прервать sendFile
, если файл в основном был перенесен другим узлом ...
Я думал об использовании итерируемого, как в этом примере:
runIter :: IO Iter -> IO ()
runIter iter =
do r <- iter
case r of
(Done _n) -> return ()
(Sent _n cont) -> runIter cont
(WouldBlock _n fd cont) ->
do threadWaitWrite fd
runIter cont
Мой вопрос: как я могу прервать этот перевод?
Я думал о том, чтобы сделать что-то вроде этого:
(Sent _n cont) -> return ()
или (Sent _n cont) -> error "Already downloaded (Abort)"
По сути, клиент мог узнать, что вызов был прерван ...
В библиотеке ничего не объясняется для реализации такого поведения ...