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;
23 ~BiopNameComp() = default;
24
25 int Process(const unsigned char *data);
26
27 std::string m_id;
28 std::string m_kind;
29};
30
32{
33 public:
34 BiopName() = default;
35 ~BiopName();
36
37 int Process(const unsigned char *data);
38
39 unsigned char m_compCount {0};
41};
42
44{
45 public:
46 BiopTap() = default;
47 ~BiopTap() = default;
48
49 int Process(const unsigned char *data);
50
51 unsigned short m_id {0};
52 unsigned short m_use {0};
53 // Only the association tag is currently used.
54 unsigned short m_assocTag {0};
55 std::vector<uint8_t> m_selector;
56};
57
59{
60 public:
61 BiopConnbinder() = default;
62 int Process(const unsigned char *data);
63
64 unsigned long m_componentTag {0};
65 unsigned char m_componentDataLen {0};
66 unsigned char m_tapsCount {0};
68};
69
71{
72 public:
73 BiopObjLocation() = default;
74 ~BiopObjLocation() = default;
75
76 int Process(const unsigned char *data);
77
78 unsigned long m_componentTag {0};
83};
84
86{
87 public:
88 virtual ~ProfileBody() = default;
90 virtual int Process(const unsigned char *) = 0;
91};
92
94{
95 public:
96 ProfileBodyFull() = default;
97 ~ProfileBodyFull() override = default;
98 int Process(const unsigned char *data) override; // ProfileBody
99 DSMCCCacheReference *GetReference() override // ProfileBody
100 { return &m_objLoc.m_reference; }
101
102 protected:
103 unsigned long m_dataLen {0};
104 char m_byteOrder {0};
107
108 /* Just for the moment make this public */
109 public:
111 /* ignore the rest */
112};
113
115{
116 public:
117
118 int Process(const unsigned char *data) override; // ProfileBody
119
120 // TODO Not currently implemented
121 DSMCCCacheReference *GetReference() override // ProfileBody
122 { return nullptr; }
123};
124
125// IOR - Interoperable Object Reference.
127{
128 public:
129 BiopIor() = default;
131 {
132 delete m_profileBody;
133 }
134
135 int Process(const unsigned char *data);
136 void AddTap(Dsmcc *pStatus) const;
137
138 std::string m_typeId;
139 unsigned long m_taggedProfilesCount {0};
140 unsigned long m_profileIdTag {0};
142
143 /* UKProfile - ignore other profiles */
144};
145
147{
148 public:
149 BiopBinding() = default;
150 ~BiopBinding() = default;
151
152 int Process(const unsigned char *data);
153
157 std::vector<uint8_t> m_objInfo;
158};
159
160class ObjCarousel;
161
163{
164 public:
165 BiopMessage() = default;
166 ~BiopMessage() = default;
167
168 bool Process(DSMCCCacheModuleData *cachep, DSMCCCache *cache,
169 unsigned char *data, unsigned long *curp);
170
171 protected:
172 // Process directories and service gateways.
173 bool ProcessDir(bool isSrg,
174 DSMCCCacheModuleData *cachep, DSMCCCache *cache,
175 const unsigned char *data, unsigned long *curp);
176 // Process files.
177 bool ProcessFile(DSMCCCacheModuleData *cachep, DSMCCCache *cache,
178 unsigned char *data, unsigned long *curp);
179
180 bool ProcessMsgHdr(const unsigned char *data, unsigned long *curp);
181
182 protected:
183 unsigned char m_versionMajor {0};
184 unsigned char m_versionMinor {0};
185 unsigned int m_messageSize {0};
187 std::vector<uint8_t> m_objInfo;
188
189 public:
190 std::string m_objKind;
191};
192
193// Data extracted from the descriptors in a BiopModuleInfo message
195{
196 public:
198
199 void Process(const unsigned char *data, int length);
200
201 bool m_isCompressed {false};
202 unsigned long m_originalSize {0};
203};
204
206{
207 public:
208 int Process(const unsigned char *Data);
209
210 unsigned long m_modTimeout {0};
211 unsigned long m_blockTimeout {0};
212 unsigned long m_minBlockTime {0};
213 unsigned char m_tapsCount {0};
215
217};
218
220{
221 public:
222 unsigned short m_moduleId {0};
223 unsigned long m_moduleSize {0};
224 unsigned char m_moduleVersion {0};
225 unsigned char m_moduleInfoLen {0};
226 unsigned char *m_data {nullptr};
227 unsigned int m_curp {0};
229};
230
231#endif
BiopName m_name
Definition: dsmccbiop.h:154
std::vector< uint8_t > m_objInfo
Definition: dsmccbiop.h:157
BiopBinding()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:65
~BiopBinding()=default
char m_bindingType
Definition: dsmccbiop.h:155
BiopIor m_ior
Definition: dsmccbiop.h:156
BiopConnbinder()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:400
unsigned long m_componentTag
Definition: dsmccbiop.h:64
unsigned char m_tapsCount
Definition: dsmccbiop.h:66
BiopTap m_tap
Definition: dsmccbiop.h:67
unsigned char m_componentDataLen
Definition: dsmccbiop.h:65
BiopIor()=default
void AddTap(Dsmcc *pStatus) const
Definition: dsmccbiop.cpp:559
unsigned long m_taggedProfilesCount
Definition: dsmccbiop.h:139
std::string m_typeId
Definition: dsmccbiop.h:138
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:509
unsigned long m_profileIdTag
Definition: dsmccbiop.h:140
ProfileBody * m_profileBody
Definition: dsmccbiop.h:141
~BiopIor()
Definition: dsmccbiop.h:130
bool ProcessDir(bool isSrg, DSMCCCacheModuleData *cachep, DSMCCCache *cache, const unsigned char *data, unsigned long *curp)
Process a Directory message.
Definition: dsmccbiop.cpp:198
bool ProcessFile(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:266
DSMCCCacheKey m_objKey
Definition: dsmccbiop.h:186
BiopMessage()=default
unsigned int m_messageSize
Definition: dsmccbiop.h:185
std::vector< uint8_t > m_objInfo
Definition: dsmccbiop.h:187
unsigned char m_versionMinor
Definition: dsmccbiop.h:184
~BiopMessage()=default
bool Process(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:96
unsigned char m_versionMajor
Definition: dsmccbiop.h:183
bool ProcessMsgHdr(const unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:133
std::string m_objKind
Definition: dsmccbiop.h:190
ModuleDescriptorData m_descriptorData
Definition: dsmccbiop.h:216
unsigned char m_tapsCount
Definition: dsmccbiop.h:213
unsigned long m_minBlockTime
Definition: dsmccbiop.h:212
unsigned long m_blockTimeout
Definition: dsmccbiop.h:211
BiopTap m_tap
Definition: dsmccbiop.h:214
int Process(const unsigned char *Data)
Definition: dsmccbiop.cpp:334
unsigned long m_modTimeout
Definition: dsmccbiop.h:210
BiopNameComp()=default
std::string m_kind
Definition: dsmccbiop.h:28
~BiopNameComp()=default
std::string m_id
Definition: dsmccbiop.h:27
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:16
BiopNameComp * m_comps
Definition: dsmccbiop.h:40
BiopName()=default
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:43
unsigned char m_compCount
Definition: dsmccbiop.h:39
~BiopObjLocation()=default
unsigned long m_componentTag
Definition: dsmccbiop.h:78
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:429
char m_versionMajor
Definition: dsmccbiop.h:80
char m_componentDataLen
Definition: dsmccbiop.h:79
DSMCCCacheReference m_reference
Definition: dsmccbiop.h:82
BiopObjLocation()=default
char m_versionMinor
Definition: dsmccbiop.h:81
BiopTap()=default
unsigned short m_id
Definition: dsmccbiop.h:51
unsigned short m_use
Definition: dsmccbiop.h:52
std::vector< uint8_t > m_selector
Definition: dsmccbiop.h:55
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:368
~BiopTap()=default
unsigned short m_assocTag
Definition: dsmccbiop.h:54
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:227
unsigned char m_moduleVersion
Definition: dsmccbiop.h:224
unsigned short m_moduleId
Definition: dsmccbiop.h:222
unsigned char m_moduleInfoLen
Definition: dsmccbiop.h:225
unsigned char * m_data
Definition: dsmccbiop.h:226
BiopModuleInfo m_modInfo
Definition: dsmccbiop.h:228
unsigned long m_moduleSize
Definition: dsmccbiop.h:223
Definition: dsmcc.h:78
ModuleDescriptorData()=default
unsigned long m_originalSize
Definition: dsmccbiop.h:202
void Process(const unsigned char *data, int length)
Definition: dsmccbiop.cpp:304
BiopConnbinder m_dsmConn
Definition: dsmccbiop.h:110
ProfileBodyFull()=default
DSMCCCacheReference * GetReference() override
Definition: dsmccbiop.h:99
BiopObjLocation m_objLoc
Definition: dsmccbiop.h:106
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:471
char m_liteComponentsCount
Definition: dsmccbiop.h:105
~ProfileBodyFull() override=default
unsigned long m_dataLen
Definition: dsmccbiop.h:103
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:465
DSMCCCacheReference * GetReference() override
Definition: dsmccbiop.h:121
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