in source/event_stream_rpc_client_continuation.c [108:149]
static void s_on_continuation_message(
struct aws_event_stream_rpc_client_continuation_token *native,
const struct aws_event_stream_rpc_message_args *message_args,
void *user_data) {
(void)native;
struct continuation_binding *continuation = user_data;
PyGILState_STATE state;
if (aws_py_gilstate_ensure(&state)) {
return; /* Python has shut down. Nothing matters anymore, but don't crash */
}
PyObject *headers = NULL;
PyObject *result = NULL;
headers = aws_py_event_stream_python_headers_create(message_args->headers, message_args->headers_count);
if (!headers) {
PyErr_WriteUnraisable(continuation->self_py);
goto done;
}
result = PyObject_CallMethod(
continuation->self_py,
"_on_continuation_message",
"(Oy#iI)",
headers,
message_args->payload->buffer,
message_args->payload->len,
message_args->message_type,
message_args->message_flags);
if (!result) {
/* Callback might fail during application shutdown */
PyErr_WriteUnraisable(continuation->self_py);
goto done;
}
done:
Py_XDECREF(headers);
Py_XDECREF(result);
PyGILState_Release(state);
}