Пример #1
0
Файл: db.py Проект: mflorin/ir
    def init(self):

        # config options
        self.config = {}

        self.loadConfig()
        
        self.running = False

        # initialize the event object used for sleeping
        self.event = threading.Event()

        if self.config['persistence'] and os.path.exists(self.config['file_name']):
            try:
                Logger.info('loading database from %s' % self.config['file_name'])
                self.load()
            except Exception as e:
                Logger.critical(str(e))

        self.setup()

        # register our 'save' commands
        Command.register(self.saveCmd, 'db.save', 0, 'db.save')
        
        # treat events
        Event.register('core.reload', self.reloadEvent)
        Event.register('core.shutdown', self.shutdownEvent)
Пример #2
0
    def init():

        commands = {
            'product.add': {'handler': Product.productAddCmd, 'args':2, 'help':'productAdd sku stock'},
            'product.info': {'handler': Product.productInfoCmd, 'args':1, 'help':'productInfo sku'},
            'reservation.add': {'handler': Product.reservationAddCmd, 'args':3, 'help':'reservationAdd client_id sku qty'},
            'reservation.del': {'handler': Product.reservationDelCmd, 'args':3, 'help':'reservationDel client_id sku qty'},
            'reservation.set': {'handler': Product.reservationSetCmd, 'args':3, 'help':'reservationSet client_id sku qty'},
            'stock.set': {'handler': Product.stockSetCmd, 'args':2, 'help':'stockSet sku stock'},
            'stock.dec': {'handler': Product.stockDecCmd, 'args':2, 'help':'stockDec sku qty'},
            'stock.get': {'handler': Product.stockGetCmd, 'args':1, 'help':'stockGet sku'},
            'product.total': {'handler': Product.totalCmd, 'args':0, 'help':'status'}
        }


        for c in commands:
            Command.register(
                commands[c]['handler'], 
                c, 
                commands[c]['args'], 
                commands[c]['help']
            )

        Event.register('db.save', Product.saveDb)
        Event.register('db.load', Product.loadDb)
Пример #3
0
    def init():

        Config.load()

        # register our "reloadCfg" command
        Command.register(Config.reloadCmd, 'config.reload', 0, 'config.reload')
        
        # reload config when receiving SIGUSR1
        signal.signal(signal.SIGUSR1, Config.sigusr1)
Пример #4
0
    def __init__(self):

        self.config = {}

        # load configuration options
        self.loadConfig()

        self.running = True
        self.connections = {}

        # initialize the epoll object
        self.epoll = select.epoll()

        # workers manager
        self.manager = Manager(self)
        self.manager.start()
     
        Event.register('core.reload', self.reloadEvent)
        
        Command.register(self.shutdownCmd, 'core.shutdown', 0, 'core.shutdown')
Пример #5
0
    def __init__(self, server):

        super(Manager, self).__init__()

        # list of workers
        self.workers = []

        # mutex for the list of workers
        self.workersLock = threading.RLock()

        # condition variable
        self.event = threading.Event()

        # flag indicating that we're still running
        self.running = False
        
        # manager config
        self.config = {}
        self.loadConfig()

        # available idle threads
        self.idleWorkers = Queue.Queue()

        # read buffer to collect data from sockets
        # and split it later by \n and feed it to workers
        # when a \n is met
        # fd -> buffer
        self.readBuffer = {}
   
        # register commands
        Command.register(self.workersCmd, 'core.workers', 0)

        # register for the core.reload event
        Event.register('core.reload', self.reloadEvent)
                
        # server instance
        self.server = server