VirtualBox

Changeset 107240 in vbox for trunk/src


Ignore:
Timestamp:
Dec 6, 2024 10:46:24 AM (5 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
166254
Message:

bugref:10806. New TrackedObjectState enum usage. Added member m_deletionTime. Added the functions updateState, deletionTime. Added getters idleTime, lifeTime, deletionTime, creationTime. Fixed the function resetState and getter state.

Location:
trunk/src/VBox/Main
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/ObjectsTracker.h

    r106907 r107240  
    7676{
    7777public:
    78     enum State { Invalid, Valid };
    79 
    8078    TrackedObjectData();
    8179
     
    117115    }
    118116
    119     inline State state() const
    120     {
    121         return m_State;
    122     }
    123 
    124     inline State resetState()
    125     {
    126         return m_State = Invalid;
     117    inline TrackedObjectState_T state() const
     118    {
     119        return m_state;
     120    }
     121
     122    inline TrackedObjectState_T resetState()
     123    {
     124        return m_state = TrackedObjectState_Invalid;
     125    }
     126
     127    inline RTTIMESPEC creationTime() const
     128    {
     129        return m_creationTime;
     130    }
     131
     132    inline RTTIMESPEC deletionTime() const
     133    {
     134        return m_deletionTime;
     135    }
     136
     137    inline uint64_t lifeTime() const
     138    {
     139        return m_lifeTime;
     140    }
     141
     142    inline uint64_t idleTime() const
     143    {
     144        return m_idleTime;
    127145    }
    128146
     
    130148    com::Utf8Str initIdleTime();
    131149    com::Utf8Str creationTimeStr() const;
     150    TrackedObjectState_T deletionTime(PRTTIMESPEC aTime) const;
     151    TrackedObjectState_T updateState(TrackedObjectState_T aNewState);
    132152
    133153private:
     
    137157    RTTIMESPEC m_creationTime;//creation time
    138158    RTTIMESPEC m_idleTimeStart;//idle time beginning (ref counter is 1)
     159    RTTIMESPEC m_deletionTime;//deletion time (m_creationTime + m_lifeTime + m_idleTime)
    139160    RTTIMESPEC m_lastAccessTime;//last access time
    140161    uint64_t m_lifeTime;//lifetime after creation in seconds, 0 - live till the VBoxSVC lives
    141162    uint64_t m_idleTime;//lifetime after out of usage in seconds, 0 - keep forever
    142163    bool m_fIdleTimeStart;//when ref counter of m_pIface is 1 or m_lifeTime exceeded
    143     State m_State;//state may have only 2 variants Valid or Invalid. State has only one transition from Valid to Invalid
     164    TrackedObjectState_T m_state;
    144165    ComPtr<IUnknown> m_pIface;//keeps a reference to a tracked object
    145166
  • trunk/src/VBox/Main/src-all/ObjectsTracker.cpp

    r107151 r107240  
    4747    m_lifeTime(0),
    4848    m_idleTime(1),
    49     m_State(TrackedObjectData::Invalid),
     49    m_state(TrackedObjectState_None),
    5050    m_pIface(NULL)
    5151    {
     
    6868    RTTimeNow(unconst(&m_creationTime));
    6969    m_lastAccessTime = m_creationTime;
    70     m_State = TrackedObjectData::Valid;
     70    m_state = TrackedObjectState_Alive;
    7171}
    7272
     
    8383        m_pIface = that.m_pIface;
    8484        m_creationTime = that.m_creationTime;
     85        m_deletionTime = that.m_deletionTime;
    8586        m_lastAccessTime = that.m_lastAccessTime;
    8687        m_idleTimeStart = that.m_idleTimeStart;
    8788        m_fIdleTimeStart = that.m_fIdleTimeStart;
    88         m_State = that.m_State;
     89        m_state = that.m_state;
    8990    }
    9091}
     
    111112        m_pIface = that.m_pIface;
    112113        m_creationTime = that.m_creationTime;
     114        m_deletionTime = that.m_deletionTime;
    113115        m_lastAccessTime = that.m_lastAccessTime;
    114116        m_idleTimeStart = that.m_idleTimeStart;
    115117        m_fIdleTimeStart = that.m_fIdleTimeStart;
    116         m_State = that.m_State;
     118        m_state = that.m_state;
    117119    }
    118120
     
    134136    if (!m_fIdleTimeStart)
    135137    {
     138        RTTimeNow(unconst(&m_deletionTime));
     139        updateState(TrackedObjectState_Deleted);//Alive -> Deleted
    136140        RTTimeNow(unconst(&m_idleTimeStart));
    137141        m_fIdleTimeStart = true;
     
    149153
    150154    return com::Utf8Str(szCreationTime);
     155}
     156
     157TrackedObjectState_T TrackedObjectData::deletionTime(PRTTIMESPEC aTime) const
     158{
     159    if (m_state != TrackedObjectState_Alive)
     160        *aTime = m_deletionTime;
     161    return m_state;
    151162}
    152163
     
    167178    }
    168179    return cRefs;
     180}
     181
     182TrackedObjectState_T TrackedObjectData::updateState(TrackedObjectState_T aNewState)
     183{
     184    return m_state < aNewState ? m_state = aNewState : m_state;
    169185}
    170186
     
    345361        if ( i_getObj(aObjId).getInterface().isNotNull() )
    346362        {
    347             /* Excessive check because user may get only the valid objects Ids. But for 200% assurance it's here */
    348             if (i_getObj(aObjId).state() == TrackedObjectData::Valid)
     363            if (i_getObj(aObjId).state() != TrackedObjectState_Invalid)
    349364            {
    350365                aObjData = i_getObj(aObjId);
     
    666681    if (pIter != m_trackedObjectsData.end())
    667682    {
    668         pIter->second.resetState();
     683        pIter->second.updateState(TrackedObjectState_Invalid);//Deleted -> Invalid
    669684        m_trackedInvalidObjectIds.insert(aObjId);
    670685        hrc = S_OK;
Note: See TracChangeset for help on using the changeset viewer.

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