diff options
author | Nathan Scott <nathans@redhat.com> | 2021-07-07 16:57:03 +1000 |
---|---|---|
committer | Nathan Scott <nathans@redhat.com> | 2021-07-08 10:56:05 +1000 |
commit | 01f5b892785014db30db4d6b4b7c23e042c7ffe4 (patch) | |
tree | 785c3eec2534ed4654cfda34b3780c91e01372d7 /Meter.h | |
parent | 149774209be588fb0da001e5d9cac224862cc5da (diff) |
Pretty-print values in the PCP DynamicMeter code
Several improvements to the way values are displayed in the
PCP platform DynamicMeter implementation:
- handle the initial 'caption' setting as with regular meters,
this required a new meter callback because we no longer have
just a single meter caption for the DynamicMeter case
- if no label is provided for a metric in a configuration file
use the short form metric name as a fallback
- honour the suffix setting in the configuration file
- convert metric values to the canonical units for htop (kbyte
and seconds), and use Meter_humanUnit when it makes sense to
do so.
Also improves the handling of fatal string error messages in a
couple of places, thanks to BenBE for the review feedback.
Diffstat (limited to 'Meter.h')
-rw-r--r-- | Meter.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -53,6 +53,7 @@ typedef void(*Meter_Done)(Meter*); typedef void(*Meter_UpdateMode)(Meter*, int); typedef void(*Meter_UpdateValues)(Meter*); typedef void(*Meter_Draw)(Meter*, int, int, int); +typedef const char*(*Meter_GetCaption)(const Meter*); typedef void(*Meter_GetUiName)(const Meter*, char*, size_t); typedef struct MeterClass_ { @@ -62,6 +63,7 @@ typedef struct MeterClass_ { const Meter_UpdateMode updateMode; const Meter_UpdateValues updateValues; const Meter_Draw draw; + const Meter_GetCaption getCaption; const Meter_GetUiName getUiName; const int defaultMode; const double total; @@ -84,6 +86,8 @@ typedef struct MeterClass_ { #define Meter_updateValues(this_) As_Meter(this_)->updateValues((Meter*)(this_)) #define Meter_getUiNameFn(this_) As_Meter(this_)->getUiName #define Meter_getUiName(this_,n_,l_) As_Meter(this_)->getUiName((const Meter*)(this_),n_,l_) +#define Meter_getCaptionFn(this_) As_Meter(this_)->getCaption +#define Meter_getCaption(this_) (Meter_getCaptionFn(this_) ? As_Meter(this_)->getCaption((const Meter*)(this_)) : (this_)->caption) #define Meter_defaultMode(this_) As_Meter(this_)->defaultMode #define Meter_attributes(this_) As_Meter(this_)->attributes #define Meter_name(this_) As_Meter(this_)->name |