00001 // 00002 // CascadeStream.h - header file for class CascadeStream 00003 // 00004 // Copyright (c) 2002, Roku, LLC. All rights reserved. 00005 // 00008 00009 #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADESTREAM_H 00010 #define _ROKU_INCLUDE_CASCADE_UTIL_CASCADESTREAM_H 00011 00012 #include <cascade/util/CascadeString.h> 00013 00015 // CascadeStream #defines 00016 #define CASCADESTREAM_METADATA_NAME_URL "url" 00017 #define CASCADESTREAM_METADATA_NAME_TITLE "title" 00018 #define CASCADESTREAM_METADATA_NAME_ARTIST "artist" 00019 #define CASCADESTREAM_METADATA_NAME_ALBUM "album" 00020 #define CASCADESTREAM_METADATA_NAME_YEAR "year" 00021 00032 class CascadeStream : public CascadeObject 00033 { 00034 public: 00035 CascadeStream(); 00039 virtual ~CascadeStream(); 00043 public: 00044 virtual u64 GetSize() = 0; 00052 virtual u64 GetPosition() = 0; 00058 virtual bool SeekToPosition(u64 nPosition) = 0; 00064 virtual u32 ReadBytes(u32 nBytes, void * pBuff) = 0; 00070 virtual bool GetLine(class CascadeString & lineToSet); 00084 virtual void AddMetadata(const CascadeString & name, const CascadeString & value); 00085 virtual void RemoveMetadata(const CascadeString & name); 00086 virtual void RemoveAllMetadata(); 00087 virtual bool LookupMetadata(const CascadeString & name, CascadeString & valueToSet) const; 00088 typedef bool (MetadataEnumProc)(const CascadeString & name, const CascadeString & value, void * pClientData); 00089 virtual bool EnumerateMetadata(MetadataEnumProc * pEnumProc, void * pClientData) const; 00090 inline void SetURL(const CascadeString & url) { AddMetadata(CascadeString(CASCADESTREAM_METADATA_NAME_URL), url); } 00091 inline bool GetURL(CascadeString & urlToSet) const { return LookupMetadata(CascadeString(CASCADESTREAM_METADATA_NAME_URL), urlToSet); } 00092 inline void ClearURL() { RemoveMetadata(CascadeString(CASCADESTREAM_METADATA_NAME_URL)); } 00093 private: 00094 class Stream; 00095 Stream * m_pStream; 00096 }; 00097 00098 #endif // #ifndef _ROKU_INCLUDE_CASCADE_UTIL_CASCADESTREAM_H 00099 00101 // LOG 00103 // 18-Dec-03 dwoodward created 00104 // 19-Feb-03 dwoodward added GetLine() 00105 // 13-May-05 dwoodward added metadata functions 00106 // 01-Jun-05 dsletten ClearURL impl was returning a value