MythTV  master
dsmccbiop.cpp
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 #include <cstdlib>
6 #include <cstring>
7 
9 
10 #include "dsmccbiop.h"
11 #include "dsmccreceiver.h"
12 #include "dsmcccache.h"
13 #include "dsmccobjcarousel.h"
14 #include "dsmcc.h"
15 
17 {
18  if (m_id)
19  free(m_id);
20  if (m_kind)
21  free(m_kind);
22 }
23 
24 int BiopNameComp::Process(const unsigned char *data)
25 {
26  int off = 0;
27 
28  m_idLen = data[off++];
29  m_id = (char*) malloc(m_idLen);
30  memcpy(m_id, data + off, m_idLen);
31 
32  off += m_idLen;
33  m_kindLen = data[off++];
34  m_kind = (char*) malloc(m_kindLen);
35  memcpy(m_kind, data + off, m_kindLen);
36 
37  off += m_kindLen;
38 
39  return off;
40 }
41 
43 {
44  delete[] m_comps;
45 }
46 
47 int BiopName::Process(const unsigned char *data)
48 {
49  int off = 0;
50  m_compCount = data[0];
51 
52  if (m_compCount != 1)
53  LOG(VB_DSMCC, LOG_WARNING, "[biop] Expected one name");
54 
55  off++;
57 
58  for (int i = 0; i < m_compCount; i++)
59  {
60  int ret = m_comps[i].Process(data + off);
61  if (ret <= 0)
62  return ret;
63  off += ret;
64  }
65 
66  return off;
67 }
68 
69 int BiopBinding::Process(const unsigned char *data)
70 {
71  int off = 0;
72  int ret = m_name.Process(data);
73 
74  if (ret > 0)
75  off += ret;
76  else
77  return ret; // Error
78 
79  m_bindingType = data[off++];
80  ret = m_ior.Process(data + off);
81 
82  if (ret > 0)
83  off += ret;
84  else
85  return ret; // Error
86 
87  m_objInfoLen = (data[off] << 8) | data[off + 1];
88  off += 2;
89 
90  if (m_objInfoLen > 0)
91  {
92  m_objInfo = (char*) malloc(m_objInfoLen);
93  memcpy(m_objInfo, data + off, m_objInfoLen);
94  }
95  else
96  m_objInfo = nullptr;
97 
98  off += m_objInfoLen;
99 
100  return off;
101 }
102 
104 {
105  free(m_objInfo);
106 }
107 
109  unsigned char *data, unsigned long *curp)
110 {
111  // Parse header
112  if (! ProcessMsgHdr(data, curp))
113  {
114  LOG(VB_DSMCC, LOG_ERR,
115  "[biop] Invalid biop header, dropping rest of module");
116 
117  /* not valid, skip rest of data */
118  return false;
119  }
120 
121  // Handle each message type
122  if (strcmp(m_objKind, "fil") == 0)
123  {
124  LOG(VB_DSMCC, LOG_DEBUG, "[biop] Processing file");
125  return ProcessFile(cachep, filecache, data, curp);
126  }
127  if (strcmp(m_objKind, "dir") == 0)
128  {
129  LOG(VB_DSMCC, LOG_DEBUG, "[biop] Processing directory");
130  return ProcessDir(false, cachep, filecache, data, curp);
131  }
132  if (strcmp(m_objKind, "srg") == 0)
133  {
134  LOG(VB_DSMCC, LOG_DEBUG, "[biop] Processing gateway");
135  return ProcessDir(true, cachep, filecache, data, curp);
136  }
137 
138  /* Error */
139  LOG(VB_DSMCC, LOG_WARNING, QString("Unknown or unsupported format %1%2%3%4")
140  .arg(m_objKind[0]).arg(m_objKind[1])
141  .arg(m_objKind[2]).arg(m_objKind[3]));
142  return false;
143 }
144 
146 {
147  free(m_objInfo);
148  free(m_objKind);
149 }
150 
151 bool BiopMessage::ProcessMsgHdr(const unsigned char *data, unsigned long *curp)
152 {
153  const unsigned char *buf = data + (*curp);
154  int off = 0;
155 
156  if (buf[off] !='B' || buf[off +1] !='I' || buf[off +2] !='O' || buf[off +3] !='P')
157  {
158  LOG(VB_DSMCC, LOG_WARNING, "BiopMessage - invalid header");
159  return false;
160  }
161  off += 4;
162 
163  m_versionMajor = buf[off++];
164  m_versionMinor = buf[off++];
165  if (m_versionMajor != 1 || m_versionMinor != 0)
166  {
167  LOG(VB_DSMCC, LOG_WARNING, "BiopMessage invalid version");
168  return false;
169  }
170 
171  if (buf[off++] != 0)
172  {
173  LOG(VB_DSMCC, LOG_WARNING, "BiopMessage invalid byte order");
174  return false;
175  }
176  if (buf[off++] != 0)
177  {
178  LOG(VB_DSMCC, LOG_WARNING, "BiopMessage invalid message type");
179  return false;
180  }
181 
182  m_messageSize = COMBINE32(buf, off);
183  off += 4;
184 
185  uint nObjLen = buf[off++];
186  m_objKey = DSMCCCacheKey((const char*)buf + off, nObjLen);
187  off += nObjLen;
188 
189  m_objKindLen = COMBINE32(buf, off);
190  off += 4;
191  m_objKind = (char*) malloc(m_objKindLen);
192  memcpy(m_objKind, buf + off, m_objKindLen);
193  off += m_objKindLen;
194 
195  m_objInfoLen = buf[off] << 8 | buf[off + 1];
196  off += 2;
197  m_objInfo = (char*) malloc(m_objInfoLen);
198  memcpy(m_objInfo, buf + off, m_objInfoLen);
199  off += m_objInfoLen;
200 
201  (*curp) += off;
202 
203  return true;
204 }
205 
206 
216  bool isSrg, DSMCCCacheModuleData *cachep, DSMCCCache *filecache,
217  const unsigned char *data, unsigned long *curp)
218 {
219  int off = 0;
220  const unsigned char * const buf = data + (*curp);
221 
222  if (m_objInfoLen)
223  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProcessDir non-zero objectInfo_length");
224 
225  const unsigned serviceContextList_count = buf[off++];
226  if (serviceContextList_count)
227  {
228  // TODO Handle serviceContextList for service gateway
229  LOG(VB_DSMCC, LOG_WARNING, QString("[biop] ProcessDir serviceContextList count %1")
230  .arg(serviceContextList_count));
231  return false; // Error
232  }
233 
234  unsigned long msgbody_len = COMBINE32(buf, off);
235  off += 4;
236  int const start = off;
237 
238  unsigned int bindings_count = buf[off] << 8 | buf[off + 1];
239  off += 2;
240 
241  DSMCCCacheReference ref(cachep->CarouselId(), cachep->ModuleId(),
242  cachep->StreamId(), m_objKey);
243  DSMCCCacheDir *pDir = isSrg ? filecache->Srg(ref) : filecache->Directory(ref);
244 
245  for (uint i = 0; i < bindings_count; i++)
246  {
247  BiopBinding binding;
248  int ret = binding.Process(buf + off);
249  if (ret > 0)
250  off += ret;
251  else
252  return false; // Error
253 
254  if (binding.m_name.m_compCount != 1)
255  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProcessDir nameComponents != 1");
256 
257  if (binding.m_bindingType != 1 && binding.m_bindingType != 2)
258  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProcessDir invalid BindingType");
259 
260  // Process any taps in this binding.
261  binding.m_ior.AddTap(filecache->m_dsmcc);
262 
263  if (pDir && binding.m_name.m_compCount >= 1)
264  {
265  if (strcmp("fil", binding.m_name.m_comps[0].m_kind) == 0)
266  DSMCCCache::AddFileInfo(pDir, &binding);
267  else if (strcmp("dir", binding.m_name.m_comps[0].m_kind) == 0)
268  DSMCCCache::AddDirInfo(pDir, &binding);
269  else
270  LOG(VB_DSMCC, LOG_WARNING, QString("[biop] ProcessDir unknown kind %1")
271  .arg(binding.m_name.m_comps[0].m_kind));
272  }
273  }
274 
275  if ((unsigned)(off - start) != msgbody_len)
276  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProcessDir incorrect msgbody_len");
277 
278  (*curp) += off;
279 
280  return true;
281 }
282 
284  unsigned char *data, unsigned long *curp)
285 {
286  int off = 0;
287  const unsigned char *buf = data + (*curp);
288 
289  if (m_objInfoLen != 8)
290  LOG(VB_DSMCC, LOG_WARNING, QString("[biop] ProcessFile objectInfo_length = %1")
291  .arg(m_objInfoLen));
292 
293  const unsigned serviceContextList_count = buf[off++];
294  if (serviceContextList_count)
295  {
296  LOG(VB_DSMCC, LOG_WARNING,
297  QString("[biop] ProcessFile Unexpected serviceContextList_count %1")
298  .arg(serviceContextList_count));
299  return false; // Error
300  }
301 
302  unsigned long msgbody_len = COMBINE32(buf, off);
303  off += 4;
304  unsigned long content_len = COMBINE32(buf, off);
305  off += 4;
306  if (content_len + 4 != msgbody_len)
307  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProcessFile incorrect msgbody_len");
308 
309  (*curp) += off;
310 
311  DSMCCCacheReference ref(cachep->CarouselId(), cachep->ModuleId(),
312  cachep->StreamId(), m_objKey);
313 
314  QByteArray filedata = QByteArray((const char *)data+(*curp), content_len);
315  filecache->CacheFileData(ref, filedata);
316 
317  (*curp) += content_len;
318  return true;
319 }
320 
321 void ModuleDescriptorData::Process(const unsigned char *data, int length)
322 {
323  while (length > 0)
324  {
325  unsigned char tag = *data++;
326  unsigned char len = *data++;
327  length -= 2;
328 
329  // Tags:
330  // case 0x01: // Type
331  // case 0x02: // Name
332  // case 0x03: // Info
333  // case 0x04: // Modlink
334  // case 0x05: // CRC
335  // case 0x06: // Location
336  // case 0x07: // DLtime
337  // case 0x08: // Grouplink
338  // case 0x09: // Compressed.
339  if (tag == 0x09)
340  {
341  // Skip the method.
342  m_isCompressed = true;
343  m_originalSize = COMBINE32(data, 1);
344  }
345 
346  length -= len;
347  data += len;
348  }
349 }
350 
351 int BiopModuleInfo::Process(const unsigned char *data)
352 {
353  m_modTimeout = COMBINE32(data, 0);
354  m_blockTimeout = COMBINE32(data, 4);
355  m_minBlockTime = COMBINE32(data, 8);
356 
357  m_tapsCount = data[12];
358  int off = 13;
359 
360  LOG(VB_DSMCC, LOG_DEBUG, QString("[Biop] "
361  "ModuleTimeout %1 BlockTimeout %2 MinBlockTime %3 Taps %4")
363  .arg(m_tapsCount));
364 
365  if (m_tapsCount > 0)
366  {
367  /* only 1 allowed TODO - may not be first though ? */
368  int ret = m_tap.Process(data + off);
369  if (ret <= 0)
370  return ret;
371  off += ret;
372  }
373 
374  unsigned userinfo_len = data[off++];
375 
376  if (userinfo_len > 0)
377  {
378  m_descriptorData.Process(data + off, userinfo_len);
379  off += userinfo_len;
380  }
381  return off;
382 
383 }
384 
385 int BiopTap::Process(const unsigned char *data)
386 {
387  int off=0;
388 
389  m_id = (data[off] << 8) | data[off + 1]; // Ignored
390  off += 2;
391  m_use = (data[off] << 8) | data[off + 1];
392  off += 2;
393  m_assocTag = (data[off] << 8) | data[off + 1];
394  off += 2;
395  m_selectorLen = data[off++];
396  m_selectorData = (char*) malloc(m_selectorLen);
397  memcpy(m_selectorData, data + off, m_selectorLen);
398  if (m_use == 0x0016) // BIOP_DELIVERY_PARA_USE
399  {
400  unsigned selector_type = (data[off] << 8) | data[off + 1];
401  if (m_selectorLen >= 10 && selector_type == 0x0001)
402  {
403  off += 2;
404  unsigned long transactionId = COMBINE32(data, off);
405  off += 4;
406  unsigned long timeout = COMBINE32(data, off);
407  LOG(VB_DSMCC, LOG_DEBUG, QString("[biop] BIOP_DELIVERY_PARA_USE tag %1 id 0x%2 timeout %3uS")
408  .arg(m_assocTag).arg(transactionId,0,16).arg(timeout));
409  off += 4;
410  m_selectorLen -= 10;
411  }
412  }
413 
414  off += m_selectorLen;
415  return off;
416 }
417 
418 int BiopConnbinder::Process(const unsigned char *data)
419 {
420  int off = 0;
421 
422  m_componentTag = COMBINE32(data, 0);
423  if (0x49534F40 != m_componentTag)
424  {
425  LOG(VB_DSMCC, LOG_WARNING, "[biop] Invalid Connbinder tag");
426  return 0;
427  }
428  off += 4;
429  m_componentDataLen = data[off++];
430  m_tapsCount = data[off++];
431  if (m_tapsCount > 0)
432  {
433  /* UKProfile - only first tap read */
434  int ret = m_tap.Process(data + off);
435 #if 0
436  LOG(VB_GENERAL, LOG_DEBUG, QString("Binder - assoc_tag %1")
437  .arg(m_tap.m_assocTag));
438 #endif
439  if (ret > 0)
440  off += ret;
441  /* else TODO error */
442  }
443 
444  return off;
445 }
446 
447 int BiopObjLocation::Process(const unsigned char *data)
448 {
449  int off = 0;
450 
451  m_componentTag = COMBINE32(data, 0);
452  if (0x49534F50 != m_componentTag)
453  {
454  LOG(VB_DSMCC, LOG_WARNING, "[biop] Invalid ObjectLocation tag");
455  return 0;
456  }
457  off += 4;
458 
459  m_componentDataLen = data[off++];
460  m_reference.m_nCarouselId = COMBINE32(data, off);
461 
462  off += 4;
463 
464  m_reference.m_nModuleId = (data[off] << 8) | data[off + 1];
465  off += 2;
466 
467  m_versionMajor = data[off++];
468  m_versionMinor = data[off++];
469  if (1 != m_versionMajor || 0 != m_versionMinor)
470  {
471  LOG(VB_DSMCC, LOG_WARNING, "[biop] Invalid ObjectLocation version");
472  return 0;
473  }
474 
475  uint objKeyLen = data[off++]; /* <= 4 */
476  m_reference.m_key = DSMCCCacheKey((char*)data + off, objKeyLen);
477  off += objKeyLen;
478  return off;
479 }
480 
481 // A Lite profile body is used to refer to an object referenced through
482 // a different PMT, We don't support that, at least at the moment.
483 int ProfileBodyLite::Process(const unsigned char * /*data*/)
484 {
485  LOG(VB_DSMCC, LOG_WARNING, "Found LiteProfileBody - Not Implemented Yet");
486  return 0;
487 }
488 
489 int ProfileBodyFull::Process(const unsigned char *data)
490 {
491  int off = 0;
492 
493  m_dataLen = COMBINE32(data, off);
494  off += 4;
495 
496  /* bit order */
497  if (data[off++] != 0)
498  {
499  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProfileBody invalid byte order");
500  return 0;
501  }
502 
503  m_liteComponentsCount = data[off++];
504  if (m_liteComponentsCount < 2)
505  {
506  LOG(VB_DSMCC, LOG_WARNING, "[biop] ProfileBody invalid components_count");
507  return 0;
508  }
509 
510  int ret = m_objLoc.Process(data + off);
511  if (ret <= 0)
512  return ret;
513  off += ret;
514 
515  ret = m_dsmConn.Process(data + off);
516  if (ret <= 0)
517  return ret;
518  off += ret;
519 
521 
522  /* UKProfile - ignore anything else */
523 
524  return off;
525 }
526 
527 int BiopIor::Process(const unsigned char *data)
528 {
529  int off = 0;
530  m_typeIdLen = COMBINE32(data, 0);
531  m_typeId = (char*) malloc(m_typeIdLen);
532  off += 4;
533  memcpy(m_typeId, data + off, m_typeIdLen);
534  off += m_typeIdLen;
535 
536  m_taggedProfilesCount = COMBINE32(data, off);
537  if (m_taggedProfilesCount < 1)
538  {
539  LOG(VB_DSMCC, LOG_WARNING, "[biop] IOR missing taggedProfile");
540  return 0;
541  }
542  off += 4;
543 
544  m_profileIdTag = COMBINE32(data, off);
545  off += 4;
546 
547  if (m_profileIdTag == 0x49534F06) // profile_id_tag == 0x49534F06
548  {
550  int ret = m_profileBody->Process(data + off);
551  if (ret <= 0)
552  return ret;
553  off += ret;
554  }
555  else if(m_profileIdTag == 0x49534F05) // profile_id_tag == 0x49534F05
556  {
558  int ret = m_profileBody->Process(data + off);
559  if (ret <= 0)
560  return ret;
561  off += ret;
562  }
563  else
564  {
565  /* UKProfile - receiver may ignore other profiles */
566  LOG(VB_DSMCC, LOG_WARNING, QString("[biop] Unknown Ior profile 0x%1")
567  .arg(m_profileIdTag, 0, 16));
568  return 0;
569  }
570 
571  return off;
572 }
573 
574 // An IOR may refer to other streams. We may have to add taps for them.
575 void BiopIor::AddTap(Dsmcc *pStatus) const
576 {
578  if (ref != nullptr)
579  pStatus->AddTap(ref->m_nStreamTag, ref->m_nCarouselId);
580 }
581 
583 {
584  free(m_selectorData);
585 }
BiopIor::m_profileIdTag
unsigned long m_profileIdTag
Definition: dsmccbiop.h:145
BiopNameComp::m_idLen
unsigned char m_idLen
Definition: dsmccbiop.h:27
BiopIor::m_profileBody
ProfileBody * m_profileBody
Definition: dsmccbiop.h:146
BiopIor::m_typeIdLen
unsigned long m_typeIdLen
Definition: dsmccbiop.h:142
BiopMessage::ProcessDir
bool ProcessDir(bool isSrg, DSMCCCacheModuleData *cachep, DSMCCCache *cache, const unsigned char *data, unsigned long *curp)
Process a Directory message.
Definition: dsmccbiop.cpp:215
DSMCCCacheModuleData::CarouselId
unsigned long CarouselId(void) const
Definition: dsmccobjcarousel.h:32
BiopMessage::ProcessMsgHdr
bool ProcessMsgHdr(const unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:151
hardwareprofile.smolt.timeout
float timeout
Definition: smolt.py:102
BiopModuleInfo::m_tap
BiopTap m_tap
Definition: dsmccbiop.h:222
BiopMessage::~BiopMessage
~BiopMessage()
Definition: dsmccbiop.cpp:145
BiopNameComp::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:24
dsmcccache.h
BiopTap::m_use
unsigned short m_use
Definition: dsmccbiop.h:54
DSMCCCacheModuleData
DSMCCCacheModuleData contains information about a module and holds the blocks for a partly completed ...
Definition: dsmccobjcarousel.h:23
DSMCCCache::m_dsmcc
Dsmcc * m_dsmcc
Definition: dsmcccache.h:124
BiopMessage::ProcessFile
bool ProcessFile(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:283
DSMCCCacheReference::m_nCarouselId
unsigned long m_nCarouselId
Definition: dsmcccache.h:51
BiopName::m_compCount
unsigned char m_compCount
Definition: dsmccbiop.h:41
BiopMessage::m_objInfoLen
unsigned int m_objInfoLen
Definition: dsmccbiop.h:194
BiopBinding::~BiopBinding
~BiopBinding()
Definition: dsmccbiop.cpp:103
DSMCCCache::AddFileInfo
static void AddFileInfo(DSMCCCacheDir *dir, const BiopBinding *pBB)
Definition: dsmcccache.cpp:199
DSMCCCache::AddDirInfo
static void AddDirInfo(DSMCCCacheDir *dir, const BiopBinding *pBB)
Definition: dsmcccache.cpp:216
DSMCCCache
Definition: dsmcccache.h:86
dsmccobjcarousel.h
BiopIor::m_typeId
char * m_typeId
Definition: dsmccbiop.h:143
BiopObjLocation::m_versionMinor
char m_versionMinor
Definition: dsmccbiop.h:84
BiopModuleInfo::Process
int Process(const unsigned char *Data)
Definition: dsmccbiop.cpp:351
BiopNameComp::m_kind
char * m_kind
Definition: dsmccbiop.h:30
ProfileBodyLite
Definition: dsmccbiop.h:117
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
BiopTap::m_assocTag
unsigned short m_assocTag
Definition: dsmccbiop.h:56
BiopNameComp::m_kindLen
unsigned char m_kindLen
Definition: dsmccbiop.h:28
ProfileBodyLite::Process
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:483
BiopTap::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:385
BiopMessage::m_objKind
char * m_objKind
Definition: dsmccbiop.h:198
DSMCCCacheReference::m_key
DSMCCCacheKey m_key
Definition: dsmcccache.h:54
ProfileBodyFull::m_objLoc
BiopObjLocation m_objLoc
Definition: dsmccbiop.h:109
BiopTap::m_selectorLen
unsigned short m_selectorLen
Definition: dsmccbiop.h:57
BiopTap::m_id
unsigned short m_id
Definition: dsmccbiop.h:53
ModuleDescriptorData::Process
void Process(const unsigned char *data, int length)
Definition: dsmccbiop.cpp:321
DSMCCCache::Directory
DSMCCCacheDir * Directory(const DSMCCCacheReference &ref)
Definition: dsmcccache.cpp:150
BiopMessage::m_objInfo
char * m_objInfo
Definition: dsmccbiop.h:195
BiopIor::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:527
ProfileBodyFull::Process
int Process(const unsigned char *data) override
Definition: dsmccbiop.cpp:489
DSMCCCacheReference::m_nStreamTag
unsigned short m_nStreamTag
Definition: dsmcccache.h:53
mythlogging.h
DSMCCCacheDir
Definition: dsmcccache.h:62
BiopModuleInfo::m_descriptorData
ModuleDescriptorData m_descriptorData
Definition: dsmccbiop.h:224
BiopName::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:47
BiopMessage::m_versionMajor
unsigned char m_versionMajor
Definition: dsmccbiop.h:189
ProfileBody::GetReference
virtual DSMCCCacheReference * GetReference()=0
BiopIor::AddTap
void AddTap(Dsmcc *pStatus) const
Definition: dsmccbiop.cpp:575
BiopBinding
Definition: dsmccbiop.h:151
BiopName::~BiopName
~BiopName()
Definition: dsmccbiop.cpp:42
ProfileBodyFull::m_dataLen
unsigned long m_dataLen
Definition: dsmccbiop.h:106
dsmccreceiver.h
dsmccbiop.h
DSMCCCache::Srg
DSMCCCacheDir * Srg(const DSMCCCacheReference &ref)
Definition: dsmcccache.cpp:127
BiopObjLocation::m_componentDataLen
char m_componentDataLen
Definition: dsmccbiop.h:82
ProfileBodyFull::m_dsmConn
BiopConnbinder m_dsmConn
Definition: dsmccbiop.h:113
uint
unsigned int uint
Definition: compat.h:81
BiopIor::m_taggedProfilesCount
unsigned long m_taggedProfilesCount
Definition: dsmccbiop.h:144
ModuleDescriptorData::m_isCompressed
bool m_isCompressed
Definition: dsmccbiop.h:209
Dsmcc::AddTap
ObjCarousel * AddTap(unsigned short componentTag, unsigned carouselId)
Add a tap.
Definition: dsmcc.cpp:61
BiopModuleInfo::m_minBlockTime
unsigned long m_minBlockTime
Definition: dsmccbiop.h:220
BiopNameComp::~BiopNameComp
~BiopNameComp()
Definition: dsmccbiop.cpp:16
BiopObjLocation::m_reference
DSMCCCacheReference m_reference
Definition: dsmccbiop.h:85
BiopBinding::m_bindingType
char m_bindingType
Definition: dsmccbiop.h:160
ModuleDescriptorData::m_originalSize
unsigned long m_originalSize
Definition: dsmccbiop.h:210
BiopConnbinder::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:418
BiopMessage::m_versionMinor
unsigned char m_versionMinor
Definition: dsmccbiop.h:190
BiopObjLocation::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:447
DSMCCCacheModuleData::StreamId
unsigned short StreamId(void) const
Definition: dsmccobjcarousel.h:34
BiopNameComp::m_id
char * m_id
Definition: dsmccbiop.h:29
Dsmcc
Definition: dsmcc.h:77
BiopObjLocation::m_componentTag
unsigned long m_componentTag
Definition: dsmccbiop.h:81
BiopConnbinder::m_componentTag
unsigned long m_componentTag
Definition: dsmccbiop.h:67
BiopTap::m_selectorData
char * m_selectorData
Definition: dsmccbiop.h:58
BiopTap::~BiopTap
~BiopTap()
Definition: dsmccbiop.cpp:582
BiopBinding::m_name
BiopName m_name
Definition: dsmccbiop.h:159
BiopBinding::m_objInfo
char * m_objInfo
Definition: dsmccbiop.h:163
DSMCCCacheKey
Definition: dsmcccache.h:21
BiopMessage::Process
bool Process(DSMCCCacheModuleData *cachep, DSMCCCache *cache, unsigned char *data, unsigned long *curp)
Definition: dsmccbiop.cpp:108
ProfileBodyFull
Definition: dsmccbiop.h:96
BiopMessage::m_messageSize
unsigned int m_messageSize
Definition: dsmccbiop.h:191
BiopMessage::m_objKindLen
unsigned long m_objKindLen
Definition: dsmccbiop.h:193
BiopBinding::m_objInfoLen
unsigned int m_objInfoLen
Definition: dsmccbiop.h:162
DSMCCCacheModuleData::ModuleId
unsigned short ModuleId(void) const
Definition: dsmccobjcarousel.h:33
BiopBinding::Process
int Process(const unsigned char *data)
Definition: dsmccbiop.cpp:69
COMBINE32
static constexpr uint32_t COMBINE32(const uint8_t *data, int idx)
Definition: dsmcc.h:120
BiopMessage::m_objKey
DSMCCCacheKey m_objKey
Definition: dsmccbiop.h:192
DSMCCCacheReference::m_nModuleId
unsigned short m_nModuleId
Definition: dsmcccache.h:52
BiopModuleInfo::m_tapsCount
unsigned char m_tapsCount
Definition: dsmccbiop.h:221
BiopName::m_comps
BiopNameComp * m_comps
Definition: dsmccbiop.h:42
BiopBinding::m_ior
BiopIor m_ior
Definition: dsmccbiop.h:161
BiopModuleInfo::m_blockTimeout
unsigned long m_blockTimeout
Definition: dsmccbiop.h:219
DSMCCCache::CacheFileData
void CacheFileData(const DSMCCCacheReference &ref, const QByteArray &data)
Definition: dsmcccache.cpp:173
BiopConnbinder::m_componentDataLen
unsigned char m_componentDataLen
Definition: dsmccbiop.h:68
BiopModuleInfo::m_modTimeout
unsigned long m_modTimeout
Definition: dsmccbiop.h:218
BiopNameComp
Definition: dsmccbiop.h:19
dsmcc.h
BiopConnbinder::m_tap
BiopTap m_tap
Definition: dsmccbiop.h:70
ProfileBodyFull::m_liteComponentsCount
char m_liteComponentsCount
Definition: dsmccbiop.h:108
ProfileBody::Process
virtual int Process(const unsigned char *)=0
DSMCCCacheReference
Definition: dsmcccache.h:33
BiopConnbinder::m_tapsCount
unsigned char m_tapsCount
Definition: dsmccbiop.h:69
BiopObjLocation::m_versionMajor
char m_versionMajor
Definition: dsmccbiop.h:83