irkerd: Add kwargs handling to pass data to IRCServerConnection.connect
authorW. Trevor King <wking@tremily.us>
Fri, 7 Mar 2014 04:21:08 +0000 (20:21 -0800)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 11 Mar 2014 04:44:15 +0000 (00:44 -0400)
commit094d34703ec612a1ad5dddaa855a1e092ce47970
tree55d9ba0530141741708d205811aa77e1b4f7644f
parentdde3c700cd93680dd9a9898fe30204f6ae36e7de
irkerd: Add kwargs handling to pass data to IRCServerConnection.connect

This makes it easy to pass data down the stack:

  Irker() (stored in Irker.kwargs)
  `-- Irker.handle() -> Dispatcher() (stored in Dispatcher.kwargs)
      `-- Dispatcher.dispatch() -> Connection() (stored in Connection.kwargs)
          `-- Connection.dequeue() -> IRCServerConnection.connect()

You can easily add data at every point in the stack (e.g. we add
'target' in Irker.handle()) and pull it back out when that's
appropriate (e.g. we tap 'target' back out in Connection()).  With
this setup we can reduce the number of global variables currently in
use, because it will be easy to pass data like passwords,
nickame-fallback-ness, etc. down to the appropriate level, without the
intermediate levels needing any changes.
irkerd