summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2016-03-06 16:25:25 -0800
committerGiampaolo Rodola <g.rodola@gmail.com>2016-03-06 16:25:25 -0800
commitafcf304e73dc84a9a21fc0b8ebce50309cdf8527 (patch)
treef88ae699e5c7c4935d4ecf2690cf3d7d1cae0629
parent3a5f60fc633250347152eba90d9ac555708d475e (diff)
downloadpsutil-afcf304e73dc84a9a21fc0b8ebce50309cdf8527.tar.gz
refactoring
-rw-r--r--psutil/_pswindows.py37
1 files changed, 14 insertions, 23 deletions
diff --git a/psutil/_pswindows.py b/psutil/_pswindows.py
index d9b44b9e..c5d2cc9e 100644
--- a/psutil/_pswindows.py
+++ b/psutil/_pswindows.py
@@ -324,14 +324,11 @@ ppid_map = cext.ppid_map # not meant to be public
class WindowsService(object):
"""Represents an installed Windows service."""
- def __init__(self, name, display_name, status, pid, binpath):
- self._name = name
- self._display_name = display_name
- self._status = status
- if pid == 0:
- pid = None
- self._pid = pid
- self._binpath = binpath
+ def __init__(self, info):
+ if info['pid'] == 0:
+ info['pid'] = None
+ info['status'] = SERVICE_STATUSES.get(info['status'], info['status'])
+ self._info = info
def __str__(self):
details = "(name=%s, status=%s, pid=%s)" % (
@@ -343,39 +340,33 @@ class WindowsService(object):
@property
def pid(self):
- return self._pid
+ return self._info['pid']
@property
def name(self):
- return self._name
+ return self._info['name']
@property
def display_name(self):
- return self._display_name
+ return self._info['display_name']
@property
def status(self):
- return SERVICE_STATUSES.get(self._status, self._status)
+ return self._info['status']
@property
def binpath(self):
- return self._binpath
+ return self._info['binpath']
def as_dict(self):
- return dict(
- pid=self.pid,
- name=self.name,
- display_name=self.display_name,
- status=self.status,
- binpath=self.binpath,
- )
+ return self._info
def win_service_iter():
"""Return a list of WindowsService instances."""
- ret = cext.winservice_enumerate()
- for name, display_name, status, pid, binpath in ret:
- yield WindowsService(name, display_name, status, pid, binpath)
+ keys = ['name', 'display_name', 'status', 'pid', 'binpath']
+ for row in cext.winservice_enumerate():
+ yield WindowsService(dict(zip(keys, row)))
# --- decorators