Move the event notification mechanism into flow.py

This commit is contained in:
Aldo Cortesi
2011-08-03 13:33:18 +12:00
parent 12d2b1f926
commit f7e4e89b12
3 changed files with 26 additions and 32 deletions

View File

@@ -1766,31 +1766,18 @@ class ConsoleMaster(flow.FlowMaster):
self.sync_list_view()
self.refresh_connection(f)
def add_event(self, e):
def add_event(self, e, level="info"):
if level == "info":
e = urwid.Text(e)
elif level == "error":
e = urwid.Text(("error", e))
self.eventlist.append(e)
if len(self.eventlist) > EVENTLOG_SIZE:
self.eventlist.pop(0)
self.eventlist.set_focus(len(self.eventlist))
# Handlers
def handle_clientconnect(self, r):
self.add_event(urwid.Text("Connect from: %s:%s"%r.address))
return flow.FlowMaster.handle_clientconnect(self, r)
def handle_clientdisconnect(self, r):
s = "Disconnect from: %s:%s"%r.client_conn.address
self.add_event(urwid.Text(s))
if r.client_conn.requestcount:
s = " -> handled %s requests"%r.client_conn.requestcount
self.add_event(urwid.Text(s))
if r.client_conn.connection_error:
self.add_event(
urwid.Text(
("error", " -> error: %s"%r.client_conn.connection_error)
)
)
return flow.FlowMaster.handle_clientdisconnect(self, r)
def handle_error(self, r):
f = flow.FlowMaster.handle_error(self, r)
if f:

View File

@@ -20,6 +20,7 @@ class Options(object):
"rfile",
"rheaders",
"server_replay",
"script",
"stickycookie",
"stickyauth",
"verbosity",
@@ -132,23 +133,13 @@ class DumpMaster(flow.FlowMaster):
"%s: %s\n%s"%(script, e.args[0], eout)
)
def handle_clientconnect(self, c):
def add_event(self, e, level="info"):
if self.eventlog:
print >> self.outfile, "Connection from: %s:%s"%c.address
return flow.FlowMaster.handle_clientconnect(self, c)
def handle_clientdisconnect(self, c):
if self.eventlog:
print >> self.outfile, "Disconnect from: %s:%s"%tuple(c.client_conn.address),
print >> self.outfile, "(handled %s requests)"%c.client_conn.requestcount
if c.client_conn.connection_error:
print >> self.outfile, "\terror: %s"%c.client_conn.connection_error
return flow.FlowMaster.handle_clientconnect(self, c)
print >> self.outfile, e
def handle_request(self, r):
f = flow.FlowMaster.handle_request(self, r)
if self.eventlog:
print >> self.outfile, "Request: %s"%str_request(r)
self.add_event("Request: %s"%str_request(r))
if f:
r.ack()
return f

View File

@@ -481,6 +481,12 @@ class FlowMaster(controller.Master):
raise NotImplementedError
#end nocover
def add_event(self, e, level="info"):
"""
level: info, error
"""
pass
def set_plugin(self, p):
self.plugin = p
@@ -615,9 +621,19 @@ class FlowMaster(controller.Master):
#end nocover
def handle_clientconnect(self, r):
self.add_event("Connect from: %s:%s"%r.address)
r.ack()
def handle_clientdisconnect(self, r):
s = "Disconnect from: %s:%s"%r.client_conn.address
self.add_event(s)
if r.client_conn.requestcount:
s = " -> handled %s requests"%r.client_conn.requestcount
self.add_event(s)
if r.client_conn.connection_error:
self.add_event(
" -> error: %s"%r.client_conn.connection_error, "error"
)
r.ack()
def handle_error(self, r):