Exemple #1
0
    def share(self, name, item, fini=False):
        '''
        Share an object via the telepath protocol.

        Args:
            name (str): Name of the shared object
            item (object): Shared object
            fini (bool): If true, call item.fini() during the daemon fini().

        Examples:
            Share an object named 'foo' from the Foo class::

                dmon.share('foo', Foo())

            Share an eventbus named 'ebus' and fini it on daemon shutdown::

                dmon.share('ebus', EventBus(), fini=True).

        Returns:
            None
        '''
        self.shared[name] = item
        self.reflect[name] = s_reflect.getItemInfo(item)
        self.csides[name] = s_telepath.getClientSides(item)

        if fini:
            self.onfini(item.fini)
Exemple #2
0
    def reflectItem(self):
        refl = s_reflect.getItemInfo(self.item)
        if refl is None:
            return

        for name in refl.get('inherits', ()):
            for mixi in s_mixins.getSynMixins('cmdr', name):
                self.addCmdClass(mixi)
Exemple #3
0
    def share(self, name, item, fini=False):
        '''
        Share an object via the telepath protocol.

        Example:

            dmon.share('foo', Foo())

        '''
        self.shared[name] = item
        self.reflect[name] = s_reflect.getItemInfo(item)
        self.csides[name] = s_telepath.getClientSides(item)

        if fini:
            self.onfini(item.fini)
Exemple #4
0
    def push(self, name, item):
        '''
        Push access to an object to the daemon, allowing other clients access.

        Example:

            prox = s_telepath.openurl('tcp://127.0.0.1/')
            prox.push( 'bar', Bar() )

        '''
        csides = getClientSides(item)
        reflect = s_reflect.getItemInfo(item)
        job = self._txTeleJob('tele:push', name=name, reflect=reflect, csides=csides)
        self._tele_pushed[name] = item
        return self.syncjob(job)
Exemple #5
0
def getItemCmdr(item, outp=None, **opts):
    '''
    Construct and return a cmdr for the given item.

    Example:

        cmdr = getItemCmdr(foo)

    '''
    cmdr = s_cli.Cli(item, outp=outp)

    refl = s_reflect.getItemInfo(item)
    if refl is None:
        return cmdr

    for name in refl.get('inherits', ()):
        for mixi in s_mixins.getSynMixins('cmdr', name):
            cmdr.addCmdClass(mixi)

    return cmdr
Exemple #6
0
 def test_reflect_syn_reflect(self):
     bar = Bar()
     info = s_reflect.getItemInfo(bar)
     names = info.get('inherits', ())
     self.isin('synapse.eventbus.EventBus', names)
     self.isin('synapse.tests.test_lib_reflect.Foo', names)
Exemple #7
0
 def test_reflect_getItemInfo(self):
     foo = Foo()
     info = s_reflect.getItemInfo(foo)
     names = info.get('inherits', ())
     self.isin('synapse.eventbus.EventBus', names)
     self.isin('synapse.tests.test_lib_reflect.Foo', names)
Exemple #8
0
 def _syn_reflect(self):
     return s_reflect.getItemInfo(self.foo)
Exemple #9
0
 def _syn_reflect(self):
     return s_reflect.getItemInfo(self.foo)