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
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']
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:
self.socket.close()
self.sque.put(True) # Terminate listening thread
self.message_thread.join()
+ return rv
def suspend(self):
pass
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):
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