add Service.Exe ptql support
This commit is contained in:
		
							parent
							
								
									5df4850bf3
								
							
						
					
					
						commit
						b83b819b00
					
				@ -72,6 +72,7 @@ public class TestPTQL extends SigarTestCase {
 | 
				
			|||||||
        "Service.Name.ct=Oracle",
 | 
					        "Service.Name.ct=Oracle",
 | 
				
			||||||
        "Service.DisplayName.re=DHCP|DNS",
 | 
					        "Service.DisplayName.re=DHCP|DNS",
 | 
				
			||||||
        "Service.Path.ct=svchost",
 | 
					        "Service.Path.ct=svchost",
 | 
				
			||||||
 | 
					        "Service.Exe.Ieq=inetinfo.exe",
 | 
				
			||||||
        OTHER_JAVA_PROCESS, //all java procs cept this one
 | 
					        OTHER_JAVA_PROCESS, //all java procs cept this one
 | 
				
			||||||
        "Cpu.Percent.ge=0.2",
 | 
					        "Cpu.Percent.ge=0.2",
 | 
				
			||||||
        "State.Name.sw=java,Args.*.eq=org.jboss.Main", //jboss
 | 
					        "State.Name.sw=java,Args.*.eq=org.jboss.Main", //jboss
 | 
				
			||||||
 | 
				
			|||||||
@ -666,7 +666,8 @@ enum {
 | 
				
			|||||||
    PTQL_PID_FILE,
 | 
					    PTQL_PID_FILE,
 | 
				
			||||||
    PTQL_PID_SERVICE_NAME,
 | 
					    PTQL_PID_SERVICE_NAME,
 | 
				
			||||||
    PTQL_PID_SERVICE_DISPLAY,
 | 
					    PTQL_PID_SERVICE_DISPLAY,
 | 
				
			||||||
    PTQL_PID_SERVICE_PATH
 | 
					    PTQL_PID_SERVICE_PATH,
 | 
				
			||||||
 | 
					    PTQL_PID_SERVICE_EXE
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SIGAR_64BIT
 | 
					#ifdef SIGAR_64BIT
 | 
				
			||||||
@ -700,6 +701,10 @@ static int ptql_branch_init_service(ptql_parse_branch_t *parsed,
 | 
				
			|||||||
    else if (strEQ(parsed->attr, "Path")) {
 | 
					    else if (strEQ(parsed->attr, "Path")) {
 | 
				
			||||||
        branch->flags = PTQL_PID_SERVICE_PATH;
 | 
					        branch->flags = PTQL_PID_SERVICE_PATH;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else if (strEQ(parsed->attr, "Exe")) {
 | 
				
			||||||
 | 
					        /* basename of Path */
 | 
				
			||||||
 | 
					        branch->flags = PTQL_PID_SERVICE_EXE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        return ptql_error(error, "Unsupported %s attribute: %s",
 | 
					        return ptql_error(error, "Unsupported %s attribute: %s",
 | 
				
			||||||
                          parsed->name, parsed->attr);
 | 
					                          parsed->name, parsed->attr);
 | 
				
			||||||
@ -785,7 +790,7 @@ static int sigar_services_walk(sigar_services_walker_t *walker,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    for (i=0; i<ss.count; i++) {
 | 
					    for (i=0; i<ss.count; i++) {
 | 
				
			||||||
        int status;
 | 
					        int status;
 | 
				
			||||||
        char *value;
 | 
					        char *value = NULL;
 | 
				
			||||||
        char *name = ss.services[i].lpServiceName;
 | 
					        char *name = ss.services[i].lpServiceName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (branch == NULL) {
 | 
					        if (branch == NULL) {
 | 
				
			||||||
@ -801,9 +806,16 @@ static int sigar_services_walk(sigar_services_walker_t *walker,
 | 
				
			|||||||
            value = ss.services[i].lpDisplayName;
 | 
					            value = ss.services[i].lpDisplayName;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
          case PTQL_PID_SERVICE_PATH:
 | 
					          case PTQL_PID_SERVICE_PATH:
 | 
				
			||||||
 | 
					          case PTQL_PID_SERVICE_EXE:
 | 
				
			||||||
            status = ptql_service_query_config(ss.handle, name, config);
 | 
					            status = ptql_service_query_config(ss.handle, name, config);
 | 
				
			||||||
            if (status == SIGAR_OK) {
 | 
					            if (status == SIGAR_OK) {
 | 
				
			||||||
                value = config->lpBinaryPathName;
 | 
					                if (branch->flags == PTQL_PID_SERVICE_EXE) {
 | 
				
			||||||
 | 
					                    value = strrchr(config->lpBinaryPathName, '\\');
 | 
				
			||||||
 | 
					                    if (value) ++value;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (value == NULL) {
 | 
				
			||||||
 | 
					                    value = config->lpBinaryPathName;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user