140 CleanupStack::Pop(); // file |
140 CleanupStack::Pop(); // file |
141 CleanupClosePushL( stream ); |
141 CleanupClosePushL( stream ); |
142 |
142 |
143 // Verion info |
143 // Verion info |
144 stream.WriteInt32L( KMemSpySettingsFileFormatVersion ); |
144 stream.WriteInt32L( KMemSpySettingsFileFormatVersion ); |
145 |
145 |
|
146 iMemSpySession.GetOutputSink( iSinkType ); |
146 stream.WriteUint8L( iSinkType ); |
147 stream.WriteUint8L( iSinkType ); |
147 |
148 |
148 |
149 // Get SWMT config |
149 // Get SWMT config |
150 GetSwmtConfig( iSwmtConfig ); |
150 //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker(); |
151 |
151 //TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
152 stream.WriteInt32L( iSwmtConfig.iTimerPeriod.Int() ); |
152 //swmt.GetConfig( swmtConfig ); |
153 stream.WriteUint8L( iSwmtConfig.iDumpData ); |
153 |
|
154 // Write SWMT settings |
|
155 //stream.WriteInt32L( swmtConfig.TimerPeriod().Int() ); |
|
156 //stream.WriteUint8L( swmtConfig.DumpData() ); |
|
157 |
|
158 stream.WriteInt32L( iSwmtConfig.TimerPeriod().Int() ); |
|
159 stream.WriteUint8L( iSwmtConfig.DumpData() ); |
|
160 |
154 |
161 // Write memory tracking auto-start process list |
155 // Write memory tracking auto-start process list |
162 /* |
156 /* |
163 const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList(); |
157 const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList(); |
164 stream.WriteInt32L( processUidList.Count() ); |
158 stream.WriteInt32L( processUidList.Count() ); |
166 { |
160 { |
167 const TUid uid = processUidList[ i ]; |
161 const TUid uid = processUidList[ i ]; |
168 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) ); |
162 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) ); |
169 stream << uid; |
163 stream << uid; |
170 } |
164 } |
171 */ |
165 */ |
172 stream.WriteInt32L( iUidList.Count() ); |
166 |
173 for( TInt i = 0; i < iUidList.Count(); i++ ) |
167 // Write memory tracking categories |
174 { |
|
175 const TUid uid = iUidList[ i ]; |
|
176 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) ); |
|
177 stream << uid; |
|
178 } |
|
179 |
|
180 // Write memory tracking categories |
|
181 //stream.WriteInt32L( swmtConfig.iEnabledCategories ); |
|
182 stream.WriteInt32L( iSwmtConfig.iEnabledCategories ); |
168 stream.WriteInt32L( iSwmtConfig.iEnabledCategories ); |
183 |
169 |
184 // Write heap tracking thread name filter |
170 // Write heap tracking thread name filter |
185 //stream.WriteInt32L( swmtConfig.iThreadNameFilter.Length() ); |
|
186 stream.WriteInt32L( iSwmtConfig.iThreadNameFilter.Length() ); |
171 stream.WriteInt32L( iSwmtConfig.iThreadNameFilter.Length() ); |
187 |
172 |
188 /* |
|
189 if ( swmtConfig.iThreadNameFilter.Length() > 0 ) |
|
190 { |
|
191 stream.WriteL( swmtConfig.iThreadNameFilter, swmtConfig.iThreadNameFilter.Length() ); |
|
192 } |
|
193 |
|
194 // Write mode |
|
195 stream.WriteInt32L( swmtConfig.iMode ); |
|
196 */ |
|
197 if ( iSwmtConfig.iThreadNameFilter.Length() > 0 ) |
173 if ( iSwmtConfig.iThreadNameFilter.Length() > 0 ) |
198 { |
174 { |
199 stream.WriteL( iSwmtConfig.iThreadNameFilter, iSwmtConfig.iThreadNameFilter.Length() ); |
175 stream.WriteL( iSwmtConfig.iThreadNameFilter, iSwmtConfig.iThreadNameFilter.Length() ); |
200 } |
176 } |
201 |
177 |
218 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) ); |
194 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) ); |
219 |
195 |
220 // Engine settings |
196 // Engine settings |
221 TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() ); |
197 TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() ); |
222 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) ); |
198 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) ); |
223 |
199 |
224 //iEngine.InstallSinkL( type ); |
200 iMemSpySession.SwitchOutputSinkL( type ); //set value in engine |
225 //iMemSpySession.SwitchOutputSink( type ); //TODO: to argue to set stuf in engine from here |
|
226 |
201 |
227 // Set SWMT config |
202 // Set SWMT config |
228 TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
203 TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
229 swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); |
204 swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); |
230 swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() ); |
205 swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() ); |
239 } |
214 } |
240 |
215 |
241 // Restore memory tracking auto-start process uids if file format supports it... |
216 // Restore memory tracking auto-start process uids if file format supports it... |
242 if ( version >= 2 ) |
217 if ( version >= 2 ) |
243 { |
218 { |
|
219 /* |
244 RArray<TUid> list; |
220 RArray<TUid> list; |
245 CleanupClosePushL( list ); |
221 CleanupClosePushL( list ); |
246 // |
222 // |
247 const TInt count = stream.ReadInt32L(); |
223 const TInt count = stream.ReadInt32L(); |
248 |
224 |
249 //CArrayFixFlat<TUid>* list = new(ELeave)CArrayFixFlat<TUid>(count); |
225 CArrayFixFlat<TUid>* list = new(ELeave)CArrayFixFlat<TUid>(count); |
250 //CleanupStack::PushL(list ); |
226 CleanupStack::PushL(list ); |
251 |
227 |
252 for( TInt i=0; i<count; i++ ) |
228 for( TInt i=0; i<count; i++ ) |
253 { |
229 { |
254 TUid processUid; |
230 TUid processUid; |
255 stream >> processUid; |
231 stream >> processUid; |
262 //processHelper.SetMemoryTrackingAutoStartProcessListL( list ); |
238 //processHelper.SetMemoryTrackingAutoStartProcessListL( list ); |
263 //iMemSpySession.SetSwmtAutoStartProcessList( list ); |
239 //iMemSpySession.SetSwmtAutoStartProcessList( list ); |
264 iUidList = list; //TODO: to get it into the engine |
240 iUidList = list; //TODO: to get it into the engine |
265 |
241 |
266 CleanupStack::PopAndDestroy( &list ); |
242 CleanupStack::PopAndDestroy( &list ); |
|
243 */ |
267 } |
244 } |
268 |
245 |
269 // Restore memory tracking categories |
246 // Restore memory tracking categories |
270 if ( version > 3 ) |
247 if ( version > 3 ) |
271 { |
248 { |
274 |
251 |
275 // Write heap tracking thread name filter |
252 // Write heap tracking thread name filter |
276 if ( version > 4 ) |
253 if ( version > 4 ) |
277 { |
254 { |
278 TInt len = stream.ReadInt32L(); |
255 TInt len = stream.ReadInt32L(); |
279 if ( len > 0 ) |
256 if ( len > 0 && len < KMaxName ) |
280 { |
257 { |
281 stream.ReadL( swmtConfig.iThreadNameFilter, len ); |
258 stream.ReadL( swmtConfig.iThreadNameFilter, len ); |
282 } |
259 } |
283 } |
260 } |
284 |
261 |
285 // Write mode |
262 // Write mode |
286 if ( version > 5 ) |
263 if ( version > 5 ) |
287 { |
264 { |
288 swmtConfig.iMode = (TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode)stream.ReadInt32L(); |
265 swmtConfig.iMode = (TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode)stream.ReadInt32L(); |
289 } |
266 } |
290 |
267 |
291 //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker(); |
268 iSwmtConfig = swmtConfig; |
292 //swmt.SetConfigL( swmtConfig ); |
269 |
293 //iMemSpySession.SetSwmtConfig( swmtConfig ); |
270 SetSwmtConfig( iSwmtConfig ); //set values in engine |
294 |
|
295 iSwmtConfig = swmtConfig; //TODO: to get it into the engine |
|
296 |
271 |
297 CleanupStack::PopAndDestroy( &stream ); // Closes file |
272 CleanupStack::PopAndDestroy( &stream ); // Closes file |
298 } |
273 } |
299 |
274 |
300 |
275 void CMemSpySettings::GetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig ) |
|
276 { |
|
277 TInt categories = 0; |
|
278 iMemSpySession.GetSwmtCategoriesL( categories ); |
|
279 aConfig.iEnabledCategories = categories; |
|
280 |
|
281 TInt timerPeriod = 0; |
|
282 iMemSpySession.GetSwmtTimerIntervalL( timerPeriod ); |
|
283 aConfig.iTimerPeriod = timerPeriod; |
|
284 |
|
285 TBool dumpData = EFalse; |
|
286 iMemSpySession.GetSwmtHeapDumpsEnabledL( dumpData ); |
|
287 aConfig.iDumpData = dumpData; |
|
288 |
|
289 TName threadNameFilter; |
|
290 iMemSpySession.GetSwmtFilter( threadNameFilter ); |
|
291 aConfig.iThreadNameFilter = threadNameFilter; |
|
292 |
|
293 TMemSpyEngineHelperSysMemTrackerConfig::TMemSpyEngineSysMemTrackerMode mode; |
|
294 iMemSpySession.GetSwmtMode( mode ); |
|
295 aConfig.iMode = mode; |
|
296 } |
|
297 |
|
298 void CMemSpySettings::SetSwmtConfig( TMemSpyEngineHelperSysMemTrackerConfig& aConfig ) |
|
299 { |
|
300 iMemSpySession.SetSwmtMode( aConfig.iMode ); |
|
301 iMemSpySession.SetSwmtCategoriesL( aConfig.iEnabledCategories ); |
|
302 iMemSpySession.SetSwmtTimerIntervalL( aConfig.iTimerPeriod.Int() ); |
|
303 iMemSpySession.SetSwmtHeapDumpsEnabledL( aConfig.iDumpData ); |
|
304 iMemSpySession.SetSwmtFilter( aConfig.iThreadNameFilter ); |
|
305 } |