Example #1
0
class Link:
    def __init__(self, socket_obj, connection):
        self._connection = connection
        self._socket = socket_obj
        self._read_buffer = bytearray()
        self._write_queue = Queue()

    def read(self):
        result = bytearray('')
        while True:
            read_count = self._connection.recv_into(self._read_buffer, BUFFER_SIZE)
            if read_count > 0:
                result.extend(self._read_buffer[:read_count - 1])
            else:
                break
        return bytearray

    def send(self, data):
        self._write_queue.put_nowait(data)
        self._socket.notify_send_data(self._connection.fileno())

    def write(self):
        while self._write_queue.not_empty():
            data = self._write_queue.get_nowait()
            self._connection.sendall(data)

    def close(self):
        self._connection.close()
Example #2
0
	def run_to_results_any(self, calls):

		res_queue = Queue()
		res_queue.not_empty = LooseCondition(res_queue.mutex)
		res_queue.not_full = LooseCondition(res_queue.mutex)

		def run(call):
			try:
				res = call()
			except Exception, e:
				res = ExecutionException(sys.exc_info())
			res_queue.put(res)
			return res