@@ -325,6 +325,114 @@ int aws_s3_request_metrics_get_receiving_duration_ns(
325325 return AWS_OP_SUCCESS ;
326326}
327327
328+ int aws_s3_request_metrics_get_sign_start_timestamp_ns (
329+ const struct aws_s3_request_metrics * metrics ,
330+ uint64_t * out_signing_start_time ) {
331+ AWS_PRECONDITION (metrics );
332+ AWS_PRECONDITION (out_signing_start_time );
333+ if (metrics -> time_metrics .sign_start_timestamp_ns < 0 ) {
334+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
335+ }
336+ * out_signing_start_time = metrics -> time_metrics .sign_start_timestamp_ns ;
337+ return AWS_OP_SUCCESS ;
338+ }
339+
340+ int aws_s3_request_metrics_get_sign_end_timestamp_ns (
341+ const struct aws_s3_request_metrics * metrics ,
342+ uint64_t * out_signing_end_time ) {
343+ AWS_PRECONDITION (metrics );
344+ AWS_PRECONDITION (out_signing_end_time );
345+ if (metrics -> time_metrics .sign_end_timestamp_ns < 0 ) {
346+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
347+ }
348+ * out_signing_end_time = metrics -> time_metrics .sign_end_timestamp_ns ;
349+ return AWS_OP_SUCCESS ;
350+ }
351+
352+ int aws_s3_request_metrics_get_signing_duration_ns (
353+ const struct aws_s3_request_metrics * metrics ,
354+ uint64_t * out_signing_duration ) {
355+ AWS_PRECONDITION (metrics );
356+ AWS_PRECONDITION (out_signing_duration );
357+ if (metrics -> time_metrics .signing_duration_ns < 0 ) {
358+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
359+ }
360+ * out_signing_duration = metrics -> time_metrics .signing_duration_ns ;
361+ return AWS_OP_SUCCESS ;
362+ }
363+
364+ int aws_s3_request_metrics_get_mem_acquire_start_timestamp_ns (
365+ const struct aws_s3_request_metrics * metrics ,
366+ uint64_t * out_mem_acquire_start_time ) {
367+ AWS_PRECONDITION (metrics );
368+ AWS_PRECONDITION (out_mem_acquire_start_time );
369+ if (metrics -> time_metrics .mem_acquire_start_timestamp_ns < 0 ) {
370+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
371+ }
372+ * out_mem_acquire_start_time = metrics -> time_metrics .mem_acquire_start_timestamp_ns ;
373+ return AWS_OP_SUCCESS ;
374+ }
375+
376+ int aws_s3_request_metrics_get_mem_acquire_end_timestamp_ns (
377+ const struct aws_s3_request_metrics * metrics ,
378+ uint64_t * out_mem_acquire_end_time ) {
379+ AWS_PRECONDITION (metrics );
380+ AWS_PRECONDITION (out_mem_acquire_end_time );
381+ if (metrics -> time_metrics .mem_acquire_end_timestamp_ns < 0 ) {
382+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
383+ }
384+ * out_mem_acquire_end_time = metrics -> time_metrics .mem_acquire_end_timestamp_ns ;
385+ return AWS_OP_SUCCESS ;
386+ }
387+
388+ int aws_s3_request_metrics_get_mem_acquire_duration_ns (
389+ const struct aws_s3_request_metrics * metrics ,
390+ uint64_t * out_mem_acquire_duration ) {
391+ AWS_PRECONDITION (metrics );
392+ AWS_PRECONDITION (out_mem_acquire_duration );
393+ if (metrics -> time_metrics .mem_acquire_duration_ns < 0 ) {
394+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
395+ }
396+ * out_mem_acquire_duration = metrics -> time_metrics .mem_acquire_duration_ns ;
397+ return AWS_OP_SUCCESS ;
398+ }
399+
400+ int aws_s3_request_metrics_get_delivery_start_timestamp_ns (
401+ const struct aws_s3_request_metrics * metrics ,
402+ uint64_t * out_delivery_start_time ) {
403+ AWS_PRECONDITION (metrics );
404+ AWS_PRECONDITION (out_delivery_start_time );
405+ if (metrics -> time_metrics .deliver_start_timestamp_ns < 0 ) {
406+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
407+ }
408+ * out_delivery_start_time = metrics -> time_metrics .deliver_start_timestamp_ns ;
409+ return AWS_OP_SUCCESS ;
410+ }
411+
412+ int aws_s3_request_metrics_get_delivery_end_timestamp_ns (
413+ const struct aws_s3_request_metrics * metrics ,
414+ uint64_t * out_delivery_end_time ) {
415+ AWS_PRECONDITION (metrics );
416+ AWS_PRECONDITION (out_delivery_end_time );
417+ if (metrics -> time_metrics .deliver_end_timestamp_ns < 0 ) {
418+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
419+ }
420+ * out_delivery_end_time = metrics -> time_metrics .deliver_end_timestamp_ns ;
421+ return AWS_OP_SUCCESS ;
422+ }
423+
424+ int aws_s3_request_metrics_get_delivery_duration_ns (
425+ const struct aws_s3_request_metrics * metrics ,
426+ uint64_t * out_delivery_duration ) {
427+ AWS_PRECONDITION (metrics );
428+ AWS_PRECONDITION (out_delivery_duration );
429+ if (metrics -> time_metrics .deliver_duration_ns < 0 ) {
430+ return aws_raise_error (AWS_ERROR_S3_METRIC_DATA_NOT_AVAILABLE );
431+ }
432+ * out_delivery_duration = metrics -> time_metrics .deliver_duration_ns ;
433+ return AWS_OP_SUCCESS ;
434+ }
435+
328436int aws_s3_request_metrics_get_response_status_code (
329437 const struct aws_s3_request_metrics * metrics ,
330438 int * response_status ) {
0 commit comments