VirtualBox

Ignore:
Timestamp:
Jan 31, 2024 11:13:23 AM (13 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161387
Message:

FE/Qt: bugref:10501. Adding progress tasks for metric list and metric data inquiries.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/activity/overview/UIVMActivityOverviewWidget.cpp

    r103138 r103139  
    347347
    348348    void sltTimeout();
    349 
     349    void sltMetricNameListingComplete(QVector<QString> metricNameList);
     350    void sltMetricDataReceived(KMetricType enmMetricType,
     351                               const QVector<QString> &data, const QVector<QString> &timeStamps);
    350352private:
     353
     354    void getMetricList();
    351355    QTimer *m_pTimer;
    352356    CCloudMachine m_comCloudMachine;
    353357    KCloudMachineState m_enmMachineState;
     358    QVector<KMetricType> m_availableMetricTypes;
    354359};
    355360
     
    954959    , m_comCloudMachine(comCloudMachine)
    955960{
    956     m_enmMachineState = comCloudMachine.GetState();
     961    updateMachineState();
    957962    m_pTimer = new QTimer(this);
    958963    if (m_pTimer)
     
    961966        m_pTimer->setInterval(60 * 1000);
    962967    }
    963     if (isRunning() && m_pTimer)
    964     m_pTimer->start();
    965968}
    966969
     
    10111014void UIActivityOverviewItemCloud::sltTimeout()
    10121015{
     1016    int iDataSize = 1;
     1017    foreach (const KMetricType &enmMetricType, m_availableMetricTypes)
     1018    {
     1019        UIProgressTaskReadCloudMachineMetricData *pTask = new UIProgressTaskReadCloudMachineMetricData(this, m_comCloudMachine,
     1020                                                                                                       enmMetricType, iDataSize);
     1021        connect(pTask, &UIProgressTaskReadCloudMachineMetricData::sigMetricDataReceived,
     1022                this, &UIActivityOverviewItemCloud::sltMetricDataReceived);
     1023        pTask->start();
     1024    }
     1025}
     1026
     1027void UIActivityOverviewItemCloud::sltMetricDataReceived(KMetricType enmMetricType,
     1028                                                        const QVector<QString> &data, const QVector<QString> &timeStamps)
     1029{
     1030    Q_UNUSED(enmMetricType);
     1031    Q_UNUSED(data);
     1032    Q_UNUSED(timeStamps);
     1033    // if (!data.isEmpty())
     1034    //     printf("%d %lld %s\n", enmMetricType, data.size(), qPrintable(data[0]));
     1035    sender()->deleteLater();
    10131036}
    10141037
     
    10211044        return;
    10221045    m_enmMachineState = enmState;
     1046    if (isRunning())
     1047        getMetricList();
     1048    else
     1049    {
     1050        if (m_pTimer)
     1051            m_pTimer->stop();
     1052    }
     1053}
     1054
     1055void UIActivityOverviewItemCloud::getMetricList()
     1056{
     1057    if (!isRunning())
     1058        return;
     1059    UIProgressTaskReadCloudMachineMetricList *pReadListProgressTask =
     1060        new UIProgressTaskReadCloudMachineMetricList(this, m_comCloudMachine);
     1061    AssertPtrReturnVoid(pReadListProgressTask);
     1062    connect(pReadListProgressTask, &UIProgressTaskReadCloudMachineMetricList::sigMetricListReceived,
     1063            this, &UIActivityOverviewItemCloud::sltMetricNameListingComplete);
     1064    pReadListProgressTask->start();
     1065}
     1066
     1067void UIActivityOverviewItemCloud::sltMetricNameListingComplete(QVector<QString> metricNameList)
     1068{
     1069    AssertReturnVoid(m_pTimer);
     1070    m_availableMetricTypes.clear();
     1071    foreach (const QString &strName, metricNameList)
     1072        m_availableMetricTypes << gpConverter->fromInternalString<KMetricType>(strName);
     1073
     1074    if (!m_availableMetricTypes.isEmpty())
     1075    {
     1076        /* Dont wait 60 secs: */
     1077        sltTimeout();
     1078        m_pTimer->start();
     1079    }
     1080    else
     1081        m_pTimer->stop();
     1082
     1083    if (sender())
     1084        sender()->deleteLater();
     1085
    10231086}
    10241087
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette