Fix request

This commit is contained in:
Artem30801
2019-04-09 23:11:45 +03:00
parent b9008204ee
commit 733b4e84c1
2 changed files with 27 additions and 6 deletions

View File

@@ -257,7 +257,7 @@ class Client(messaging.ConnectionManager):
self.on_connect(self)
def _got_id(self, value):
logging.info("Got copter id: {} for client {}".format(self.copter_id, self.addr))
logging.info("Got copter id: {} for client {}".format(value, self.addr))
self.copter_id = value
if Client.on_first_connect:
Client.on_first_connect(self)
@@ -290,7 +290,7 @@ class Client(messaging.ConnectionManager):
def broadcast(message, force_all=False):
for client in Client.clients.values():
if client.connected or force_all:
client.send(message)
client._send(message)
@classmethod
@requires_any_connected

View File

@@ -13,7 +13,8 @@ except:
import selectors2 as selectors
PendingRequest = collections.namedtuple("PendingRequest", ["value", "requested_value", # "expires_on",
"callback", "callback_args", "callback_kwargs"
"callback", "callback_args", "callback_kwargs",
#"obj",
])
@@ -286,12 +287,29 @@ class ConnectionManager(object):
with self._request_lock:
for key, value in self._request_queue.items():
if (key == request_id) and (value.requested_value == requested_value):
print(54)
request = self._request_queue.pop(key)
request.value = message.content["value"]
print(request)
value = message.content["value"]
print(45)
logging.debug(
"Request successfully closed with value {}".format(message.content["value"])
)
request.callback(request.value, *request.callback_args, **request.callback_kwargs)
'''
if request.obj:
obj = request.obj
f = request.callback
obj.f(request.value, *request.callback_args, **request.callback_kwargs)
else:
f = request.callback
f(request.value, *request.callback_args, **request.callback_kwargs)
'''
f = request.callback
print(f)
f(value, *request.callback_args, **request.callback_kwargs)
break
else:
logging.warning("Unexpected response!")
@@ -311,6 +329,7 @@ class ConnectionManager(object):
with self._send_lock:
if (not self._send_buffer) and self._send_queue:
message = self._send_queue.popleft()
print(self._send_queue)
self._send_buffer += message
if self._send_buffer:
self._write()
@@ -332,13 +351,14 @@ class ConnectionManager(object):
else:
logging.debug("Sent {} to {}".format(self._send_buffer[:sent], self.addr))
self._send_buffer = self._send_buffer[sent:]
print(self._send_buffer)
def _send(self, data):
with self._send_lock:
self._send_queue.append(data)
def get_response(self, requested_value, callback, request_args=None, # timeout=30,
callback_args=(), callback_kwargs=None):
callback_args=(), callback_kwargs=None, obj=None):
if request_args is None:
request_args = {}
if callback_kwargs is None:
@@ -353,6 +373,7 @@ class ConnectionManager(object):
callback=callback,
callback_args=callback_args,
callback_kwargs=callback_kwargs,
#obj=obj
)
self._send(MessageManager.create_request(requested_value, request_id, request_args))