Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
nix::BufferedSource Struct Referenceabstract

#include <serialise.hh>

Inheritance diagram for nix::BufferedSource:
nix::Source nix::FdSource nix::daemon::TunnelSource

Public Member Functions

 BufferedSource (size_t bufSize=32 *1024)
size_t read (char *data, size_t len) override
bool hasData ()
Public Member Functions inherited from nix::Source
void operator() (char *data, size_t len)
virtual bool good ()
void drainInto (Sink &sink)
std::string drain ()

Public Attributes

size_t bufSize
size_t bufPosIn
size_t bufPosOut
std::unique_ptr< char[]> buffer

Protected Member Functions

virtual size_t readUnbuffered (char *data, size_t len)=0

Detailed Description

A buffered abstract source. Warning: a BufferedSource should not be used from multiple threads concurrently.

Member Function Documentation

◆ read()

size_t nix::BufferedSource::read ( char * data,
size_t len )
overridevirtual

Store up to ‘len’ in the buffer pointed to by ‘data’, and return the number of bytes stored. It blocks until at least one byte is available.

Should not return 0 (generally you want to throw EndOfFile), but nothing stops that.

Exceptions
EndOfFileif there is no more data.

Implements nix::Source.

◆ readUnbuffered()

virtual size_t nix::BufferedSource::readUnbuffered ( char * data,
size_t len )
protectedpure virtual

Underlying read call, to be overridden.

Implemented in nix::daemon::TunnelSource, and nix::FdSource.


The documentation for this struct was generated from the following files: