fixbot/nexus.py
author Tero Marttila <terom@fixme.fi>
Sat, 20 Feb 2010 21:56:27 +0200
changeset 61 1e26ee53381f
parent 37 6fd6a9fdc001
child 62 e4db89a5f6bc
permissions -rw-r--r--
remove dead code from nexus.py
from twisted.application import internet, service
from twisted.internet import reactor, protocol
from twisted.python import log
import sys

import irc, api

class Nexus (object) :
    def __init__ (self) :
        """
            Must set .irc/.api attrs to irc.Factory/api.ServerFactory instances
        """

        self.modules = dict()


    def registerModule (self, module, transport) :
        self.modules[module.name] = (module, transport)

        self.irc.connection.moduleConnected(module, transport.transport.getPeer())

    def unregisterModule (self, module, reason) :
        del self.modules[module.name]

        self.irc.connection.moduleDisconnected(module, reason)
    
    def handleEvent (self, event) :
        self.irc.connection.sendEvent(event)

    def getModules (self) :
        return (module for (module, transport) in self.modules.itervalues())

    def getModuleInfo (self, name) :
        module, connection = self.modules[name]

        return module, connection.transport.getPeer()
 
def makeService (config) :
    n = Nexus()
    s = service.MultiService()
    
    # the IRC side
    n.irc = irc.Factory(n, 
        config['irc-nickname'], 
        config['irc-username'],
        config['irc-channel']
    )
    
    log.msg("Connecting to IRC server on [%s:%d]", config['irc-server'], config['irc-port'])
    irc_client = internet.TCPClient(config['irc-server'], config['irc-port'], n.irc)

    irc_client.setServiceParent(s)

    # the API side
    n.api = api.ServerFactory(n, config['api-secret'])
    
    log.msg("Starting API server on [%s:%d]", config['api-port'], config['api-listen'])
    api_server = internet.TCPServer(config['api-port'], n.api, interface=config['api-listen'])

    api_server.setServiceParent(s)

    # return the service collection
    return s