24 // Engine includes |
24 // Engine includes |
25 #include <memspy/engine/memspyengine.h> |
25 #include <memspy/engine/memspyengine.h> |
26 #include <memspy/engine/memspyenginelogger.h> |
26 #include <memspy/engine/memspyenginelogger.h> |
27 #include <memspy/engine/memspyenginehelperprocess.h> |
27 #include <memspy/engine/memspyenginehelperprocess.h> |
28 #include <memspy/engine/memspyenginehelpersysmemtracker.h> |
28 #include <memspy/engine/memspyenginehelpersysmemtracker.h> |
29 #include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h> |
|
30 |
29 |
31 #include <memspysession.h> |
30 #include <memspysession.h> |
32 |
31 |
33 // Constants |
32 // Constants |
34 _LIT( KMemSpySettingsFileName, "settings.dat" ); |
33 _LIT( KMemSpySettingsFileName, "settings.dat" ); //file or avkon client settings |
35 |
34 |
36 // Version 03 dumped some of the system wide memory tracker settings |
35 // Version 03 dumped some of the system wide memory tracker settings |
37 const TInt KMemSpySettingsFileFormatVersion = 6; |
36 const TInt KMemSpySettingsFileFormatVersion = 6; |
38 |
37 |
39 /* |
|
40 CMemSpySettings::CMemSpySettings( RFs& aFsSession, CMemSpyEngine& aEngine ) |
|
41 : iFsSession( aFsSession ), iEngine( aEngine ) |
|
42 { |
|
43 } |
|
44 */ |
|
45 CMemSpySettings::CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession ) |
38 CMemSpySettings::CMemSpySettings( RFs& aFsSession, RMemSpySession& aSession ) |
46 : iFsSession( aFsSession ) |
39 : iFsSession( aFsSession ), iMemSpySession( aSession ) |
47 { |
40 { |
48 } |
41 } |
49 |
42 |
50 |
43 |
51 CMemSpySettings::~CMemSpySettings() |
44 CMemSpySettings::~CMemSpySettings() |
52 { |
45 { |
53 /* |
|
54 TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - START" ) ); |
46 TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - START" ) ); |
55 TRAP_IGNORE( StoreSettingsL() ); |
47 TRAP_IGNORE( StoreSettingsL() ); |
56 TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - END" ) ); |
48 TRACE( RDebug::Printf( "CMemSpySettings::~CMemSpySettings() - END" ) ); |
57 */ |
|
58 |
|
59 //iMemSpyAPI.StoreSettings(); |
|
60 } |
49 } |
61 |
50 |
62 |
51 |
63 void CMemSpySettings::ConstructL() |
52 void CMemSpySettings::ConstructL() |
64 { |
53 { |
65 /* |
|
66 TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - START") ) ); |
54 TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - START") ) ); |
67 |
55 |
68 TRAP_IGNORE( RestoreSettingsL() ); |
56 TRAP_IGNORE( RestoreSettingsL() ); |
69 |
57 |
70 TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - END") ) ); |
58 TRACE( RDebug::Print( _L("CMemSpySettings::ConstructL() - END") ) ); |
71 */ |
59 } |
72 |
60 |
73 //iMemSpyAPI.RestoreSettings(); |
|
74 } |
|
75 |
|
76 /* |
|
77 CMemSpySettings* CMemSpySettings::NewL( RFs& aFsSession, CMemSpyEngine& aEngine ) |
|
78 { |
|
79 CMemSpySettings* self = new(ELeave) CMemSpySettings( aFsSession, aEngine ); |
|
80 CleanupStack::PushL( self ); |
|
81 self->ConstructL(); |
|
82 CleanupStack::Pop( self ); |
|
83 return self; |
|
84 } |
|
85 */ |
|
86 CMemSpySettings* CMemSpySettings::NewL( RFs& aFsSession, RMemSpySession& aSession ) |
61 CMemSpySettings* CMemSpySettings::NewL( RFs& aFsSession, RMemSpySession& aSession ) |
87 { |
62 { |
88 CMemSpySettings* self = new(ELeave) CMemSpySettings( aFsSession, aSession ); |
63 CMemSpySettings* self = new(ELeave) CMemSpySettings( aFsSession, aSession ); |
89 CleanupStack::PushL( self ); |
64 CleanupStack::PushL( self ); |
90 self->ConstructL(); |
65 self->ConstructL(); |
91 CleanupStack::Pop( self ); |
66 CleanupStack::Pop( self ); |
92 return self; |
67 return self; |
93 } |
68 } |
94 |
69 |
95 /* |
|
96 void CMemSpySettings::GetSettingsFileNameL( TDes& aFileName ) |
70 void CMemSpySettings::GetSettingsFileNameL( TDes& aFileName ) |
97 { |
71 { |
98 GetSettingsPathL( aFileName ); |
72 GetSettingsPathL( aFileName ); |
99 aFileName.Append( KMemSpySettingsFileName ); |
73 aFileName.Append( KMemSpySettingsFileName ); |
100 TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsFileNameL() - aFileName: %S"), &aFileName ) ); |
74 TRACE( RDebug::Print( _L("CMemSpySettings::GetSettingsFileNameL() - aFileName: %S"), &aFileName ) ); |
168 CleanupClosePushL( stream ); |
141 CleanupClosePushL( stream ); |
169 |
142 |
170 // Verion info |
143 // Verion info |
171 stream.WriteInt32L( KMemSpySettingsFileFormatVersion ); |
144 stream.WriteInt32L( KMemSpySettingsFileFormatVersion ); |
172 |
145 |
173 // Engine settings |
146 stream.WriteUint8L( iSinkType ); |
174 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - sinkType: %d", iEngine.SinkType() ) ); |
147 |
175 stream.WriteUint8L( iEngine.SinkType() ); |
148 |
176 |
|
177 // Get SWMT config |
149 // Get SWMT config |
178 CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker(); |
150 //CMemSpyEngineHelperSysMemTracker& swmt = iEngine.HelperSysMemTracker(); |
179 TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
151 //TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
180 swmt.GetConfig( swmtConfig ); |
152 //swmt.GetConfig( swmtConfig ); |
181 |
153 |
182 // Write SWMT settings |
154 // Write SWMT settings |
183 stream.WriteInt32L( swmtConfig.TimerPeriod().Int() ); |
155 //stream.WriteInt32L( swmtConfig.TimerPeriod().Int() ); |
184 stream.WriteUint8L( swmtConfig.DumpData() ); |
156 //stream.WriteUint8L( swmtConfig.DumpData() ); |
|
157 |
|
158 stream.WriteInt32L( iSwmtConfig.TimerPeriod().Int() ); |
|
159 stream.WriteUint8L( iSwmtConfig.DumpData() ); |
185 |
160 |
186 // Write memory tracking auto-start process list |
161 // Write memory tracking auto-start process list |
|
162 /* |
187 const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList(); |
163 const RArray<TUid>& processUidList = iEngine.HelperProcess().MemoryTrackingAutoStartProcessList(); |
188 stream.WriteInt32L( processUidList.Count() ); |
164 stream.WriteInt32L( processUidList.Count() ); |
189 for( TInt i=0; i<processUidList.Count(); i++ ) |
165 for( TInt i=0; i<processUidList.Count(); i++ ) |
190 { |
166 { |
191 const TUid uid = processUidList[ i ]; |
167 const TUid uid = processUidList[ i ]; |
192 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) ); |
168 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, uid.iUid ) ); |
193 stream << uid; |
169 stream << uid; |
194 } |
170 } |
195 |
171 */ |
|
172 stream.WriteInt32L( iUidList.Count() ); |
|
173 for( TInt i = 0; i < iUidList.Count(); i++ ) |
|
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 |
196 // Write memory tracking categories |
180 // Write memory tracking categories |
197 stream.WriteInt32L( swmtConfig.iEnabledCategories ); |
181 //stream.WriteInt32L( swmtConfig.iEnabledCategories ); |
|
182 stream.WriteInt32L( iSwmtConfig.iEnabledCategories ); |
198 |
183 |
199 // Write heap tracking thread name filter |
184 // Write heap tracking thread name filter |
200 stream.WriteInt32L( swmtConfig.iThreadNameFilter.Length() ); |
185 //stream.WriteInt32L( swmtConfig.iThreadNameFilter.Length() ); |
|
186 stream.WriteInt32L( iSwmtConfig.iThreadNameFilter.Length() ); |
|
187 |
|
188 /* |
201 if ( swmtConfig.iThreadNameFilter.Length() > 0 ) |
189 if ( swmtConfig.iThreadNameFilter.Length() > 0 ) |
202 { |
190 { |
203 stream.WriteL( swmtConfig.iThreadNameFilter, swmtConfig.iThreadNameFilter.Length() ); |
191 stream.WriteL( swmtConfig.iThreadNameFilter, swmtConfig.iThreadNameFilter.Length() ); |
204 } |
192 } |
205 |
193 |
206 // Write mode |
194 // Write mode |
207 stream.WriteInt32L( swmtConfig.iMode ); |
195 stream.WriteInt32L( swmtConfig.iMode ); |
|
196 */ |
|
197 if ( iSwmtConfig.iThreadNameFilter.Length() > 0 ) |
|
198 { |
|
199 stream.WriteL( iSwmtConfig.iThreadNameFilter, iSwmtConfig.iThreadNameFilter.Length() ); |
|
200 } |
|
201 |
|
202 // Write mode |
|
203 stream.WriteInt32L( iSwmtConfig.iMode ); |
208 |
204 |
209 stream.CommitL(); |
205 stream.CommitL(); |
210 CleanupStack::PopAndDestroy( &stream ); // Closes file |
206 CleanupStack::PopAndDestroy( &stream ); // Closes file |
211 TRACE( RDebug::Printf( "CMemSpySettings::StoreSettingsL() - END - sinkType: %d", iEngine.SinkType() ) ); |
207 } |
212 } |
|
213 |
|
214 |
208 |
215 void CMemSpySettings::RestoreSettingsL() |
209 void CMemSpySettings::RestoreSettingsL() |
216 { |
210 { |
217 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - START - current engine sinkType: %d", iEngine.SinkType() ) ); |
|
218 |
|
219 RFile file = SettingsFileLC(); |
211 RFile file = SettingsFileLC(); |
220 RFileReadStream stream( file ); |
212 RFileReadStream stream( file ); |
221 CleanupStack::Pop(); // file |
213 CleanupStack::Pop(); // file |
222 CleanupClosePushL( stream ); |
214 CleanupClosePushL( stream ); |
223 |
215 |
224 // Version info |
216 // Version info |
225 const TInt version = stream.ReadInt32L(); // discarded for now |
217 const TInt version = stream.ReadInt32L(); // discarded for now |
226 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) ); |
218 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - version: %d", version ) ); |
227 |
219 |
228 // Engine settings |
220 // Engine settings |
229 TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() ); |
221 TMemSpySinkType type = static_cast< TMemSpySinkType >( stream.ReadUint8L() ); |
230 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) ); |
222 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - read sinkType: %d", type ) ); |
231 iEngine.InstallSinkL( type ); |
223 |
|
224 //iEngine.InstallSinkL( type ); |
|
225 //iMemSpySession.SwitchOutputSink( type ); //TODO: to argue to set stuf in engine from here |
232 |
226 |
233 // Set SWMT config |
227 // Set SWMT config |
234 TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
228 TMemSpyEngineHelperSysMemTrackerConfig swmtConfig; |
235 swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); |
229 swmtConfig.iTimerPeriod = TTimeIntervalMicroSeconds32( stream.ReadInt32L() ); |
236 swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() ); |
230 swmtConfig.iDumpData = static_cast< TBool >( stream.ReadUint8L() ); |
237 |
231 |
238 if ( version < 3 ) |
232 if ( version < 3 ) |
239 { |
233 { |
240 // Restore but ignore old delta tracker settings which aren't used anymore |
234 // Restore but ignore old delta tracker settings which aren't used anymore |
245 } |
239 } |
246 |
240 |
247 // Restore memory tracking auto-start process uids if file format supports it... |
241 // Restore memory tracking auto-start process uids if file format supports it... |
248 if ( version >= 2 ) |
242 if ( version >= 2 ) |
249 { |
243 { |
250 RArray<TUid> list; |
244 RArray<TUid> list; |
251 CleanupClosePushL( list ); |
245 CleanupClosePushL( list ); |
252 // |
246 // |
253 const TInt count = stream.ReadInt32L(); |
247 const TInt count = stream.ReadInt32L(); |
|
248 |
|
249 //CArrayFixFlat<TUid>* list = new(ELeave)CArrayFixFlat<TUid>(count); |
|
250 //CleanupStack::PushL(list ); |
|
251 |
254 for( TInt i=0; i<count; i++ ) |
252 for( TInt i=0; i<count; i++ ) |
255 { |
253 { |
256 TUid processUid; |
254 TUid processUid; |
257 stream >> processUid; |
255 stream >> processUid; |
258 // |
256 // |
259 TRACE( RDebug::Printf( "CMemSpySettings::RestoreSettingsL() - process tracker uid[%02d]: 0x%08x", i, processUid.iUid ) ); |
257 User::LeaveIfError( list.Append( processUid ) ); |
260 User::LeaveIfError( list.Append( processUid ) ); |
258 //list->AppendL( processUid ); |
261 } |
259 } |
262 // |
260 // |
263 CMemSpyEngineHelperProcess& processHelper = iEngine.HelperProcess(); |
261 //CMemSpyEngineHelperProcess& processHelper = iEngine.HelperProcess(); |
264 processHelper.SetMemoryTrackingAutoStartProcessListL( list ); |
262 //processHelper.SetMemoryTrackingAutoStartProcessListL( list ); |
|
263 //iMemSpySession.SetSwmtAutoStartProcessList( list ); |
|
264 iUidList = list; //TODO: to get it into the engine |
|
265 |
265 CleanupStack::PopAndDestroy( &list ); |
266 CleanupStack::PopAndDestroy( &list ); |
266 } |
267 } |
267 |
268 |
268 // Restore memory tracking categories |
269 // Restore memory tracking categories |
269 if ( version > 3 ) |
270 if ( version > 3 ) |