regression of r503

This commit is contained in:
rafael@riseup.net 2013-05-14 15:23:52 +00:00
parent 8227296d5c
commit 6f62a31701
2 changed files with 47 additions and 14 deletions

View File

@ -61,7 +61,8 @@ CastSink :: init ( TcpSocket * socket,
const char * name,
const char * url,
const char * genre,
bool isPublic )
bool isPublic,
unsigned int bufferDuration )
throw ( Exception )
{
this->socket = socket;
@ -72,6 +73,13 @@ CastSink :: init ( TcpSocket * socket,
this->url = url ? Util::strDup( url) : 0;
this->genre = genre ? Util::strDup( genre) : 0;
this->isPublic = isPublic;
this->bufferDuration = bufferDuration;
int bufferSize = bitRate ? (bitRate * 1024 / 8) * bufferDuration
: (128 * 1024 / 8) * bufferDuration;
bufferedSink = socket ? new BufferedSink( socket, bufferSize)
: 0;
}
@ -110,7 +118,7 @@ CastSink :: open ( void ) throw ( Exception )
return false;
}
if ( !getSink()->open() ) {
if ( !bufferedSink->open() ) {
return false;
}

View File

@ -68,11 +68,21 @@ class CastSink : public Sink, public virtual Reporter
*/
Ref<TcpSocket> socket;
/**
* The BufferedSink encapsulating the socket connection to the server.
*/
Ref<BufferedSink> bufferedSink;
/**
* An optional Sink to enable stream dumps.
*/
Ref<Sink> streamDump;
/**
* Duration of the BufferedSink buffer in seconds.
*/
unsigned int bufferDuration;
/**
* Password to the server.
*/
@ -113,6 +123,8 @@ class CastSink : public Sink, public virtual Reporter
* @param genre genre of the stream.
* @param bitRate bitrate of the stream (e.g. mp3 bitrate).
* @param isPublic is the stream public?
* @param bufferDuration duration of the BufferedSink buffer
* in seconds.
* @exception Exception
*/
void
@ -123,7 +135,8 @@ class CastSink : public Sink, public virtual Reporter
const char * name,
const char * url,
const char * genre,
bool isPublic)
bool isPublic,
unsigned int bufferDuration )
throw ( Exception );
/**
@ -165,7 +178,7 @@ class CastSink : public Sink, public virtual Reporter
inline Sink *
getSink ( void ) const throw ()
{
return getSocket();
return bufferedSink.get();
}
/**
@ -193,7 +206,8 @@ class CastSink : public Sink, public virtual Reporter
* @param bitRate bitrate of the stream (e.g. mp3 bitrate).
* @param isPublic is the stream public?
* @param streamDump a Sink to dump the streamed binary data to
*
* @param bufferDuration duration of the BufferedSink buffer
* in seconds.
* @exception Exception
*/
inline
@ -204,7 +218,8 @@ class CastSink : public Sink, public virtual Reporter
const char * url = 0,
const char * genre = 0,
bool isPublic = false,
Sink * streamDump = 0)
Sink * streamDump = 0,
unsigned int bufferDuration = 10 )
throw ( Exception )
{
init( socket,
@ -214,7 +229,8 @@ class CastSink : public Sink, public virtual Reporter
name,
url,
genre,
isPublic );
isPublic,
bufferDuration );
}
/**
@ -233,7 +249,8 @@ class CastSink : public Sink, public virtual Reporter
cs.name,
cs.url,
cs.genre,
cs.isPublic );
cs.isPublic,
cs.bufferDuration );
}
/**
@ -267,7 +284,8 @@ class CastSink : public Sink, public virtual Reporter
cs.name,
cs.url,
cs.genre,
cs.isPublic );
cs.isPublic,
cs.bufferDuration );
}
return *this;
}
@ -290,11 +308,7 @@ class CastSink : public Sink, public virtual Reporter
inline virtual bool
isOpen ( void ) const throw ()
{
Sink *s = getSink();
if (s)
return getSink()->isOpen();
else
return false;
return bufferedSink != NULL ? bufferedSink->isOpen() : false;
}
/**
@ -441,6 +455,17 @@ class CastSink : public Sink, public virtual Reporter
{
return isPublic;
}
/**
* Get the duration of the BufferedSink buffer in seconds.
*
* @return the the duration of the BufferedSink buffer in seconds.
*/
inline unsigned int
getBufferDuration ( void ) const throw ()
{
return bufferDuration;
}
};