For making an asynchronous request, a call back function needs to be defined and passed as an additional parameter to the call() API.
Syntax
result = service_instance_object.call(operation, parameters, callback=callback_function)
Arguments
The operation argument describes the service requested from the service provider. The parameters argument is a dictionary, which specifies input parameters to the specified request.
callback_function is an user defined callback function.
The following sample code illustrates how to define a callback handler function to handle the response from an asynchronous request:
def callback_function(transactionID, eventID, outParam)
The following table describes the arguments of the call back function:
| Argument | Description | Value |
transactionID |
This is the unique transaction ID associated with the particular asynchronous request. | It is returned as part of the result of the initial asynchronous call. |
eventID |
Specifies the asynchronous operation status. | For a complete list of EventID, see EventID 6.12.2 section in the Appendix. |
outParam |
This argument is a dictionary that holds the output of an asynchronous call. | Refer to the following table for the dictionary items in outParam. |
The outParam argument of callback method is a map containing the return value, an error code, and an error message.
| Properties | Description | Values |
ReturnValue |
This key contains the information requested by the asynchronous call that initiated the callback.
This key is present only if the requested service has a value to return. In this case, |
Depends on the Platform Service API and the asynchronous method that was called. Not all calls return this property. |
ErrorCode |
Specifies a pre-defined error code | For detail information about Platform Service API error codes and their descriptions, see Service API Error Codes and Description 6.12.1 section in the Appendix. |
ErrorMessage |
Describes the error | Depends on the Platform Service API and the asynchronous method that is called. |
Example
The following sample code illustrates how to retrieve media files from a database, using the operation:
import scriptext
import e32
def media_callback(trans_id, event_id, output_params):
# Check if we are interested in this transaction
if trans_id == media_trans_id:
print "Not the transaction in which we are interested!"
return
# Check if the transaction is complete
if event_id != scriptext.EventCompleted:
print "Transaction not complete!"
return
# Check if the transaction has resulted in any error
if output_params['ReturnCode'] != 0:
print output_params['ReturnMessage']
else:
song_list = []
for item in output_params['ReturnValue']:
song_list.append(item['FileName'])
print "List of files retrieved:", song_list
lock.signal()
lock = e32.Ao_lock()
media_handle = scriptext.load('Service.MediaManagement', 'IDataSource')
# Request for the list of mp3s in ascending order
media_trans_id = media_handle.call('GetList',
{'Type': u'FileInfo': u'FileExtension',
'StartRange': u'.mp3'},
'Sort': {'Key': u'FileName', 'Order': u'Ascending'}},
callback=media_callback)
lock.wait()
See About this document... for information on suggesting changes.