string Profile::GetXml() const { string sXml("<Profile>\n"); char buffer[4096]; sprintf_s(buffer, _countof(buffer), "<Progress>%u</Progress>\n", _dwProgress); sXml += buffer; if (_resultsFormat == ResultsFormat::Text) { sXml += "<ResultFormat>text</ResultFormat>\n"; } else if (_resultsFormat == ResultsFormat::Xml) { sXml += "<ResultFormat>xml</ResultFormat>\n"; } else { sXml += "<ResultFormat>* UNSUPPORTED *</ResultFormat>\n"; } sXml += _fVerbose ? "<Verbose>true</Verbose>\n" : "<Verbose>false</Verbose>\n"; if (_precreateFiles == PrecreateFiles::UseMaxSize) { sXml += "<PrecreateFiles>UseMaxSize</PrecreateFiles>\n"; } else if (_precreateFiles == PrecreateFiles::OnlyFilesWithConstantSizes) { sXml += "<PrecreateFiles>CreateOnlyFilesWithConstantSizes</PrecreateFiles>\n"; } else if (_precreateFiles == PrecreateFiles::OnlyFilesWithConstantOrZeroSizes) { sXml += "<PrecreateFiles>CreateOnlyFilesWithConstantOrZeroSizes</PrecreateFiles>\n"; } if (_fEtwEnabled) { sXml += _fEtwProcess ? "<Process>true</Process>\n" : "<Process>false</Process>\n"; sXml += _fEtwThread ? "<Thread>true</Thread>\n" : "<Thread>false</Thread>\n"; sXml += _fEtwImageLoad ? "<ImageLoad>true</ImageLoad>\n" : "<ImageLoad>false</ImageLoad>\n"; sXml += _fEtwDiskIO ? "<DiskIO>true</DiskIO>\n" : "<DiskIO>false</DiskIO>\n"; sXml += _fEtwMemoryPageFaults ? "<MemoryPageFaults>true</MemoryPageFaults>\n" : "<MemoryPageFaults>false</MemoryPageFaults>\n"; sXml += _fEtwMemoryHardFaults ? "<MemoryHardFaults>true</MemoryHardFaults>\n" : "<MemoryHardFaults>false</MemoryHardFaults>\n"; sXml += _fEtwNetwork ? "<Network>true</Network>\n" : "<Network>false</Network>\n"; sXml += _fEtwRegistry ? "<Registry>true</Registry>\n" : "<Registry>false</Registry>\n"; sXml += _fEtwUsePagedMemory ? "<UsePagedMemory>true</UsePagedMemory>\n" : "<UsePagedMemory>false</UsePagedMemory>\n"; sXml += _fEtwUsePerfTimer ? "<UsePerfTimer>true</UsePerfTimer>\n" : "<UsePerfTimer>false</UsePerfTimer>\n"; sXml += _fEtwUseSystemTimer ? "<UseSystemTimer>true</UseSystemTimer>\n" : "<UseSystemTimer>false</UseSystemTimer>\n"; sXml += _fEtwUseCyclesCounter ? "<UseCyclesCounter>true</UseCyclesCounter>\n" : "<UseCyclesCounter>false</UseCyclesCounter>\n"; } sXml += "<TimeSpans>\n"; for (auto timespan : _vTimeSpans) { sXml += timespan.GetXml(); } sXml += "</TimeSpans>\n"; sXml += "</Profile>\n"; return sXml; }
string TimeSpan::GetXml() const { string sXml("<TimeSpan>\n"); char buffer[4096]; sXml += _fCompletionRoutines ? "<CompletionRoutines>true</CompletionRoutines>\n" : "<CompletionRoutines>false</CompletionRoutines>\n"; sXml += _fMeasureLatency ? "<MeasureLatency>true</MeasureLatency>\n" : "<MeasureLatency>false</MeasureLatency>\n"; sXml += _fCalculateIopsStdDev ? "<CalculateIopsStdDev>true</CalculateIopsStdDev>\n" : "<CalculateIopsStdDev>false</CalculateIopsStdDev>\n"; sXml += _fDisableAffinity ? "<DisableAffinity>true</DisableAffinity>\n" : "<DisableAffinity>false</DisableAffinity>\n"; sXml += _fGroupAffinity ? "<GroupAffinity>true</GroupAffinity>\n" : "<GroupAffinity>false</GroupAffinity>\n"; sprintf_s(buffer, _countof(buffer), "<Duration>%u</Duration>\n", _ulDuration); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<Warmup>%u</Warmup>\n", _ulWarmUp); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<Cooldown>%u</Cooldown>\n", _ulCoolDown); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<ThreadCount>%u</ThreadCount>\n", _dwThreadCount); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<IoBucketDuration>%u</IoBucketDuration>\n", _ulIoBucketDurationInMilliseconds); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<RandSeed>%u</RandSeed>\n", _ulRandSeed); sXml += buffer; if (_vAffinity.size() > 0) { sXml += "<Affinity>\n"; for (auto a : _vAffinity) { sprintf_s(buffer, _countof(buffer), "<AffinityAssignment>%u</AffinityAssignment>\n", a); sXml += buffer; } sXml += "</Affinity>\n"; } sXml += "<Targets>\n"; for (auto target : _vTargets) { sXml += target.GetXml(); } sXml += "</Targets>\n"; sXml += "</TimeSpan>\n"; return sXml; }
UPnpDeviceDesc *UPnpDeviceDesc::Retrieve( QString &sURL ) { UPnpDeviceDesc *pDevice = nullptr; LOG(VB_UPNP, LOG_DEBUG, QString("UPnpDeviceDesc::Retrieve( %1 )") .arg(sURL)); QByteArray buffer; bool ok = GetMythDownloadManager()->download(sURL, &buffer); QString sXml(buffer); if (ok && sXml.startsWith( QString("<?xml") )) { QString sErrorMsg; QDomDocument xml( "upnp" ); if ( xml.setContent( sXml, false, &sErrorMsg )) { pDevice = new UPnpDeviceDesc(); pDevice->Load( xml ); pDevice->m_HostUrl = sURL; pDevice->m_sHostName = pDevice->m_HostUrl.host(); } else { LOG(VB_UPNP, LOG_ERR, QString("Error parsing device description xml [%1]") .arg(sErrorMsg)); } } else { LOG(VB_UPNP, LOG_ERR, QString("Invalid response '%1'").arg(sXml)); } return pDevice; }
string Target::GetXml() const { char buffer[4096]; string sXml("<Target>\n"); sXml += "<Path>" + _sPath + "</Path>\n"; sprintf_s(buffer, _countof(buffer), "<BlockSize>%u</BlockSize>\n", _dwBlockSize); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<StrideSize>%I64u</StrideSize>\n", GetStrideSizeInBytes()); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<BaseFileOffset>%I64u</BaseFileOffset>\n", _ullBaseFileOffset); sXml += buffer; sXml += _fSequentialScan ? "<SequentialScan>true</SequentialScan>\n" : "<SequentialScan>false</SequentialScan>\n"; sXml += _fRandomAccess ? "<RandomAccess>true</RandomAccess>\n" : "<RandomAccess>false</RandomAccess>\n"; sXml += _fUseLargePages ? "<UseLargePages>true</UseLargePages>\n" : "<UseLargePages>false</UseLargePages>\n"; sXml += _fDisableAllCache ? "<DisableAllCache>true</DisableAllCache>\n" : "<DisableAllCache>false</DisableAllCache>\n"; sXml += _fDisableOSCache ? "<DisableOSCache>true</DisableOSCache>\n" : "<DisableOSCache>false</DisableOSCache>\n"; sXml += "<WriteBufferContent>\n"; if (_fZeroWriteBuffers) { sXml += "<Pattern>zero</Pattern>\n"; } else if (_cbRandomDataWriteBuffer == 0) { sXml += "<Pattern>sequential</Pattern>\n"; } else { sXml += "<Pattern>random</Pattern>\n"; sXml += "<RandomDataSource>\n"; sprintf_s(buffer, _countof(buffer), "<SizeInBytes>%I64u</SizeInBytes>\n", _cbRandomDataWriteBuffer); sXml += buffer; if (_sRandomDataWriteBufferSourcePath != "") { sXml += "<FilePath>" + _sRandomDataWriteBufferSourcePath + "</FilePath>\n"; } sXml += "</RandomDataSource>\n"; } sXml += "</WriteBufferContent>\n"; sXml += _fParallelAsyncIO ? "<ParallelAsyncIO>true</ParallelAsyncIO>\n" : "<ParallelAsyncIO>false</ParallelAsyncIO>\n"; if (_fUseBurstSize) { sprintf_s(buffer, _countof(buffer), "<BurstSize>%u</BurstSize>\n", _dwBurstSize); sXml += buffer; } if (_fThinkTime) { sprintf_s(buffer, _countof(buffer), "<ThinkTime>%u</ThinkTime>\n", _dwThinkTime); sXml += buffer; } if (_fCreateFile) { sprintf_s(buffer, _countof(buffer), "<FileSize>%I64u</FileSize>\n", _ullFileSize); sXml += buffer; } if (_fUseRandomAlignment) { sprintf_s(buffer, _countof(buffer), "<Random>%I64u</Random>\n", _ullRandom); sXml += buffer; } sprintf_s(buffer, _countof(buffer), "<ThreadStride>%I64u</ThreadStride>\n", _ullThreadStride); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<MaxFileSize>%I64u</MaxFileSize>\n", _ullMaxFileSize); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<RequestCount>%u</RequestCount>\n", _dwRequestCount); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<WriteRatio>%u</WriteRatio>\n", _ulWriteRatio); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<Throughput>%u</Throughput>\n", _dwThroughputBytesPerMillisecond); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<ThreadsPerFile>%u</ThreadsPerFile>\n", _dwThreadsPerFile); sXml += buffer; if (_ioPriorityHint == IoPriorityHintVeryLow) { sXml += "<IOPriority>1</IOPriority>\n"; } else if (_ioPriorityHint == IoPriorityHintLow) { sXml += "<IOPriority>2</IOPriority>\n"; } else if (_ioPriorityHint == IoPriorityHintNormal) { sXml += "<IOPriority>3</IOPriority>\n"; } else { sXml += "<IOPriority>* UNSUPPORTED *</IOPriority>\n"; } sXml += "</Target>\n"; return sXml; }
string Target::GetXml() const { char buffer[4096]; string sXml("<Target>\n"); sXml += "<Path>" + _sPath + "</Path>\n"; sprintf_s(buffer, _countof(buffer), "<BlockSize>%u</BlockSize>\n", _dwBlockSize); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<BaseFileOffset>%I64u</BaseFileOffset>\n", _ullBaseFileOffset); sXml += buffer; sXml += _fSequentialScanHint ? "<SequentialScan>true</SequentialScan>\n" : "<SequentialScan>false</SequentialScan>\n"; sXml += _fRandomAccessHint ? "<RandomAccess>true</RandomAccess>\n" : "<RandomAccess>false</RandomAccess>\n"; sXml += _fUseLargePages ? "<UseLargePages>true</UseLargePages>\n" : "<UseLargePages>false</UseLargePages>\n"; sXml += _fDisableAllCache ? "<DisableAllCache>true</DisableAllCache>\n" : "<DisableAllCache>false</DisableAllCache>\n"; // normalize cache controls - disabling the OS cache is included if all caches are disabled, // so specifying it twice is not neccesary (this generates a warning on the cmdline) if (!_fDisableAllCache) { sXml += _fDisableOSCache ? "<DisableOSCache>true</DisableOSCache>\n" : "<DisableOSCache>false</DisableOSCache>\n"; } sXml += "<WriteBufferContent>\n"; if (_fZeroWriteBuffers) { sXml += "<Pattern>zero</Pattern>\n"; } else if (_cbRandomDataWriteBuffer == 0) { sXml += "<Pattern>sequential</Pattern>\n"; } else { sXml += "<Pattern>random</Pattern>\n"; sXml += "<RandomDataSource>\n"; sprintf_s(buffer, _countof(buffer), "<SizeInBytes>%I64u</SizeInBytes>\n", _cbRandomDataWriteBuffer); sXml += buffer; if (_sRandomDataWriteBufferSourcePath != "") { sXml += "<FilePath>" + _sRandomDataWriteBufferSourcePath + "</FilePath>\n"; } sXml += "</RandomDataSource>\n"; } sXml += "</WriteBufferContent>\n"; sXml += _fParallelAsyncIO ? "<ParallelAsyncIO>true</ParallelAsyncIO>\n" : "<ParallelAsyncIO>false</ParallelAsyncIO>\n"; if (_fUseBurstSize) { sprintf_s(buffer, _countof(buffer), "<BurstSize>%u</BurstSize>\n", _dwBurstSize); sXml += buffer; } if (_fThinkTime) { sprintf_s(buffer, _countof(buffer), "<ThinkTime>%u</ThinkTime>\n", _dwThinkTime); sXml += buffer; } if (_fCreateFile) { sprintf_s(buffer, _countof(buffer), "<FileSize>%I64u</FileSize>\n", _ullFileSize); sXml += buffer; } // If XML contains <Random>, <StrideSize> is ignored if (_fUseRandomAccessPattern) { sprintf_s(buffer, _countof(buffer), "<Random>%I64u</Random>\n", GetBlockAlignmentInBytes()); sXml += buffer; } else { sprintf_s(buffer, _countof(buffer), "<StrideSize>%I64u</StrideSize>\n", GetBlockAlignmentInBytes()); sXml += buffer; sXml += _fInterlockedSequential ? "<InterlockedSequential>true</InterlockedSequential>\n" : "<InterlockedSequential>false</InterlockedSequential>\n"; } sprintf_s(buffer, _countof(buffer), "<ThreadStride>%I64u</ThreadStride>\n", _ullThreadStride); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<MaxFileSize>%I64u</MaxFileSize>\n", _ullMaxFileSize); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<RequestCount>%u</RequestCount>\n", _dwRequestCount); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<WriteRatio>%u</WriteRatio>\n", _ulWriteRatio); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<Throughput>%u</Throughput>\n", _dwThroughputBytesPerMillisecond); sXml += buffer; sprintf_s(buffer, _countof(buffer), "<ThreadsPerFile>%u</ThreadsPerFile>\n", _dwThreadsPerFile); sXml += buffer; if (_ioPriorityHint == IoPriorityHintVeryLow) { sXml += "<IOPriority>1</IOPriority>\n"; } else if (_ioPriorityHint == IoPriorityHintLow) { sXml += "<IOPriority>2</IOPriority>\n"; } else if (_ioPriorityHint == IoPriorityHintNormal) { sXml += "<IOPriority>3</IOPriority>\n"; } else { sXml += "<IOPriority>* UNSUPPORTED *</IOPriority>\n"; } sXml += "</Target>\n"; return sXml; }