def jellyFor(self, jellier): """serialize me (only for the broker I'm for) as the original cached reference """ if jellier.invoker is None: return getInstanceState(self, jellier) assert jellier.invoker is self.broker, "You cannot exchange cached proxies between brokers." return 'lcache', self.luid
def jellyFor(self, jellier): """Assemble type tag and state to copy for this broker. This will call L{getTypeToCopyFor} and L{getStateToCopy}, and return an appropriate s-expression to represent me. """ if jellier.invoker is None: return getInstanceState(self, jellier) p = jellier.invoker.serializingPerspective t = self.getTypeToCopyFor(p) state = self.getStateToCopyFor(p) sxp = jellier.prepare(self) sxp.extend([t, jellier.jelly(state)]) return jellier.preserve(self, sxp)
def jellyFor(self, jellier): """Return an appropriate tuple to serialize me. Depending on whether this broker has cached me or not, this may return either a full state or a reference to an existing cache. """ if jellier.invoker is None: return getInstanceState(self, jellier) luid = jellier.invoker.cachedRemotelyAs(self, 1) if luid is None: luid = jellier.invoker.cacheRemotely(self) p = jellier.invoker.serializingPerspective type_ = self.getTypeToCopyFor(p) observer = RemoteCacheObserver(jellier.invoker, self, p) state = self.getStateToCacheAndObserveFor(p, observer) l = jellier.prepare(self) jstate = jellier.jelly(state) l.extend([type_, luid, jstate]) return jellier.preserve(self, l) else: return cached_atom, luid