Author: andar
Revision: 6134
Log:
Add some rpc stats to the gtkui debug logging
Diff:
Modified: trunk/deluge/ui/client.py
===================================================================
--- trunk/deluge/ui/client.py 2010-01-24 04:06:06 UTC (rev 6133)
+++ trunk/deluge/ui/client.py 2010-01-24 22:44:44 UTC (rev 6134)
@@ -134,6 +134,9 @@
self.__buffer = None
while data:
+ # Increase the byte counter
+ self.factory.bytes_recv += len(data)
+
dobj = zlib.decompressobj()
try:
request = rencode.loads(dobj.decompress(data))
@@ -196,7 +199,9 @@
self.__rpc_requests[request.request_id] = request
#log.debug("Sending RPCRequest %s: %s", request.request_id, request)
# Send the request in a tuple because multiple requests can be sent at
once
-
self.transport.write(zlib.compress(rencode.dumps((request.format_message(),))))
+ data = zlib.compress(rencode.dumps((request.format_message(),)))
+ self.factory.bytes_sent += len(data)
+ self.transport.write(data)
class DelugeRPCClientFactory(ClientFactory):
protocol = DelugeRPCProtocol
@@ -204,6 +209,9 @@
def __init__(self, daemon, event_handlers):
self.daemon = daemon
self.event_handlers = event_handlers
+
+ self.bytes_recv = 0
+ self.bytes_sent = 0
def startedConnecting(self, connector):
log.info("Connecting to daemon at %s:%s..", connector.host,
connector.port)
@@ -315,7 +323,9 @@
Pops a Deffered object. This is generally called once we receive the
reply we were waiting on from the server.
- :param request_id: int, the request_id of the Deferred to pop
+ :param request_id: the request_id of the Deferred to pop
+ :type request_id: int
+
"""
return self.__deferred.pop(request_id)
@@ -324,10 +334,12 @@
Registers a handler function to be called when `:param:event` is
received
from the daemon.
- :param event: str, the name of the event to handle
- :param handler: function, the function to be called when `:param:event`
+ :param event: the name of the event to handle
+ :type event: str
+ :param handler: the function to be called when `:param:event`
is emitted from the daemon
-
+ :type handler: function
+
"""
if event not in self.__factory.event_handlers:
# This is a new event to handle, so we need to tell the daemon
@@ -344,8 +356,10 @@
"""
Deregisters a event handler.
- :param event: str, the name of the event
- :param handler: function, the function registered
+ :param event: the name of the event
+ :type event: str
+ :param handler: the function registered
+ :type handler: function
"""
if event in self.__factory.event_handlers and handler in
self.__factory.event_handlers[event]:
@@ -402,6 +416,12 @@
"""
self.disconnect_callback = cb
+ def get_bytes_recv(self):
+ return self.__factory.bytes_recv
+
+ def get_bytes_sent(self):
+ return self.__factory.bytes_sent
+
class DaemonClassicProxy(DaemonProxy):
def __init__(self, event_handlers={}):
import deluge.core.daemon
@@ -437,10 +457,12 @@
Registers a handler function to be called when `:param:event` is
received
from the daemon.
- :param event: str, the name of the event to handle
- :param handler: function, the function to be called when `:param:event`
+ :param event: the name of the event to handle
+ :type event: str
+ :param handler: the function to be called when `:param:event`
is emitted from the daemon
-
+ :type handler: function
+
"""
self.__daemon.core.eventmanager.register_event_handler(event, handler)
@@ -448,8 +470,10 @@
"""
Deregisters a event handler.
- :param event: str, the name of the event
- :param handler: function, the function registered
+ :param event: the name of the event
+ :type event: str
+ :param handler: the function registered
+ :type handler: function
"""
self.__daemon.core.eventmanager.deregister_event_handler(event,
handler)
@@ -648,5 +672,23 @@
if self.disconnect_callback:
self.disconnect_callback()
+ def get_bytes_recv(self):
+ """
+ Returns the number of bytes received from the daemon.
+
+ :returns: the number of bytes received
+ :rtype: int
+ """
+ return self._daemon_proxy.get_bytes_recv()
+
+ def get_bytes_sent(self):
+ """
+ Returns the number of bytes sent to the daemon.
+
+ :returns: the number of bytes sent
+ :rtype: int
+ """
+ return self._daemon_proxy.get_bytes_sent()
+
# This is the object clients will use
client = Client()
Modified: trunk/deluge/ui/gtkui/gtkui.py
===================================================================
--- trunk/deluge/ui/gtkui/gtkui.py 2010-01-24 04:06:06 UTC (rev 6133)
+++ trunk/deluge/ui/gtkui/gtkui.py 2010-01-24 22:44:44 UTC (rev 6134)
@@ -32,8 +32,6 @@
# statement from all source files in the program, then also delete it here.
#
#
-
-
from deluge.log import LOG as log
# Install the twisted reactor
@@ -160,6 +158,7 @@
class GtkUI(object):
def __init__(self, args):
+ self.daemon_bps = (0,0,0)
# Setup signals
try:
import gnome.ui
@@ -227,6 +226,10 @@
# Show the connection manager
self.connectionmanager = ConnectionManager()
+ from twisted.internet.task import LoopingCall
+ rpc_stats = LoopingCall(self.print_rpc_stats)
+ rpc_stats.start(10)
+
reactor.callWhenRunning(self._on_reactor_start)
# Start the gtk main loop
gtk.gdk.threads_enter()
@@ -256,6 +259,25 @@
# Make sure the config is saved.
self.config.save()
+ def print_rpc_stats(self):
+ import time
+ try:
+ recv = client.get_bytes_recv()
+ sent = client.get_bytes_sent()
+ except AttributeError:
+ return
+
+ log.debug("sent: %s recv: %s", deluge.common.fsize(sent),
deluge.common.fsize(recv))
+ t = time.time()
+ delta_time = t - self.daemon_bps[0]
+ delta_sent = sent - self.daemon_bps[1]
+ delta_recv = recv - self.daemon_bps[2]
+
+ sent_rate = deluge.common.fspeed(float(delta_sent) / float(delta_time))
+ recv_rate = deluge.common.fspeed(float(delta_recv) / float(delta_time))
+ log.debug("sent rate: %s recv rate: %s", sent_rate, recv_rate)
+ self.daemon_bps = (t, sent, recv)
+
def _on_reactor_start(self):
log.debug("_on_reactor_start")
self.mainwindow.first_show()
--
You received this message because you are subscribed to the Google Groups
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/deluge-commit?hl=en.