summaryrefslogtreecommitdiffstats
path: root/Meter.h
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2021-07-07 16:57:03 +1000
committerNathan Scott <nathans@redhat.com>2021-07-08 10:56:05 +1000
commit01f5b892785014db30db4d6b4b7c23e042c7ffe4 (patch)
tree785c3eec2534ed4654cfda34b3780c91e01372d7 /Meter.h
parent149774209be588fb0da001e5d9cac224862cc5da (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.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/Meter.h b/Meter.h
index 40cad332..06c87388 100644
--- a/Meter.h
+++ b/Meter.h
@@ -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

© 2014-2024 Faster IT GmbH | imprint | privacy policy