[tor-commits] [nyx/master] Split stat counting into separate loop
atagar at torproject.org
atagar at torproject.org
Tue Sep 22 17:08:39 UTC 2015
commit eddadca29030d1f7c3393caa6f9521cf33a4267f
Author: Damian Johnson <atagar at torproject.org>
Date: Sat Jul 25 12:53:37 2015 -0700
Split stat counting into separate loop
Move counting for client/exit connections to a second loop. This way population
of new_entries is dead simple.
---
nyx/connections/conn_panel.py | 44 ++++++++++++++++++-----------------------
nyx/connections/entries.py | 4 ++--
2 files changed, 21 insertions(+), 27 deletions(-)
diff --git a/nyx/connections/conn_panel.py b/nyx/connections/conn_panel.py
index 42f4124..647a369 100644
--- a/nyx/connections/conn_panel.py
+++ b/nyx/connections/conn_panel.py
@@ -122,7 +122,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
for entry in self._entries:
if isinstance(entry, conn_entry.ConnectionEntry):
- entry.getLines()[0].is_initial_connection = True
+ entry.get_lines()[0].is_initial_connection = True
# listens for when tor stops so we know to stop reflecting changes
@@ -166,7 +166,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
self._entry_lines = []
for entry in self._entries:
- self._entry_lines += entry.getLines()
+ self._entry_lines += entry.get_lines()
def get_listing_type(self):
"""
@@ -462,27 +462,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
current_resolution_count = conn_resolver.run_counter()
with self._vals_lock:
- new_entries = [] # the new results we'll display
-
- for conn in conn_resolver.get_value():
- new_conn_entry = conn_entry.ConnectionEntry(conn)
- new_conn_line = new_conn_entry.getLines()[0]
-
- if new_conn_line.get_type() != conn_entry.Category.CIRCUIT:
- new_entries.append(new_conn_entry)
-
- # updates exit port and client locale usage information
- if new_conn_line.is_private():
- if new_conn_line.get_type() == conn_entry.Category.INBOUND:
- # client connection, update locale information
-
- client_locale = new_conn_line.foreign.get_locale()
-
- if client_locale:
- self._client_locale_usage[client_locale] = self._client_locale_usage.get(client_locale, 0) + 1
- elif new_conn_line.get_type() == conn_entry.Category.EXIT:
- exit_port = new_conn_line.foreign.get_port()
- self._exit_port_usage[exit_port] = self._exit_port_usage.get(exit_port, 0) + 1
+ new_entries = [conn_entry.ConnectionEntry(conn) for conn in conn_resolver.get_value()]
for circ in tor_controller().get_circuits([]):
# Skips established single-hop circuits (these are for directory
@@ -491,6 +471,20 @@ class ConnectionPanel(panel.Panel, threading.Thread):
if not (circ.status == 'BUILT' and len(circ.path) == 1):
new_entries.append(circ_entry.CircEntry(circ))
+ # update stats for client and exit connections
+
+ for entry in new_entries:
+ entry_line = entry.get_lines()[0]
+
+ if entry_line.is_private() and entry_line.get_type() == conn_entry.Category.INBOUND:
+ client_locale = entry_line.foreign.get_locale()
+
+ if client_locale:
+ self._client_locale_usage[client_locale] = self._client_locale_usage.get(client_locale, 0) + 1
+ elif entry_line.get_type() == conn_entry.Category.EXIT:
+ exit_port = entry_line.foreign.get_port()
+ self._exit_port_usage[exit_port] = self._exit_port_usage.get(exit_port, 0) + 1
+
# Counts the relays in each of the categories. This also flushes the
# type cache for all of the connections (in case its changed since last
# fetched).
@@ -500,7 +494,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
for entry in new_entries:
if isinstance(entry, conn_entry.ConnectionEntry):
- type_counts[entry.getLines()[0].get_type()] += 1
+ type_counts[entry.get_lines()[0].get_type()] += 1
elif isinstance(entry, circ_entry.CircEntry):
type_counts[conn_entry.Category.CIRCUIT] += 1
@@ -523,7 +517,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
self._entry_lines = []
for entry in self._entries:
- self._entry_lines += entry.getLines()
+ self._entry_lines += entry.get_lines()
self.set_sort_order()
self._last_resource_fetch = current_resolution_count
diff --git a/nyx/connections/entries.py b/nyx/connections/entries.py
index 68c8cb8..9215b37 100644
--- a/nyx/connections/entries.py
+++ b/nyx/connections/entries.py
@@ -39,7 +39,7 @@ class ConnectionPanelEntry:
self.lines = []
self.flush_cache = True
- def getLines(self):
+ def get_lines(self):
"""
Provides the individual lines in the connection listing.
"""
@@ -51,7 +51,7 @@ class ConnectionPanelEntry:
return self.lines
def _get_lines(self, old_results):
- # implementation of getLines
+ # implementation of get_lines
for line in old_results:
line.reset_display()
More information about the tor-commits
mailing list