00001 /* 00002 * Copyright (C) David C.J. Matthews 2005, 2006 00003 * Derived from libdsmcc by Richard Palmer 00004 */ 00005 #ifndef DSMCC_OBJCAROUSEL_H 00006 #define DSMCC_OBJCAROUSEL_H 00007 00008 00009 #include <qptrlist.h> 00010 #include <qvaluevector.h> 00011 #include <qcstring.h> 00012 #include <qptrvector.h> 00013 00014 class DsmccDii; 00015 class Dsmcc; 00016 class DsmccDb; 00017 class DsmccModuleInfo; 00018 00019 #include "dsmcccache.h" 00020 #include "dsmccbiop.h" // For ModuleDescriptorData 00021 00026 class DSMCCCacheModuleData 00027 { 00028 public: 00029 DSMCCCacheModuleData(DsmccDii *dii, DsmccModuleInfo *info, 00030 unsigned short streamTag); 00031 00032 unsigned char *AddModuleData(DsmccDb *ddb, const unsigned char *Data); 00033 00034 unsigned long CarouselId(void) const { return m_carousel_id; } 00035 unsigned short ModuleId(void) const { return m_module_id; } 00036 unsigned short StreamId(void) const { return m_stream_id; } 00037 unsigned char Version(void) const { return m_version; } 00038 unsigned long ModuleSize(void) const { return m_moduleSize; } 00039 00041 unsigned long DataSize(void) const 00042 { 00043 return (m_descriptorData.isCompressed) ? 00044 m_descriptorData.originalSize : m_moduleSize; 00045 } 00046 00047 00048 private: 00049 unsigned long m_carousel_id; 00050 unsigned short m_module_id; 00051 unsigned short m_stream_id; 00052 00053 unsigned char m_version; 00054 unsigned long m_moduleSize; 00055 unsigned long m_receivedData; 00056 00058 QPtrVector<QByteArray> m_blocks; 00060 bool m_completed; 00061 ModuleDescriptorData m_descriptorData; 00062 }; 00063 00064 class ObjCarousel 00065 { 00066 public: 00067 ObjCarousel(Dsmcc*); 00068 void AddModuleInfo(DsmccDii *dii, Dsmcc *status, unsigned short streamTag); 00069 void AddModuleData(unsigned long carousel, DsmccDb *ddb, 00070 const unsigned char *data); 00071 00072 DSMCCCache filecache; 00073 QPtrList<DSMCCCacheModuleData> m_Cache; 00075 QValueVector<unsigned short> m_Tags; 00076 unsigned long m_id; 00077 }; 00078 00079 #endif 00080
1.5.5