VirtualBox

Changeset 90546 in vbox


Ignore:
Timestamp:
Aug 6, 2021 1:17:21 PM (4 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:10067: UINetworkRequestManager: Reworking network-customer [un]registration management.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/networking
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/networking/UINetworkCustomer.cpp

    r90524 r90546  
    2727}
    2828
     29UINetworkCustomer::~UINetworkCustomer()
     30{
     31    emit sigBeingDestroyed(this);
     32}
     33
    2934void UINetworkCustomer::createNetworkRequest(UINetworkRequestType enmType,
    3035                                             const QList<QUrl> urls,
  • trunk/src/VBox/Frontends/VirtualBox/src/networking/UINetworkCustomer.h

    r90541 r90546  
    3838    Q_OBJECT;
    3939
     40signals:
     41
     42    /** Notifies listeners about @a pNetworkCustomer being destroyed. */
     43    void sigBeingDestroyed(UINetworkCustomer *pNetworkCustomer);
     44
    4045public:
    4146
     
    4348      * @param  fForceCall  Brings whether this customer has forced privelegies. */
    4449    UINetworkCustomer(QObject *pParent = 0, bool fForceCall = true);
     50    /** Destructs network customer. */
     51    virtual ~UINetworkCustomer() /* override */;
    4552
    4653    /** Returns whether this customer has forced privelegies. */
  • trunk/src/VBox/Frontends/VirtualBox/src/networking/UINetworkRequestManager.cpp

    r90540 r90546  
    7979        m_requests.insert(uId, pNetworkRequest);
    8080        m_customers.insert(uId, pCustomer);
     81        connect(pCustomer, &UINetworkCustomer::sigBeingDestroyed,
     82                this, &UINetworkRequestManager::sltHandleNetworkCustomerBeingDestroyed,
     83                Qt::UniqueConnection);
    8184
    8285        /* Return ID: */
     
    110113    /* Delegate request to customer: */
    111114    UINetworkCustomer *pNetworkCustomer = m_customers.value(uId);
    112     AssertPtrReturnVoid(pNetworkCustomer);
    113     pNetworkCustomer->processNetworkReplyProgress(iReceived, iTotal);
     115    if (pNetworkCustomer)
     116        pNetworkCustomer->processNetworkReplyProgress(iReceived, iTotal);
    114117}
    115118
     
    124127    /* Delegate request to customer: */
    125128    UINetworkCustomer *pNetworkCustomer = m_customers.value(uId);
    126     AssertPtrReturnVoid(pNetworkCustomer);
    127     pNetworkCustomer->processNetworkReplyFailed(strError);
     129    if (pNetworkCustomer)
     130        pNetworkCustomer->processNetworkReplyFailed(strError);
    128131
    129132    /* Cleanup request: */
     
    141144    /* Delegate request to customer: */
    142145    UINetworkCustomer *pNetworkCustomer = m_customers.value(uId);
    143     AssertPtrReturnVoid(pNetworkCustomer);
    144     pNetworkCustomer->processNetworkReplyCanceled(pNetworkRequest->reply());
     146    if (pNetworkCustomer)
     147        pNetworkCustomer->processNetworkReplyCanceled(pNetworkRequest->reply());
    145148
    146149    /* Cleanup request: */
     
    158161    /* Delegate request to customer: */
    159162    UINetworkCustomer *pNetworkCustomer = m_customers.value(uId);
    160     AssertPtrReturnVoid(pNetworkCustomer);
    161     pNetworkCustomer->processNetworkReplyFinished(pNetworkRequest->reply());
     163    if (pNetworkCustomer)
     164        pNetworkCustomer->processNetworkReplyFinished(pNetworkRequest->reply());
    162165
    163166    /* Cleanup request: */
     
    165168}
    166169
     170void UINetworkRequestManager::sltHandleNetworkCustomerBeingDestroyed(UINetworkCustomer *pNetworkCustomer)
     171{
     172    /* Make sure customer was and still registered: */
     173    const QList<QUuid> ids = m_customers.keys(pNetworkCustomer);
     174    AssertReturnVoid(!ids.isEmpty());
     175    /* Unregister it: */
     176    foreach (const QUuid &uId, ids)
     177        m_customers.remove(uId);
     178}
     179
    167180void UINetworkRequestManager::prepare()
    168181{
     
    174187    delete m_requests.value(uId);
    175188    m_requests.remove(uId);
    176     m_customers.remove(uId);
    177189}
    178190
  • trunk/src/VBox/Frontends/VirtualBox/src/networking/UINetworkRequestManager.h

    r90540 r90546  
    8080    void sltHandleNetworkRequestFinish();
    8181
     82    /** Handles signal about @a pNetworkCustomer being destroyed. */
     83    void sltHandleNetworkCustomerBeingDestroyed(UINetworkCustomer *pNetworkCustomer);
     84
    8285private:
    8386
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