/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #ifndef AWS_JNI_CRT_HTTP_REQUEST_RESPONSE_H #define AWS_JNI_CRT_HTTP_REQUEST_RESPONSE_H #include #include struct aws_http_message; struct aws_http_stream; struct aws_byte_buf; struct aws_atomic_var; struct http_stream_binding { JavaVM *jvm; // TEMP: Until Java API changes to match "H1B" native HTTP API, // create aws_http_message and aws_input_stream under the hood. struct aws_http_message *native_request; jobject java_http_response_stream_handler; jobject java_http_stream_base; struct aws_http_stream *native_stream; struct aws_byte_buf headers_buf; int response_status; /* For the native http stream and the Java stream object */ struct aws_atomic_var ref; }; jobject aws_java_http_stream_from_native_new(JNIEnv *env, void *opaque, int version); void aws_java_http_stream_from_native_delete(JNIEnv *env, jobject jHttpStream); void *aws_http_stream_binding_release(JNIEnv *env, struct http_stream_binding *binding); void *aws_http_stream_binding_acquire(struct http_stream_binding *binding); // If error occurs, A Java exception is thrown and NULL is returned. struct http_stream_binding *aws_http_stream_binding_new(JNIEnv *env, jobject java_callback_handler); /* Default callbacks using binding */ int aws_java_http_stream_on_incoming_headers_fn( struct aws_http_stream *stream, enum aws_http_header_block block_type, const struct aws_http_header *header_array, size_t num_headers, void *user_data); int aws_java_http_stream_on_incoming_header_block_done_fn( struct aws_http_stream *stream, enum aws_http_header_block block_type, void *user_data); int aws_java_http_stream_on_incoming_body_fn( struct aws_http_stream *stream, const struct aws_byte_cursor *data, void *user_data); void aws_java_http_stream_on_stream_complete_fn(struct aws_http_stream *stream, int error_code, void *user_data); void aws_java_http_stream_on_stream_destroy_fn(void *user_data); #endif /* AWS_JNI_CRT_HTTP_REQUEST_RESPONSE_H */