static void s_on_protocol_message_written_fn()

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);
}