in source/event_stream_rpc_server.c [472:523]
static void s_on_protocol_message_written_fn(
struct aws_event_stream_message *message,
int error_code,
void *user_data) {
(void)message;
struct event_stream_connection_send_message_args *message_args = user_data;
AWS_LOGF_TRACE(
AWS_LS_EVENT_STREAM_RPC_SERVER,
"id=%p: message flushed to channel with error %s",
(void *)message_args->connection,
aws_error_debug_str(error_code));
if (message_args->message_type == AWS_EVENT_STREAM_RPC_MESSAGE_TYPE_CONNECT_ACK) {
AWS_LOGF_TRACE(
AWS_LS_EVENT_STREAM_RPC_SERVER,
"id=%p: connect ack message flushed to wire",
(void *)message_args->connection);
}
if (message_args->end_stream) {
AWS_FATAL_ASSERT(message_args->continuation && "end stream flag was set but it wasn't on a continuation");
AWS_LOGF_DEBUG(
AWS_LS_EVENT_STREAM_RPC_SERVER,
"id=%p: end_stream flag for continuation %p was set, closing",
(void *)message_args->connection,
(void *)message_args->continuation);
aws_atomic_store_int(&message_args->continuation->is_closed, 1U);
aws_hash_table_remove(
&message_args->connection->continuation_table, &message_args->continuation->stream_id, NULL, NULL);
}
message_args->flush_fn(error_code, message_args->user_data);
if (message_args->terminate_connection) {
AWS_LOGF_INFO(
AWS_LS_EVENT_STREAM_RPC_SERVER,
"id=%p: terminate connection flag was set. closing",
(void *)message_args->connection);
aws_event_stream_rpc_server_connection_close(message_args->connection, AWS_ERROR_SUCCESS);
}
aws_event_stream_rpc_server_connection_release(message_args->connection);
if (message_args->continuation) {
aws_event_stream_rpc_server_continuation_release(message_args->continuation);
}
aws_event_stream_message_clean_up(&message_args->message);
aws_mem_release(message_args->allocator, message_args);
}