X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp-api%2Fpython%2Fvpp_papi%2Fvpp_transport_socket.py;h=af9498533d941d8464df73b9976c55f5a78c1181;hb=53fffa1;hp=1822deb6d070b1d8c70b4bc832140698b3a804f7;hpb=94495f2a6a68ac2202b7715ce09620f1ba6fe673;p=vpp.git diff --git a/src/vpp-api/python/vpp_papi/vpp_transport_socket.py b/src/vpp-api/python/vpp_papi/vpp_transport_socket.py index 1822deb6d07..af9498533d9 100644 --- a/src/vpp-api/python/vpp_papi/vpp_transport_socket.py +++ b/src/vpp-api/python/vpp_papi/vpp_transport_socket.py @@ -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