Skip to content

Commit

Permalink
Make Violation messages for arguments and answers include the method …
Browse files Browse the repository at this point in the history
…name. fixes #201

Signed-off-by: David-Sarah Hopwood <david-sarah@jacaranda.org>
  • Loading branch information
David-Sarah Hopwood committed Nov 9, 2012
1 parent d34838e commit 11af15d
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
2 changes: 1 addition & 1 deletion foolscap/broker.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ def _callFinished(self, res, delivery):
(delivery.obj, methodSchema.name))
raise

answer = call.AnswerSlicer(reqID, res)
answer = call.AnswerSlicer(reqID, res, methodSchema.name)
# once the answer has started transmitting, any exceptions must be
# logged and dropped, and not turned into an Error to be sent.
try:
Expand Down
14 changes: 8 additions & 6 deletions foolscap/call.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,21 +104,22 @@ def fail(self, why):
class ArgumentSlicer(slicer.ScopedSlicer):
opentype = ('arguments',)

def __init__(self, args, kwargs):
def __init__(self, args, kwargs, methodname="?"):
slicer.ScopedSlicer.__init__(self, None)
self.args = args
self.kwargs = kwargs
self.which = ""
self.methodname = methodname

def sliceBody(self, streamable, banana):
yield len(self.args)
for i,arg in enumerate(self.args):
self.which = "arg[%d]" % i
self.which = "arg[%d]-of-%s" % (i, self.methodname)
yield arg
keys = self.kwargs.keys()
keys.sort()
for argname in keys:
self.which = "arg[%s]" % argname
self.which = "arg[%s]-of-%s" % (argname, self.methodname)
yield argname
yield self.kwargs[argname]

Expand All @@ -141,7 +142,7 @@ def sliceBody(self, streamable, banana):
yield self.reqID
yield self.clid
yield self.methodname
yield ArgumentSlicer(self.args, self.kwargs)
yield ArgumentSlicer(self.args, self.kwargs, self.methodname)

def describe(self):
return "<call-%s-%s-%s>" % (self.reqID, self.clid, self.methodname)
Expand Down Expand Up @@ -573,18 +574,19 @@ def describe(self):
class AnswerSlicer(slicer.ScopedSlicer):
opentype = ('answer',)

def __init__(self, reqID, results):
def __init__(self, reqID, results, methodname="?"):
assert reqID != 0
slicer.ScopedSlicer.__init__(self, None)
self.reqID = reqID
self.results = results
self.methodname = methodname

def sliceBody(self, streamable, banana):
yield self.reqID
yield self.results

def describe(self):
return "<answer-%s>" % self.reqID
return "<answer-%s-to-%s>" % (self.reqID, self.methodname)

class AnswerUnslicer(slicer.ScopedUnslicer):
request = None
Expand Down

0 comments on commit 11af15d

Please sign in to comment.