Added base time, last event time, and data source name to the model.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30411 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -259,10 +259,13 @@ Model::Thread::AddThreadWaitObject(WaitObject* waitObject,
|
|||||||
// #pragma mark - Model
|
// #pragma mark - Model
|
||||||
|
|
||||||
|
|
||||||
Model::Model(void* eventData, size_t eventDataSize)
|
Model::Model(const char* dataSourceName, void* eventData, size_t eventDataSize)
|
||||||
:
|
:
|
||||||
|
fDataSourceName(dataSourceName),
|
||||||
fEventData(eventData),
|
fEventData(eventData),
|
||||||
fEventDataSize(eventDataSize),
|
fEventDataSize(eventDataSize),
|
||||||
|
fBaseTime(0),
|
||||||
|
fLastEventTime(0),
|
||||||
fTeams(20, true),
|
fTeams(20, true),
|
||||||
fThreads(20, true),
|
fThreads(20, true),
|
||||||
fWaitObjectGroups(20, true)
|
fWaitObjectGroups(20, true)
|
||||||
@@ -276,6 +279,20 @@ Model::~Model()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Model::SetBaseTime(bigtime_t time)
|
||||||
|
{
|
||||||
|
fBaseTime = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Model::SetLastEventTime(bigtime_t time)
|
||||||
|
{
|
||||||
|
fLastEventTime = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32
|
int32
|
||||||
Model::CountTeams() const
|
Model::CountTeams() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
#ifndef MODEL_H
|
#ifndef MODEL_H
|
||||||
#define MODEL_H
|
#define MODEL_H
|
||||||
|
|
||||||
#include <ObjectList.h>
|
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
|
#include <String.h>
|
||||||
|
|
||||||
|
#include <ObjectList.h>
|
||||||
#include <Referenceable.h>
|
#include <Referenceable.h>
|
||||||
|
|
||||||
#include <system_profiler_defs.h>
|
#include <system_profiler_defs.h>
|
||||||
@@ -26,9 +27,18 @@ public:
|
|||||||
class Thread;
|
class Thread;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Model(void* eventData, size_t eventDataSize);
|
Model(const char* dataSourceName,
|
||||||
|
void* eventData, size_t eventDataSize);
|
||||||
~Model();
|
~Model();
|
||||||
|
|
||||||
|
inline const char* DataSourceName() const;
|
||||||
|
|
||||||
|
inline bigtime_t BaseTime() const;
|
||||||
|
void SetBaseTime(bigtime_t time);
|
||||||
|
|
||||||
|
inline bigtime_t LastEventTime() const;
|
||||||
|
void SetLastEventTime(bigtime_t time);
|
||||||
|
|
||||||
int32 CountTeams() const;
|
int32 CountTeams() const;
|
||||||
Team* TeamAt(int32 index) const;
|
Team* TeamAt(int32 index) const;
|
||||||
Team* TeamByID(team_id id) const;
|
Team* TeamByID(team_id id) const;
|
||||||
@@ -64,8 +74,11 @@ private:
|
|||||||
typedef BObjectList<WaitObjectGroup> WaitObjectGroupList;
|
typedef BObjectList<WaitObjectGroup> WaitObjectGroupList;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
BString fDataSourceName;
|
||||||
void* fEventData;
|
void* fEventData;
|
||||||
size_t fEventDataSize;
|
size_t fEventDataSize;
|
||||||
|
bigtime_t fBaseTime;
|
||||||
|
bigtime_t fLastEventTime;
|
||||||
TeamList fTeams; // sorted by ID
|
TeamList fTeams; // sorted by ID
|
||||||
ThreadList fThreads; // sorted by ID
|
ThreadList fThreads; // sorted by ID
|
||||||
WaitObjectGroupList fWaitObjectGroups;
|
WaitObjectGroupList fWaitObjectGroups;
|
||||||
@@ -295,6 +308,30 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - Model
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
Model::DataSourceName() const
|
||||||
|
{
|
||||||
|
return fDataSourceName.String();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bigtime_t
|
||||||
|
Model::BaseTime() const
|
||||||
|
{
|
||||||
|
return fBaseTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bigtime_t
|
||||||
|
Model::LastEventTime() const
|
||||||
|
{
|
||||||
|
return fLastEventTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - WaitObject
|
// #pragma mark - WaitObject
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,8 +58,10 @@ ModelLoader::ThreadInfo::ThreadInfo(Model::Thread* thread)
|
|||||||
inline void
|
inline void
|
||||||
ModelLoader::_UpdateLastEventTime(bigtime_t time)
|
ModelLoader::_UpdateLastEventTime(bigtime_t time)
|
||||||
{
|
{
|
||||||
if (fBaseTime < 0)
|
if (fBaseTime < 0) {
|
||||||
fBaseTime = time;
|
fBaseTime = time;
|
||||||
|
fModel->SetBaseTime(time);
|
||||||
|
}
|
||||||
|
|
||||||
fLastEventTime = time - fBaseTime;
|
fLastEventTime = time - fBaseTime;
|
||||||
}
|
}
|
||||||
@@ -168,7 +170,7 @@ ModelLoader::_Loader()
|
|||||||
} catch(...) {
|
} catch(...) {
|
||||||
error = B_ERROR;
|
error = B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// clean up and notify the target
|
// clean up and notify the target
|
||||||
AutoLocker<BLocker> locker(fLock);
|
AutoLocker<BLocker> locker(fLock);
|
||||||
|
|
||||||
@@ -210,8 +212,13 @@ ModelLoader::_Load()
|
|||||||
if (error != B_OK)
|
if (error != B_OK)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
// get the data source name
|
||||||
|
BString dataSourceName;
|
||||||
|
fDataSource->GetName(dataSourceName);
|
||||||
|
|
||||||
// create a model
|
// create a model
|
||||||
fModel = new(std::nothrow) Model(eventData, eventDataSize);
|
fModel = new(std::nothrow) Model(dataSourceName.String(), eventData,
|
||||||
|
eventDataSize);
|
||||||
if (fModel == NULL) {
|
if (fModel == NULL) {
|
||||||
free(eventData);
|
free(eventData);
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
@@ -247,7 +254,7 @@ ModelLoader::_Load()
|
|||||||
if (bufferSize < 0)
|
if (bufferSize < 0)
|
||||||
return bufferSize;
|
return bufferSize;
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
return B_OK;
|
break;
|
||||||
|
|
||||||
// process the event
|
// process the event
|
||||||
status_t error = _ProcessEvent(event, cpu, buffer, bufferSize);
|
status_t error = _ProcessEvent(event, cpu, buffer, bufferSize);
|
||||||
@@ -261,6 +268,10 @@ ModelLoader::_Load()
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fModel->SetLastEventTime(fLastEventTime);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user