fixbot/nexus.py
changeset 62 e4db89a5f6bc
parent 61 1e26ee53381f
equal deleted inserted replaced
61:1e26ee53381f 62:e4db89a5f6bc
     4 import sys
     4 import sys
     5 
     5 
     6 import irc, api
     6 import irc, api
     7 
     7 
     8 class Nexus (object) :
     8 class Nexus (object) :
     9     def __init__ (self) :
     9     """
    10         """
    10         The core component, which has the set of registered ModuleInfo's from api, and the IRC connection
    11             Must set .irc/.api attrs to irc.Factory/api.ServerFactory instances
    11     """
    12         """
    12     
       
    13     # runtime config options as a dict
       
    14     config = None
    13 
    15 
       
    16     # the irc.Factory instance
       
    17     irc = None
       
    18 
       
    19     # the api.ServerFactory instance
       
    20     api = None
       
    21 
       
    22     def __init__ (self, config) :
       
    23         self.config = config
    14         self.modules = dict()
    24         self.modules = dict()
    15 
       
    16 
    25 
    17     def registerModule (self, module, transport) :
    26     def registerModule (self, module, transport) :
    18         self.modules[module.name] = (module, transport)
    27         self.modules[module.name] = (module, transport)
    19 
    28 
    20         self.irc.connection.moduleConnected(module, transport.transport.getPeer())
    29         self.irc.connection.moduleConnected(module, transport.transport.getPeer())
    34         module, connection = self.modules[name]
    43         module, connection = self.modules[name]
    35 
    44 
    36         return module, connection.transport.getPeer()
    45         return module, connection.transport.getPeer()
    37  
    46  
    38 def makeService (config) :
    47 def makeService (config) :
    39     n = Nexus()
    48     n = Nexus(config)
    40     s = service.MultiService()
    49     s = service.MultiService()
    41     
    50     
    42     # the IRC side
    51     # the IRC side
    43     n.irc = irc.Factory(n, 
    52     n.irc = irc.Factory(n, 
    44         config['irc-nickname'], 
    53         config['irc-nickname'], 
    50     irc_client = internet.TCPClient(config['irc-server'], config['irc-port'], n.irc)
    59     irc_client = internet.TCPClient(config['irc-server'], config['irc-port'], n.irc)
    51 
    60 
    52     irc_client.setServiceParent(s)
    61     irc_client.setServiceParent(s)
    53 
    62 
    54     # the API side
    63     # the API side
    55     n.api = api.ServerFactory(n, config['api-secret'])
    64     n.api = api.ServerFactory(n, config)
    56     
    65     
    57     log.msg("Starting API server on [%s:%d]", config['api-port'], config['api-listen'])
    66     log.msg("Starting API server on [%s:%d]", config['api-port'], config['api-listen'])
    58     api_server = internet.TCPServer(config['api-port'], n.api, interface=config['api-listen'])
    67     api_server = internet.TCPServer(config['api-port'], n.api, interface=config['api-listen'])
    59 
    68 
    60     api_server.setServiceParent(s)
    69     api_server.setServiceParent(s)