Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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)
Beispiel #4
0
    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)
Beispiel #5
0
 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
Beispiel #6
0
    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