papi: let async calls return context 67/21867/4
authorVratko Polak <vrpolak@cisco.com>
Fri, 6 Sep 2019 13:20:07 +0000 (15:20 +0200)
committerOle Trøan <otroan@employees.org>
Tue, 10 Sep 2019 07:23:39 +0000 (07:23 +0000)
Callback receives "reply" messages containing context,
but previously there was no easy way
to get the automatically generated context value
of the originally sent "command" message.

With this, the caller can store the contexts,
so the callback knows which command got replied to.

Type: feature

Change-Id: I58ca812d20b03916f74096c396126710115a747c
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
src/vpp-api/python/vpp_papi/vpp_papi.py

index 5af58a4..63fcc70 100644 (file)
@@ -669,13 +669,17 @@ class VPPApiClient(object):
         return rl
 
     def _call_vpp_async(self, i, msg, **kwargs):
-        """Given a message, send the message and await a reply.
+        """Given a message, send the message and return the context.
 
         msgdef - the message packing definition
         i - the message type index
         context - context number - chosen at random if not
         supplied.
         The remainder of the kwargs are the arguments to the API call.
+
+        The reply message(s) will be delivered later to the registered callback.
+        The returned context will help with assigning which call
+        the reply belongs to.
         """
         if 'context' not in kwargs:
             context = self.get_context()
@@ -691,6 +695,7 @@ class VPPApiClient(object):
         b = msg.pack(kwargs)
 
         self.transport.write(b)
+        return context
 
     def register_event_callback(self, callback):
         """Register a callback for async messages.