2424#include < aws/connecthealth/model/UntagResourceRequest.h>
2525#include < aws/core/auth/AWSAuthSigner.h>
2626#include < aws/core/auth/AWSCredentialsProviderChain.h>
27+ #include < aws/core/client/AWSClientBidirectionalStreaming.h>
2728#include < aws/core/client/AWSClientEventStreamingAsyncTask.h>
2829#include < aws/core/client/CoreErrors.h>
2930#include < aws/core/client/RetryStrategy.h>
@@ -517,10 +518,43 @@ void ConnectHealthClient::StartMedicalScribeListeningSessionAsync(
517518 }
518519 endpointResolutionOutcome.GetResult ().AddPathSegments (" /medical-scribe-stream/" );
519520
521+ #if AWS_SDK_USE_CRT_HTTP
522+ // Push-based WriteData path (CRT HTTP client only)
523+ auto writeDataStreamBuf = Aws::MakeShared<Aws::Utils::Stream::HttpWriteDataStreamBuf>(ALLOCATION_TAG, GetHttpClient ());
524+ auto signer = GetSignerByName (Aws::Auth::EVENTSTREAM_SIGV4_SIGNER);
525+
526+ auto eventEncoderStream = Aws::MakeShared<Model::MedicalScribeInputStream>(ALLOCATION_TAG, writeDataStreamBuf);
527+ eventEncoderStream->SetSigner (signer);
528+
529+ auto requestCopy = Aws::MakeShared<StartMedicalScribeListeningSessionRequest>(ALLOCATION_TAG, request);
530+ request.SetInputStream (eventEncoderStream);
531+
532+ auto & endpoint = endpointResolutionOutcome.GetResult ();
533+ auto httpRequest =
534+ CreateHttpRequest (endpoint.GetURI (), Aws::Http::HttpMethod::HTTP_POST, Aws::Utils::Stream::DefaultResponseStreamFactoryMethod);
535+ httpRequest->SetEventStreamRequest (true );
536+ httpRequest->SetHasEventStreamResponse (true );
537+ BuildHttpRequest (*requestCopy, httpRequest);
538+
539+ if (!signer->SignRequest (*httpRequest, nullptr , nullptr , true )) {
540+ handler (this , request,
541+ StartMedicalScribeListeningSessionOutcome (
542+ Aws::Client::AWSError<CoreErrors>(CoreErrors::CLIENT_SIGNING_FAILURE, " " , " Failed to sign request" , false )),
543+ handlerContext);
544+ return ;
545+ }
546+ eventEncoderStream->SetSignatureSeed (Aws::Client::GetAuthorizationHeader (*httpRequest));
547+
548+ Aws::Client::SubmitBidirectionalStreamingRequest<ConnectHealthClient, StartMedicalScribeListeningSessionOutcome,
549+ StartMedicalScribeListeningSessionRequest, Model::MedicalScribeInputStream>(
550+ this , request, requestCopy, eventEncoderStream, writeDataStreamBuf, httpRequest, m_clientConfiguration.executor .get (),
551+ streamReadyHandler, handler, handlerContext);
552+ #else
553+ // Pull-based path (curl/WinHTTP)
520554 auto eventEncoderStream = Aws::MakeShared<Model::MedicalScribeInputStream>(ALLOCATION_TAG);
521555 eventEncoderStream->SetSigner (GetSignerByName (Aws::Auth::EVENTSTREAM_SIGV4_SIGNER));
522556 auto requestCopy = Aws::MakeShared<StartMedicalScribeListeningSessionRequest>(" StartMedicalScribeListeningSession" , request);
523- requestCopy->SetInputStream (eventEncoderStream); // this becomes the body of the request
557+ requestCopy->SetInputStream (eventEncoderStream);
524558 request.SetInputStream (eventEncoderStream);
525559
526560 auto asyncTask = CreateBidirectionalEventStreamTask<StartMedicalScribeListeningSessionOutcome>(
@@ -529,6 +563,7 @@ void ConnectHealthClient::StartMedicalScribeListeningSessionAsync(
529563 m_clientConfiguration.executor ->Submit (std::move (asyncTask));
530564 sem->WaitOne ();
531565 streamReadyHandler (*eventEncoderStream);
566+ #endif
532567}
533568StartPatientInsightsJobOutcome ConnectHealthClient::StartPatientInsightsJob (const StartPatientInsightsJobRequest& request) const {
534569 if (!request.DomainIdHasBeenSet ()) {
0 commit comments