in docker_images/pythonv2/wrapper/python_glue/internal_iothub_glue.py [0:0]
def wait_for_method_and_return_response_sync(self, methodName, requestAndResponse):
with self.lock:
if methodName not in self.method_queues:
self.method_queues[methodName] = queue.Queue()
# receive method request
logger.info("Waiting for method request")
request = self.method_queues[methodName].get()
logger.info("Method request received")
# verify name and payload
expected_name = methodName
expected_payload = requestAndResponse.request_payload["payload"]
if request.name == expected_name:
if request.payload == expected_payload:
logger.info("Method name and payload matched. Returning response")
resp_status = requestAndResponse.status_code
resp_payload = requestAndResponse.response_payload
else:
logger.info("Request payload doesn't match")
logger.info("expected: " + expected_payload)
logger.info("received: " + request.payload)
resp_status = 500
resp_payload = None
else:
logger.info("Method name doesn't match")
logger.info("expected: '" + expected_name + "'")
logger.info("received: '" + request.name + "'")
resp_status = 404
resp_payload = None
# send method response
response = MethodResponse(
request_id=request.request_id, status=resp_status, payload=resp_payload
)
self.client.send_method_response(response)
logger.info("Method response sent")