- Timestamp:
- Dec 6, 2024 10:46:24 AM (5 months ago)
- svn:sync-xref-src-repo-rev:
- 166254
- Location:
- trunk/src/VBox/Main
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/ObjectsTracker.h
r106907 r107240 76 76 { 77 77 public: 78 enum State { Invalid, Valid };79 80 78 TrackedObjectData(); 81 79 … … 117 115 } 118 116 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; 127 145 } 128 146 … … 130 148 com::Utf8Str initIdleTime(); 131 149 com::Utf8Str creationTimeStr() const; 150 TrackedObjectState_T deletionTime(PRTTIMESPEC aTime) const; 151 TrackedObjectState_T updateState(TrackedObjectState_T aNewState); 132 152 133 153 private: … … 137 157 RTTIMESPEC m_creationTime;//creation time 138 158 RTTIMESPEC m_idleTimeStart;//idle time beginning (ref counter is 1) 159 RTTIMESPEC m_deletionTime;//deletion time (m_creationTime + m_lifeTime + m_idleTime) 139 160 RTTIMESPEC m_lastAccessTime;//last access time 140 161 uint64_t m_lifeTime;//lifetime after creation in seconds, 0 - live till the VBoxSVC lives 141 162 uint64_t m_idleTime;//lifetime after out of usage in seconds, 0 - keep forever 142 163 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 Invalid164 TrackedObjectState_T m_state; 144 165 ComPtr<IUnknown> m_pIface;//keeps a reference to a tracked object 145 166 -
trunk/src/VBox/Main/src-all/ObjectsTracker.cpp
r107151 r107240 47 47 m_lifeTime(0), 48 48 m_idleTime(1), 49 m_ State(TrackedObjectData::Invalid),49 m_state(TrackedObjectState_None), 50 50 m_pIface(NULL) 51 51 { … … 68 68 RTTimeNow(unconst(&m_creationTime)); 69 69 m_lastAccessTime = m_creationTime; 70 m_ State = TrackedObjectData::Valid;70 m_state = TrackedObjectState_Alive; 71 71 } 72 72 … … 83 83 m_pIface = that.m_pIface; 84 84 m_creationTime = that.m_creationTime; 85 m_deletionTime = that.m_deletionTime; 85 86 m_lastAccessTime = that.m_lastAccessTime; 86 87 m_idleTimeStart = that.m_idleTimeStart; 87 88 m_fIdleTimeStart = that.m_fIdleTimeStart; 88 m_ State = that.m_State;89 m_state = that.m_state; 89 90 } 90 91 } … … 111 112 m_pIface = that.m_pIface; 112 113 m_creationTime = that.m_creationTime; 114 m_deletionTime = that.m_deletionTime; 113 115 m_lastAccessTime = that.m_lastAccessTime; 114 116 m_idleTimeStart = that.m_idleTimeStart; 115 117 m_fIdleTimeStart = that.m_fIdleTimeStart; 116 m_ State = that.m_State;118 m_state = that.m_state; 117 119 } 118 120 … … 134 136 if (!m_fIdleTimeStart) 135 137 { 138 RTTimeNow(unconst(&m_deletionTime)); 139 updateState(TrackedObjectState_Deleted);//Alive -> Deleted 136 140 RTTimeNow(unconst(&m_idleTimeStart)); 137 141 m_fIdleTimeStart = true; … … 149 153 150 154 return com::Utf8Str(szCreationTime); 155 } 156 157 TrackedObjectState_T TrackedObjectData::deletionTime(PRTTIMESPEC aTime) const 158 { 159 if (m_state != TrackedObjectState_Alive) 160 *aTime = m_deletionTime; 161 return m_state; 151 162 } 152 163 … … 167 178 } 168 179 return cRefs; 180 } 181 182 TrackedObjectState_T TrackedObjectData::updateState(TrackedObjectState_T aNewState) 183 { 184 return m_state < aNewState ? m_state = aNewState : m_state; 169 185 } 170 186 … … 345 361 if ( i_getObj(aObjId).getInterface().isNotNull() ) 346 362 { 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) 349 364 { 350 365 aObjData = i_getObj(aObjId); … … 666 681 if (pIter != m_trackedObjectsData.end()) 667 682 { 668 pIter->second. resetState();683 pIter->second.updateState(TrackedObjectState_Invalid);//Deleted -> Invalid 669 684 m_trackedInvalidObjectIds.insert(aObjId); 670 685 hrc = S_OK;
Note:
See TracChangeset
for help on using the changeset viewer.