Python Manual User Manual

Page of 124
Service Requests
62
if failure.origin() == "netsvc" and \
failure.error() == netsvc.SERVER_METHOD_UNAVAILABLE:
# method didn’t exist
As an alternative to using the "
conversationId()
" member function to obtain the conversation
id of the failed request, if the callback accepts a single argument, the conversation id will be passed as
an argument to the callback function.
class Client(netsvc.Service):
def __init__(self,name):
netsvc.Service.__init__(self,"","")
service = self.serviceEndPoint("SMS")
if service:
id = service.uptime()
self.processResponse(self.uptimeResponse,id)
self.processFailure(self.uptimeFailure,id)
def uptimeResponse(self,result):
print result
def uptimeFailure(self,id):
failure = self.currentFailure()
if failure.origin() == "netsvc" and \
failure.error() == netsvc.SERVER_METHOD_UNAVAILABLE:
# method didn’t exist
This ability to have details of the failure supplied as arguments to the callback function also extends to
the contents of the failure object if the callback function accepts an additional four parameters in ad-
dition to that for the conversation id.
class Client(netsvc.Service):
def __init__(self,name):
netsvc.Service.__init__(self,"","")
service = self.serviceEndPoint("SMS")
if service:
id = service.uptime()
self.processResponse(self.uptimeResponse,id)
self.processFailure(self.uptimeFailure,id)
def uptimeResponse(self,result):
print result
def uptimeFailure(self,id,error,description,origin,details):
if origin == "netsvc" and error == netsvc.SERVER_METHOD_UNAVAILABLE:
# method didn’t exist
These are not keyword arguments, but positional parameters which the code which calls the callback
function supplies or not based on the number of arguments the callback accepts. In other words, the
callback must accept the appropriate number of arguments as necessary and in the specified order.