component provides pal.Perception requires time.Calendar calendar {
static PerceptionData perception
static Mutex plock = new Mutex()
void Perception:addMetric(char name[], int value, bool preferHigh, opt bool overwrite)
{
mutex(plock)
{
if (perception == null)
perception = new PerceptionData()
for (int i = 0; i < perception.metrics.arrayLength; i++)
{
if (perception.metrics[i].name == name)
{
if (overwrite)
{
perception.metrics[i].totalValue = value
perception.metrics[i].totalCount = 1
}
else
{
perception.metrics[i].totalValue += value
perception.metrics[i].totalCount ++
}
perception.metrics[i].timeLast = calendar.getTime()
return
}
}
Metric m = new Metric(name, "", value, 1, preferHigh, calendar.getTime())
m.timeLast = m.timeFirst
perception.metrics = new Metric[](perception.metrics, m)
}
}
void Perception:addEvent(char name[], int value, opt bool overwrite)
{
mutex(plock)
{
if (perception == null)
perception = new PerceptionData()
for (int i = 0; i < perception.events.arrayLength; i++)
{
if (perception.events[i].name == name)
{
if (overwrite)
{
perception.events[i].totalValue = value
perception.events[i].totalCount = 1
}
else
{
perception.events[i].totalValue += value
perception.events[i].totalCount ++
}
perception.events[i].timeLast = calendar.getTime()
return
}
}
Event e = new Event(name, "", value, 1, calendar.getTime())
e.timeLast = e.timeFirst
perception.events = new Event[](perception.events, e)
}
}
void Perception:addTrace(char content[])
{
mutex(plock)
{
if (perception == null)
perception = new PerceptionData()
Trace e = new Trace(content)
perception.trace = new Trace[](perception.trace, e)
}
}
PerceptionData Perception:getPerception()
{
mutex(plock)
{
PerceptionData r = perception
perception = null
return r
}
}
}
To propose a new revision to this entity, use dana source put -uc your/new/version.dn -n pal.Perception -m "reason for update" -u yourUsername
Version 1 (this version) by barry
Notes for this version: Standard Library Initialisation