add flags to branch, use for Pid query
This commit is contained in:
parent
7311ce36e9
commit
a5373bf7cc
|
@ -66,6 +66,7 @@ struct ptql_branch_t {
|
||||||
ptql_lookup_t *lookup;
|
ptql_lookup_t *lookup;
|
||||||
void *data;
|
void *data;
|
||||||
unsigned int data_size;
|
unsigned int data_size;
|
||||||
|
unsigned int flags;
|
||||||
union {
|
union {
|
||||||
ptql_op_ui64_t ui64;
|
ptql_op_ui64_t ui64;
|
||||||
ptql_op_ui32_t ui32;
|
ptql_op_ui32_t ui32;
|
||||||
|
@ -421,18 +422,35 @@ static int ptql_branch_match(ptql_branch_t *branch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PTQL_PID_PID,
|
||||||
|
PTQL_PID_FILE,
|
||||||
|
PTQL_PID_SERVICE
|
||||||
|
};
|
||||||
|
|
||||||
static int ptql_branch_init_pid(ptql_parse_branch_t *parsed,
|
static int ptql_branch_init_pid(ptql_parse_branch_t *parsed,
|
||||||
ptql_branch_t *branch)
|
ptql_branch_t *branch)
|
||||||
{
|
{
|
||||||
if (strEQ(parsed->attr, "Pid")) {
|
if (strEQ(parsed->attr, "Pid")) {
|
||||||
|
branch->flags = PTQL_PID_PID;
|
||||||
branch->data = (void*)atoi(parsed->value); /*XXX*/
|
branch->data = (void*)atoi(parsed->value); /*XXX*/
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
else if (strEQ(parsed->attr, "PidFile")) {
|
else if (strEQ(parsed->attr, "PidFile")) {
|
||||||
|
branch->flags = PTQL_PID_FILE;
|
||||||
branch->data = strdup(parsed->value);
|
branch->data = strdup(parsed->value);
|
||||||
branch->data_size = strlen(parsed->value);
|
branch->data_size = strlen(parsed->value);
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
else if (strEQ(parsed->attr, "Service")) {
|
||||||
|
#ifdef WIN32
|
||||||
|
branch->flags = PTQL_PID_SERVICE;
|
||||||
|
branch->data = strdup(parsed->value);
|
||||||
|
branch->data_size = strlen(parsed->value);
|
||||||
|
#else
|
||||||
|
return SIGAR_PTQL_MALFORMED_QUERY;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
return SIGAR_PTQL_MALFORMED_QUERY;
|
return SIGAR_PTQL_MALFORMED_QUERY;
|
||||||
}
|
}
|
||||||
|
@ -446,7 +464,7 @@ static int ptql_pid_match(sigar_t *sigar,
|
||||||
(ptql_branch_t *)data;
|
(ptql_branch_t *)data;
|
||||||
sigar_pid_t match_pid;
|
sigar_pid_t match_pid;
|
||||||
|
|
||||||
if (branch->data_size) {
|
if (branch->flags == PTQL_PID_FILE) {
|
||||||
char buffer[SIGAR_PATH_MAX+1];
|
char buffer[SIGAR_PATH_MAX+1];
|
||||||
int status =
|
int status =
|
||||||
sigar_file2str((const char *)branch->data,
|
sigar_file2str((const char *)branch->data,
|
||||||
|
@ -456,6 +474,13 @@ static int ptql_pid_match(sigar_t *sigar,
|
||||||
}
|
}
|
||||||
match_pid = strtoull(buffer, NULL, 10); /*XXX validate*/
|
match_pid = strtoull(buffer, NULL, 10); /*XXX validate*/
|
||||||
}
|
}
|
||||||
|
else if (branch->flags == PTQL_PID_SERVICE) {
|
||||||
|
#ifdef WIN32
|
||||||
|
return !SIGAR_OK; /*XXX*/
|
||||||
|
#else
|
||||||
|
return !SIGAR_OK;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
match_pid = (sigar_pid_t)branch->data;
|
match_pid = (sigar_pid_t)branch->data;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue