MythTV master
dsmccbiop.h
Go to the documentation of this file.
1/*
2 * Copyright (C) David C.J. Matthews 2005, 2006
3 * Derived from libdsmcc by Richard Palmer
4 */
5#ifndef DSMCC_BIOP_H
6#define DSMCC_BIOP_H
7
8#include <array>
9#include <cstdlib>
10
11#include "dsmcccache.h"
12
13static constexpr uint8_t BIOP_OBJ_OFFSET { 11 };
14static constexpr uint8_t BIOP_TAG_OFFSET { 17 };
15
17class Dsmcc;
18
20{
21 public:
22 BiopNameComp() = default;
24
25 int Process(const unsigned char *data);
26
27 unsigned char m_idLen {0};
28 unsigned char m_kindLen {0};
29 char *m_id {nullptr};
30 char *m_kind {nullptr};
31};
32
34{
35 public:
36 BiopName() = default;
37 ~BiopName();
38
39 int Process(const unsigned char *data);
40
41 unsigned char m_compCount {0};
43};
44
46{
47 public:
48 BiopTap() = default;
49 ~BiopTap();
50
51 int Process(const unsigned char *data);
52
53 unsigned short m_id {0};
54 unsigned short m_use {0};
55 // Only the association tag is currently used.
56 unsigned short m_assocTag {0};
57 unsigned short m_selectorLen {0};
58 char *m_selectorData {nullptr};
59};
60
62{
63 public:
64 BiopConnbinder() = default;
65 int Process(const unsigned char *data);
66
67 unsigned long m_componentTag {0};
68 unsigned char m_componentDataLen {0};
69 unsigned char m_tapsCount {0};
71};
72
74{
75 public:
76 BiopObjLocation() = default;
77 ~BiopObjLocation() = default;
78
79 int Process(const unsigned char *data);
80
81 unsigned long m_componentTag {0};
86};
87
89{
90 public:
91 virtual ~ProfileBody() = default;
93 virtual int Process(const unsigned char *) = 0;
94};
95
97{
98 public:
99 ProfileBodyFull() = default;
100 ~ProfileBodyFull() override = default;
101 int Process(const unsigned char *data) override; // ProfileBody
102 DSMCCCacheReference *GetReference() override // ProfileBody
103 { return &m_objLoc.m_reference; }
104
105 protected:
106 unsigned long m_dataLen {0};
107 char m_byteOrder {0};
110
111 /* Just for the moment make this public */
112 public:
114 /* ignore the rest */
115};
116
118{
119 public:
120
121 int Process(const unsigned char *data) override; // ProfileBody
122
123 // TODO Not currently implemented
124 DSMCCCacheReference *GetReference() override // ProfileBody
125 { return nullptr; }
126};
127
128// IOR - Interoperable Object Reference.
130{
131 public:
132 BiopIor() = default;
134 {
135 free(m_typeId);
136 delete m_profileBody;
137 }
138
139 int Process(const unsigned char *data);
140 void AddTap(Dsmcc *pStatus) const;
141
142 unsigned long m_typeIdLen {0};
143 char *m_typeId {nullptr};
144 unsigned long m_taggedProfilesCount {0};
145 unsigned long m_profileIdTag {0};
147
148 /* UKProfile - ignore other profiles */
149};
150
152{
153 public:
154 BiopBinding() = default;
155 ~BiopBinding();
156
157 int Process(const unsigned char *data);
158
162 unsigned int m_objInfoLen {0};
163 char *m_objInfo {nullptr};
164};
165
166class ObjCarousel;
167
169{
170 public:
171 BiopMessage() = default;
172 ~BiopMessage();
173
174 bool Process(DSMCCCacheModuleData *cachep, DSMCCCache *cache,
175 unsigned char *data, unsigned long *curp);
176
177 protected:
178 // Process directories and service gateways.
179 bool ProcessDir(bool isSrg,
180 DSMCCCacheModuleData *cachep, DSMCCCache *cache,
181 const unsigned char *data, unsigned long *curp);
182 // Process files.
183 bool ProcessFile(DSMCCCacheModuleData *cachep, DSMCCCache *cache,
184 unsigned char *data, unsigned long *curp);
185
186 bool ProcessMsgHdr(const unsigned char *data, unsigned long *curp);
187
188 protected:
189 unsigned char m_versionMajor {0};
190 unsigned char m_versionMinor {0};
191 unsigned int m_messageSize {0};
193 unsigned long m_objKindLen {0};
194 unsigned int m_objInfoLen {0};
195 char *m_objInfo {nullptr};
196
197 public:
198 char *m_objKind {nullptr};
199};
200
201// Data extracted from the descriptors in a BiopModuleInfo message
203{
204 public:
206
207 void Process(const unsigned char *data, int length);
208
209 bool m_isCompressed {false};
210 unsigned long m_originalSize {0};
211};
212
214{
215 public:
216 int Process(const unsigned char *Data);
217
218 unsigned long m_modTimeout {0};
219 unsigned long m_blockTimeout {0};
220 unsigned long m_minBlockTime {0};
221 unsigned char m_tapsCount {0};
223
225};
226
228{
229 public:
230 unsigned short m_moduleId {0};
231 unsigned long m_moduleSize {0};
232 unsigned char m_moduleVersion {0};
233 unsigned char m_moduleInfoLen {0};
234 unsigned char *m_data {nullptr};
235 unsigned int m_curp {0};
237};
238
239#endif
BiopName m_name
Definition: dsmccbiop.h:159
BiopBinding()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:69
char m_bindingType
Definition: dsmccbiop.h:160
unsigned int m_objInfoLen
Definition: dsmccbiop.h:162
BiopIor m_ior
Definition: dsmccbiop.h:161
char * m_objInfo
Definition: dsmccbiop.h:163
BiopConnbinder()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:420
unsigned long m_componentTag
Definition: dsmccbiop.h:67
unsigned char m_tapsCount
Definition: dsmccbiop.h:69
BiopTap m_tap
Definition: dsmccbiop.h:70
unsigned char m_componentDataLen
Definition: dsmccbiop.h:68
BiopIor()=default
void AddTap(Dsmcc *pStatus) const
Definition: dsmccbiop.cpp:577
unsigned long m_taggedProfilesCount
Definition: dsmccbiop.h:144
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:529
unsigned long m_profileIdTag
Definition: dsmccbiop.h:145
char * m_typeId
Definition: dsmccbiop.h:143
unsigned long m_typeIdLen
Definition: dsmccbiop.h:142
ProfileBody * m_profileBody
Definition: dsmccbiop.h:146
~BiopIor()
Definition: dsmccbiop.h:133
bool ProcessDir(bool isSrg, DSMCCCacheModuleData *cachep, DSMCCCache *cache, const unsigned char *data, unsigned long *curp)
Process a Directory message.
Definition: dsmccbiop.cpp:217
bool ProcessFile(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:285
DSMCCCacheKey m_objKey
Definition: dsmccbiop.h:192
BiopMessage()=default
unsigned long m_objKindLen
Definition: dsmccbiop.h:193
unsigned int m_messageSize
Definition: dsmccbiop.h:191
unsigned char m_versionMinor
Definition: dsmccbiop.h:190
bool Process(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:110
char * m_objKind
Definition: dsmccbiop.h:198
unsigned char m_versionMajor
Definition: dsmccbiop.h:189
bool ProcessMsgHdr(const unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:153
char * m_objInfo
Definition: dsmccbiop.h:195
unsigned int m_objInfoLen
Definition: dsmccbiop.h:194
ModuleDescriptorData m_descriptorData
Definition: dsmccbiop.h:224
unsigned char m_tapsCount
Definition: dsmccbiop.h:221
unsigned long m_minBlockTime
Definition: dsmccbiop.h:220
unsigned long m_blockTimeout
Definition: dsmccbiop.h:219
BiopTap m_tap
Definition: dsmccbiop.h:222
int Process(const unsigned char *Data)
Definition: dsmccbiop.cpp:353
unsigned long m_modTimeout
Definition: dsmccbiop.h:218
unsigned char m_idLen
Definition: dsmccbiop.h:27
char * m_id
Definition: dsmccbiop.h:29
BiopNameComp()=default
unsigned char m_kindLen
Definition: dsmccbiop.h:28
char * m_kind
Definition: dsmccbiop.h:30
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:24
BiopNameComp * m_comps
Definition: dsmccbiop.h:42
BiopName()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:47
unsigned char m_compCount
Definition: dsmccbiop.h:41
~BiopObjLocation()=default
unsigned long m_componentTag
Definition: dsmccbiop.h:81
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:449
char m_versionMajor
Definition: dsmccbiop.h:83
char m_componentDataLen
Definition: dsmccbiop.h:82
DSMCCCacheReference m_reference
Definition: dsmccbiop.h:85
BiopObjLocation()=default
char m_versionMinor
Definition: dsmccbiop.h:84
BiopTap()=default
unsigned short m_id
Definition: dsmccbiop.h:53
unsigned short m_use
Definition: dsmccbiop.h:54
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:387
char * m_selectorData
Definition: dsmccbiop.h:58
unsigned short m_selectorLen
Definition: dsmccbiop.h:57
unsigned short m_assocTag
Definition: dsmccbiop.h:56
DSMCCCacheModuleData contains information about a module and holds the blocks for a partly completed ...
The object carousel is transmitted as a directed graph.
Definition: dsmcccache.h:87
unsigned int m_curp
Definition: dsmccbiop.h:235
unsigned char m_moduleVersion
Definition: dsmccbiop.h:232
unsigned short m_moduleId
Definition: dsmccbiop.h:230
unsigned char m_moduleInfoLen
Definition: dsmccbiop.h:233
unsigned char * m_data
Definition: dsmccbiop.h:234
BiopModuleInfo m_modInfo
Definition: dsmccbiop.h:236
unsigned long m_moduleSize
Definition: dsmccbiop.h:231
Definition: dsmcc.h:78
ModuleDescriptorData()=default
unsigned long m_originalSize
Definition: dsmccbiop.h:210
void Process(const unsigned char *data, int length)
Definition: dsmccbiop.cpp:323
BiopConnbinder m_dsmConn
Definition: dsmccbiop.h:113
ProfileBodyFull()=default
DSMCCCacheReference * GetReference() override
Definition: dsmccbiop.h:102
BiopObjLocation m_objLoc
Definition: dsmccbiop.h:109
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:491
char m_liteComponentsCount
Definition: dsmccbiop.h:108
~ProfileBodyFull() override=default
unsigned long m_dataLen
Definition: dsmccbiop.h:106
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:485
DSMCCCacheReference * GetReference() override
Definition: dsmccbiop.h:124
virtual DSMCCCacheReference * GetReference()=0
virtual ~ProfileBody()=default
virtual int Process(const unsigned char *)=0
static constexpr uint8_t BIOP_TAG_OFFSET
Definition: dsmccbiop.h:14
static constexpr uint8_t BIOP_OBJ_OFFSET
Definition: dsmccbiop.h:13