MPD: IcyInputStream Class Reference

MPD 0.20.18

Public Member Functions
IcyInputStream Class Referencefinal

An InputStream filter that parses Icy metadata. More...

`#include <IcyInputStream.hxx>`

Inheritance diagram for IcyInputStream:
[legend]
Collaboration diagram for IcyInputStream:
[legend]

## Public Member Functions
| IcyInputStream (InputStream *_input)
virtual | ~IcyInputStream ()
| IcyInputStream (const IcyInputStream &)=delete
IcyInputStream & | operator= (const IcyInputStream &)=delete
void | Enable (size_t _data_size)
bool | IsEnabled () const
void | Update () override
| Update the public attributes. More...
Tag * | ReadTag () override
| Reads the tag from the stream. More...
size_t | Read (void *ptr, size_t size) override
| Reads data from the stream into the caller-supplied buffer. More...
Public Member Functions inherited from ProxyInputStream
gcc_nonnull_all | ProxyInputStream (InputStream *_input)
virtual | ~ProxyInputStream ()
| ProxyInputStream (const ProxyInputStream &)=delete
ProxyInputStream & | operator= (const ProxyInputStream &)=delete
void | Check () override
| Check for errors that may have occurred in the I/O thread. More...
void | Update () override
| Update the public attributes. More...
void | Seek (offset_type new_offset) override
| Seeks to the specified position in the stream. More...
bool | IsEOF () noexcept override
| Returns true if the stream has reached end-of-file. More...
Tag * | ReadTag () override
| Reads the tag from the stream. More...
bool | IsAvailable () noexcept override
| Returns true if the next read operation will not block: either data is available, or end-of-stream has been reached, or an error has occurred. More...
size_t | Read (void *ptr, size_t read_size) override
| Reads data from the stream into the caller-supplied buffer. More...
Public Member Functions inherited from InputStream
| InputStream (const char *_uri, Mutex &_mutex, Cond &_cond)
virtual | ~InputStream ()
| Close the input stream and free resources. More...
const char * | GetURI () const
| The absolute URI which was used to open this stream. More...
void | Lock ()
void | Unlock ()
void | SetReady ()
bool | IsReady () const
| Return whether the stream is ready for reading and whether the other attributes in this struct are valid. More...
void | WaitReady ()
void | LockWaitReady ()
| Wrapper for WaitReady() which locks and unlocks the mutex; the caller must not be holding it already. More...
gcc_pure bool | HasMimeType () const noexcept
gcc_pure const char * | GetMimeType () const noexcept
void | ClearMimeType () noexcept
gcc_nonnull_all void | SetMimeType (const char *_mime)
void | SetMimeType (std::string &&_mime)
gcc_pure bool | KnownSize () const noexcept
gcc_pure offset_type | GetSize () const noexcept
void | AddOffset (offset_type delta) noexcept
gcc_pure offset_type | GetOffset () const noexcept
gcc_pure offset_type | GetRest () const noexcept
gcc_pure bool | IsSeekable () const noexcept
gcc_pure bool | CheapSeeking () const noexcept
| Determines whether seeking is cheap. More...
void | LockSeek (offset_type offset)
| Wrapper for Seek() which locks and unlocks the mutex; the caller must not be holding it already. More...
void | Rewind ()
| Rewind to the beginning of the stream. More...
void | LockRewind ()
void | Skip (offset_type _offset)
| Skip input bytes. More...
void | LockSkip (offset_type _offset)
gcc_pure bool | LockIsEOF () noexcept
| Wrapper for IsEOF() which locks and unlocks the mutex; the caller must not be holding it already. More...
gcc_malloc Tag * | LockReadTag ()
| Wrapper for ReadTag() which locks and unlocks the mutex; the caller must not be holding it already. More...
gcc_nonnull_all size_t | LockRead (void *ptr, size_t size)
| Wrapper for Read() which locks and unlocks the mutex; the caller must not be holding it already. More...
gcc_nonnull_all void | ReadFull (void *ptr, size_t size)
| Reads the whole data from the stream into the caller-supplied buffer. More...
gcc_nonnull_all void | LockReadFull (void *ptr, size_t size)
| Wrapper for ReadFull() which locks and unlocks the mutex; the caller must not be holding it already. More...

## Additional Inherited Members
Public Types inherited from InputStream
typedef ::offset_type | offset_type
Static Public Member Functions inherited from InputStream
static gcc_nonnull_all InputStreamPtr | Open (const char *uri, Mutex &mutex, Cond &cond)
| Opens a new input stream. More...
static gcc_nonnull_all InputStreamPtr | OpenReady (const char *uri, Mutex &mutex, Cond &cond)
| Just like Open(), but waits for the stream to become ready. More...
Data Fields inherited from InputStream
Mutex & | mutex
| A mutex that protects the mutable attributes of this object and its implementation. More...
Cond & | cond
| A cond that gets signalled when the state of this object changes from the I/O thread. More...
Protected Member Functions inherited from ProxyInputStream
void | CopyAttributes ()
| Copy public attributes from the underlying input stream to the "rewind" input stream. More...
Protected Attributes inherited from ProxyInputStream
InputStream & | input
Protected Attributes inherited from InputStream
bool | ready
| indicates whether the stream is ready for reading and whether the other attributes in this struct are valid More...
bool | seekable
| if true, then the stream is fully seekable More...
offset_type | size
| the size of the resource, or UNKNOWN_SIZE if unknown More...
offset_type | offset
| the current offset within the stream More...
Static Protected Attributes inherited from InputStream
static constexpr offset_type | UNKNOWN_SIZE = -1

## Detailed Description

An InputStream filter that parses Icy metadata.

Definition at line 32 of file IcyInputStream.hxx.

## Constructor & Destructor Documentation

## ◆ IcyInputStream() [1/2]

IcyInputStream::IcyInputStream | ( | InputStream * | _input | ) |

## ◆ ~IcyInputStream()

virtual IcyInputStream::~IcyInputStream | ( |  | ) |
| virtual

## ◆ IcyInputStream() [2/2]

IcyInputStream::IcyInputStream | ( | const IcyInputStream & |  | ) |
| delete

## Member Function Documentation

## ◆ Enable()

void IcyInputStream::Enable | ( | size_t | _data_size | ) |
| inline

Definition at line 54 of file IcyInputStream.hxx.

## ◆ IsEnabled()

bool IcyInputStream::IsEnabled | ( |  | ) | const
| inline

Definition at line 58 of file IcyInputStream.hxx.

## ◆ operator=()

IcyInputStream& IcyInputStream::operator= | ( | const IcyInputStream & |  | ) |
| delete

## ◆ Read()

size_t IcyInputStream::Read | ( | void * | ptr,
|  | size_t | size
| ) |  |
| overridevirtual

Reads data from the stream into the caller-supplied buffer.

Returns 0 on error or eof (check with IsEOF()).

The caller must lock the mutex.

Throws std::runtime_error on error.

Parameters

  ptr | the buffer to read into
  size | the maximum number of bytes to read

Returns
  the number of bytes read

Implements InputStream.

## ◆ ReadTag()

Tag* IcyInputStream::ReadTag | ( |  | ) |
| overridevirtual

Reads the tag from the stream.

The caller must lock the mutex.

Returns
  a tag object which must be freed by the caller, or nullptr if the tag has not changed since the last call

Reimplemented from InputStream.

## ◆ Update()

void IcyInputStream::Update | ( |  | ) |
| overridevirtual

Update the public attributes.

Call before accessing attributes such as "ready" or "offset".

Reimplemented from InputStream.

The documentation for this class was generated from the following file:

- input/IcyInputStream.hxx