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)
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)
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)
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)
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
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)
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)
def _syn_reflect(self): return s_reflect.getItemInfo(self.foo)