Hi,
while trying to isolate a bug in my app, I found some strange
differences between the implementations of remote_* and perspective_*.
1. in pb.Broker.serialize(), those attributes are set and restored:
jellyMethod, jellyArgs, jellyKw. Within twisted
Those attributes are not used anywhere. I grepped, and I ran the
test suite without those. Is there some code outside of twisted
using this? What for? Or is there a need for avoiding garbage
collection? (which would need some explanation).
My theory is that it was forgotten to remove them when doing
svn commit 1448: Before, they were actually used in
_NetJellier._jelly_instance, but no more after this commit.
2. Those implementations differ:
remote_*: return broker.serialize(state, self.perspective)
perspective_*: return broker.serialize(state, self, method, args, kw)
view_*: return broker.serialize(state, self.perspective, method, args,
kw)
observe_*: return broker.serialize(state, None, method, args, kw)
Can you please explain why remote_* is implemented differently?
This goes back to before the first import to svn, so I cannot
browse the history.
3. They all raise AttributeError for undefined method except remote_*
which raises MethodNotFound. Both are not documented in the API.
Could this be unified to MethodNotFound?
My theory is that svn commit 13473 was incomplete. Commit message was:
Raise NoSuchMethod instead of AttributeError when call is made to
remote_
method that doesn't exist
--
Wolfgang
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python