base-4.7.0.0: Basic libraries

Copyright(c) The University of Glasgow 2008
Licensesee libraries/base/LICENSE
Maintainercvs-ghc@haskell.org
Stabilityinternal
Portabilitynon-portable (GHC Extensions)
Safe HaskellTrustworthy
LanguageHaskell2010

GHC.IO.BufferedIO

Description

Class of buffered IO devices

Synopsis

Documentation

class BufferedIO dev where Source

The purpose of BufferedIO is to provide a common interface for I/O devices that can read and write data through a buffer. Devices that implement BufferedIO include ordinary files, memory-mapped files, and bytestrings. The underlying device implementing a Handle must provide BufferedIO.

Methods

newBuffer ∷ dev → BufferStateIO (Buffer Word8) Source

allocate a new buffer. The size of the buffer is at the discretion of the device; e.g. for a memory-mapped file the buffer will probably cover the entire file.

fillReadBuffer ∷ dev → Buffer Word8IO (Int, Buffer Word8) Source

reads bytes into the buffer, blocking if there are no bytes available. Returns the number of bytes read (zero indicates end-of-file), and the new buffer.

fillReadBuffer0 ∷ dev → Buffer Word8IO (Maybe Int, Buffer Word8) Source

reads bytes into the buffer without blocking. Returns the number of bytes read (Nothing indicates end-of-file), and the new buffer.

emptyWriteBuffer ∷ dev → Buffer Word8IO (Buffer Word8) Source

Prepares an empty write buffer. This lets the device decide how to set up a write buffer: the buffer may need to point to a specific location in memory, for example. This is typically used by the client when switching from reading to writing on a buffered read/write device.

There is no corresponding operation for read buffers, because before reading the client will always call fillReadBuffer.

flushWriteBuffer ∷ dev → Buffer Word8IO (Buffer Word8) Source

Flush all the data from the supplied write buffer out to the device. The returned buffer should be empty, and ready for writing.

flushWriteBuffer0 ∷ dev → Buffer Word8IO (Int, Buffer Word8) Source

Flush data from the supplied write buffer out to the device without blocking. Returns the number of bytes written and the remaining buffer.

readBufRawIO dev ⇒ dev → Buffer Word8IO (Int, Buffer Word8) Source

writeBufRawIO dev ⇒ dev → Buffer Word8IO (Buffer Word8) Source