Skip to content

Commit

Permalink
add incby(n,v) to ganglia scoreboard for incrementing by a number
Browse files Browse the repository at this point in the history
also, change the type from int to unsigned because overflow of
signed integers is undefined. This should not effect existing
metrics for ganglia agents because they are reset-on-read.

See http://stackoverflow.com/questions/18195715
  • Loading branch information
satterly committed Feb 24, 2014
1 parent dc6ec7a commit 0433cc9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 2 additions & 0 deletions lib/gm_scoreboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ int ganglia_scoreboard_get(char *name);
void ganglia_scoreboard_set(char *name, int val);
void ganglia_scoreboard_reset(char *name);
int ganglia_scoreboard_inc(char *name);
int ganglia_scoreboard_incby(char *name, int val);
void ganglia_scoreboard_dec(char *name);
ganglia_scoreboard_types ganglia_scoreboard_type(char *name);
#else
Expand All @@ -57,6 +58,7 @@ ganglia_scoreboard_types ganglia_scoreboard_type(char *name);
#define ganglia_scoreboard_set(n,v)
#define ganglia_scoreboard_reset(n)
#define ganglia_scoreboard_inc(n)
#define ganglia_scoreboard_incby(n,v)
#define ganglia_scoreboard_dec(n)
#define ganglia_scoreboard_type(n) (GSB_UNKNOWN)
#endif
Expand Down
18 changes: 17 additions & 1 deletion lib/scoreboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
struct gsb_element {
ganglia_scoreboard_types type;
char *name;
int val;
unsigned val;
};
typedef struct gsb_element gsb_element;

Expand Down Expand Up @@ -148,6 +148,22 @@ int ganglia_scoreboard_inc(char *name)
return retval;
}

int ganglia_scoreboard_incby(char *name, int val)
{
int retval = 0;
if (gsb_scoreboard) {
gsb_element *element = get_scoreboard_element(name);
if (element && (element->type != GSB_STATE)) {
element->val += val;
retval = element->val;
}
}
else {
err_msg(GSB_ERROR_MSG);
}
return retval;
}

void ganglia_scoreboard_dec(char *name)
{
int retval = 0;
Expand Down

0 comments on commit 0433cc9

Please sign in to comment.