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 #include <QLinkedList> 00009 00010 #include <vector> 00011 using namespace std; 00012 00013 class DsmccDii; 00014 class Dsmcc; 00015 class DsmccDb; 00016 class DsmccModuleInfo; 00017 00018 #include "dsmcccache.h" 00019 #include "dsmccbiop.h" // For ModuleDescriptorData 00020 00025 class DSMCCCacheModuleData 00026 { 00027 public: 00028 DSMCCCacheModuleData(DsmccDii *dii, DsmccModuleInfo *info, 00029 unsigned short streamTag); 00030 ~DSMCCCacheModuleData(); 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 vector<QByteArray*> m_blocks; 00060 bool m_completed; 00061 ModuleDescriptorData m_descriptorData; 00062 }; 00063 00064 class ObjCarousel 00065 { 00066 public: 00067 ObjCarousel(Dsmcc*); 00068 ~ObjCarousel(); 00069 void AddModuleInfo(DsmccDii *dii, Dsmcc *status, unsigned short streamTag); 00070 void AddModuleData(DsmccDb *ddb, const unsigned char *data); 00071 00072 DSMCCCache filecache; 00073 QLinkedList<DSMCCCacheModuleData*> m_Cache; 00075 vector<unsigned short> m_Tags; 00076 unsigned long m_id; 00077 }; 00078 00079 #endif 00080
1.6.3