Esempio n. 1
0
@defaultconfig
@depend(redisdb.RedisDB)
class RedisNotifier(Module):
    """
    Update notification with Redis Pub/Sub
    """
    _default_vhostbind = ''
    _default_prefix = 'vlcp.updatenotifier.'
    _default_singlecastlimit = 256
    _default_deflate = False
    def __init__(self, server):
        Module.__init__(self, server)
        self.createAPI(api(self.createnotifier))
    def load(self, container):
        self.scheduler.queue.addSubQueue(999, ModifyListen.createMatcher(), "redisnotifier_modifylisten")
        for m in Module.load(self, container):
            yield m
    def unload(self, container, force=False):
        for m in Module.unload(self, container, force=force):
            yield m
        for m in container.syscall_noreturn(syscall_removequeue(self.scheduler.queue, "redisnotifier_modifylisten")):
            yield m
    def createnotifier(self):
        "Create a new notifier object"
        n = _Notifier(self.vhostbind, self.prefix, self.scheduler, self.singlecastlimit, self.deflate)
        n.start()
        return n

UpdateNotifier = proxy('UpdateNotifier', RedisNotifier)
Esempio n. 2
0
'''
Created on 2016/3/22

:author: hubo
'''

import vlcp.service.connection.redisdb as redisdb
from vlcp.server.module import proxy

KVStorage = proxy('KVStorage', redisdb.RedisDB)
Esempio n. 3
0
    # module.redisdb.deflate=True
    _default_deflate = False

    def __init__(self, server):
        Module.__init__(self, server)
        self.createAPI(api(self.createnotifier))

    def load(self, container):
        self.scheduler.queue.addSubQueue(999, ModifyListen.createMatcher(),
                                         "redisnotifier_modifylisten")
        for m in Module.load(self, container):
            yield m

    def unload(self, container, force=False):
        for m in Module.unload(self, container, force=force):
            yield m
        for m in container.syscall_noreturn(
                syscall_removequeue(self.scheduler.queue,
                                    "redisnotifier_modifylisten")):
            yield m

    def createnotifier(self):
        "Create a new notifier object"
        n = _Notifier(self.vhostbind, self.prefix, self.scheduler,
                      self.singlecastlimit, self.deflate)
        n.start()
        return n


UpdateNotifier = proxy('UpdateNotifier', RedisNotifier)
Esempio n. 4
0
                self._set(k, v, t, timeout)
            else:
                self.delete(k)
        return (newkeys, newvs)


def return_self_updater(func):
    '''
    Run func, but still return v. Useful for using knowledge.update with operates like append, extend, etc.
    e.g. return_self(lambda k,v: v.append('newobj'))
    '''
    @functools.wraps(func)
    def decorator(k, v):
        func(k, v)
        return v

    return decorator


def escape_key(k):
    "Escape k, ensuring there is not a '.' in the string."
    return k.replace('+', '+_').replace('.', '++')


def unescape_key(k):
    "Unescape key to get '.' back"
    return k.replace('++', '.').replace('+_', '+')


MemoryStorage = proxy('MemoryStorage', Knowledge)