API: Add support for type aliases
[vpp.git] / src / vpp-api / python / vpp_papi / vpp_transport_socket.py
index 1822deb..af94985 100644 (file)
@@ -6,10 +6,14 @@ import struct
 import threading
 import select
 import multiprocessing
+try:
+    import queue as queue
+except ImportError:
+    import Queue as queue
 import logging
 
 
-class VppTransport:
+class VppTransport(object):
     def __init__(self, parent, read_timeout, server_address):
         self.connected = False
         self.read_timeout = read_timeout if read_timeout > 0 else 1
@@ -67,11 +71,10 @@ class VppTransport:
         try:
             self.socket.connect(self.server_address)
         except socket.error as msg:
-            logging.error(msg)
+            logging.error("{} on socket {}".format(msg, self.server_address))
             raise
 
         self.connected = True
-
         # Initialise sockclnt_create
         sockclnt_create = self.parent.messages['sockclnt_create']
         sockclnt_create_reply = self.parent.messages['sockclnt_create_reply']
@@ -98,6 +101,7 @@ class VppTransport:
         return 0
 
     def disconnect(self):
+        rv = 0
         try:  # Might fail, if VPP closes socket before packet makes it out
             rv = self.parent.api.sockclnt_delete(index=self.socket_index)
         except IOError:
@@ -106,6 +110,7 @@ class VppTransport:
         self.socket.close()
         self.sque.put(True)  # Terminate listening thread
         self.message_thread.join()
+        return rv
 
     def suspend(self):
         pass
@@ -116,7 +121,7 @@ class VppTransport:
     def callback(self):
         raise NotImplemented
 
-    def get_callback(self, async):
+    def get_callback(self, do_async):
         return self.callback
 
     def get_msg_index(self, name):
@@ -173,4 +178,7 @@ class VppTransport:
     def read(self):
         if not self.connected:
             raise IOError(1, 'Not connected')
-        return self.q.get()
+        try:
+            return self.q.get(True, self.read_timeout)
+        except queue.Empty:
+            return None