api: fix vac_read return codes
[vpp.git] / src / vpp-api / python / vpp_papi / vpp_transport_shmem.py
index 53ae775..64c1a59 100644 (file)
@@ -48,7 +48,13 @@ def vac_error_handler(arg, msg, msg_len):
 
 
 class VppTransportShmemIOError(IOError):
-    pass
+    """ exception communicating with vpp over shared memory """
+
+    def __init__(self, rv, descr):
+        self.rv = rv
+        self.desc = descr
+
+        super(VppTransportShmemIOError, self).__init__(rv, descr)
 
 
 class VppTransport(object):
@@ -117,7 +123,8 @@ class VppTransport(object):
         size = ffi.new("int *")
         rv = vpp_api.vac_read(mem, size, self.read_timeout)
         if rv:
-            raise VppTransportShmemIOError(rv, 'vac_read failed')
+            strerror = 'vac_read failed.  It is likely that VPP died.'
+            raise VppTransportShmemIOError(rv, strerror)
         msg = bytes(ffi.buffer(mem[0], size[0]))
         vpp_api.vac_free(mem[0])
         return msg