Lines Matching refs:self

66   def __init__(self, data_name, name_filter):
73 self.data_name = data_name
74 self.name_filter = name_filter
78 self.shared_mmap = None
82 self.ui_counters = {}
85 self.data = None
88 self.root = None
90 def Run(self):
93 self.data = self.MountSharedData()
95 self.OpenWindow()
97 self.CleanUp()
99 def MountSharedData(self):
103 if not os.path.exists(self.data_name):
104 maps_name = "/proc/%s/maps" % self.data_name
106 print("\"%s\" is neither a counter file nor a PID." % self.data_name)
110 self.data_name = None
113 self.data_name = m.group(0)
115 if self.data_name is None:
116 print("Can't find counter file in maps for PID %s." % self.data_name)
120 data_file = open(self.data_name, "r")
123 self.shared_mmap = mmap.mmap(fileno, size, access=mmap.ACCESS_READ)
124 data_access = SharedDataAccess(self.shared_mmap)
129 print("File %s is not stats data." % self.data_name)
132 def CleanUp(self):
134 if self.shared_mmap:
135 self.shared_mmap.close()
137 def UpdateCounters(self):
144 counters_in_use = self.data.CountersInUse()
145 if counters_in_use != len(self.ui_counters):
146 self.RefreshCounters()
149 for i in range(self.data.CountersInUse()):
150 counter = self.data.Counter(i)
152 if name in self.ui_counters:
154 ui_counter = self.ui_counters[name]
158 self.RefreshCounters()
164 self.UpdateTime()
165 self.ScheduleUpdate()
167 def UpdateTime(self):
169 self.root.title("Stats Viewer [updated %s]" % time.strftime("%H:%M:%S"))
171 def ScheduleUpdate(self):
173 self.root.after(UPDATE_INTERVAL_MS, lambda: self.UpdateCounters())
175 def RefreshCounters(self):
177 counters = self.ComputeCounters()
178 self.RebuildMainWindow(counters)
180 def ComputeCounters(self):
194 for i in range(self.data.CountersInUse()):
195 counter = self.data.Counter(i)
217 def RebuildMainWindow(self, groups):
224 self.ui_counters.clear()
225 for child in self.root.children.values():
234 if self.name_filter.match(counter_name):
235 name = Tkinter.Label(self.root, width=50, anchor=Tkinter.W,
243 if self.name_filter.match(name):
244 value = Tkinter.Label(self.root, width=15, anchor=Tkinter.W,
255 self.ui_counters[name] = ui_counter
258 self.root.update()
260 def OpenWindow(self):
262 self.root = Tkinter.Tk()
265 self.root.resizable(width=False, height=False)
266 self.RefreshCounters()
267 self.ScheduleUpdate()
268 self.root.mainloop()
274 def __init__(self, var, format):
281 self.var = var
282 self.format = format
283 self.last_value = None
285 def Set(self, value):
295 if value == self.last_value:
298 self.last_value = value
299 self.var.set(self.format % value)
307 def __init__(self, data):
313 self.data = data
315 def ByteAt(self, index):
317 return ord(self.CharAt(index))
319 def IntAt(self, index):
321 word_str = self.data[index:index+4]
325 def CharAt(self, index):
327 return self.data[index]
333 def __init__(self, data, offset):
340 self.data = data
341 self.offset = offset
343 def Value(self):
345 return self.data.IntAt(self.offset)
347 def Name(self):
350 index = self.offset + 4
351 current = self.data.ByteAt(index)
355 current = self.data.ByteAt(index)
363 def __init__(self, data):
369 self.data = data
370 self.max_counters = data.IntAt(4)
371 self.max_name_size = data.IntAt(8)
373 def CountersInUse(self):
375 return self.data.IntAt(12)
377 def Counter(self, index):
379 return Counter(self.data, 16 + index * self.CounterSize())
381 def CounterSize(self):
383 return 4 + self.max_name_size
389 def __init__(self, data, name_offset, value_offset):
397 self.data = data
398 self.name_offset = name_offset
399 self.value_offset = value_offset
401 def Value(self):
403 return self.data.IntAt(self.value_offset)
405 def Name(self):
408 index = self.name_offset
409 current = self.data.ByteAt(index)
413 current = self.data.ByteAt(index)
425 def __init__(self, data):
431 self.data = data
432 self.max_counters = data.IntAt(8)
433 self.max_threads = data.IntAt(12)
434 self.counter_names_offset = \
435 self._HEADER_SIZE + self.max_threads * (self._THREAD_NAME_SIZE + 2 * 4)
436 self.counter_values_offset = \
437 self.counter_names_offset + self.max_counters * self._COUNTER_NAME_SIZE
439 def CountersInUse(self):
441 for i in range(self.max_counters):
442 name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE
443 if self.data.ByteAt(name_offset) == 0:
445 return self.max_counters
447 def Counter(self, i):
449 name_offset = self.counter_names_offset + i * self._COUNTER_NAME_SIZE
450 value_offset = self.counter_values_offset + i * self.max_threads * 4
451 return ChromeCounter(self.data, name_offset, value_offset)