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
 
IcyInputStreamoperator= (const IcyInputStream &)=delete
 
void Enable (size_t _data_size)
 
bool IsEnabled () const
 
void Update () override
 Update the public attributes. More...
 
TagReadTag () 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
 
ProxyInputStreamoperator= (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 () noexceptoverride
 Returns true if the stream has reached end-of-file. More...
 
TagReadTag () override
 Reads the tag from the stream. More...
 
bool IsAvailable () noexceptoverride
 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 TagLockReadTag ()
 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
Mutexmutex
 A mutex that protects the mutable attributes of this object and its implementation. More...
 
Condcond
 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
InputStreaminput
 
- 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::IcyInputStream ( InputStream _input)
virtual IcyInputStream::~IcyInputStream ( )
virtual
IcyInputStream::IcyInputStream ( const IcyInputStream )
delete

Member Function Documentation

void IcyInputStream::Enable ( size_t  _data_size)
inline

Definition at line 54 of file IcyInputStream.hxx.

bool IcyInputStream::IsEnabled ( ) const
inline

Definition at line 58 of file IcyInputStream.hxx.

IcyInputStream& IcyInputStream::operator= ( const IcyInputStream )
delete
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
ptrthe buffer to read into
sizethe maximum number of bytes to read
Returns
the number of bytes read

Implements InputStream.

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.

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: