Skip to content

Commit 74ec3e0

Browse files
committed
updates
1 parent 020d167 commit 74ec3e0

File tree

11 files changed

+56
-52
lines changed

11 files changed

+56
-52
lines changed

generated/src/aws-cpp-sdk-transcribestreaming/source/TranscribeStreamingServiceClient.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,13 @@ void TranscribeStreamingServiceClient::StartCallAnalyticsStreamTranscriptionAsyn
228228
request.SetAudioStream(eventEncoderStream); // this becomes the body of the request
229229
auto streamReadySemaphore = Aws::MakeShared<Aws::Utils::Threading::Semaphore>(ALLOCATION_TAG, 0, 1);
230230
m_clientConfiguration.executor->Submit([this, &request, handler, handlerContext, eventEncoderStream, streamReadySemaphore] () mutable {
231-
auto eventStreamHandler = [&streamReadySemaphore]() -> void{
231+
auto eventStreamHandler = [&](std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> encoder) -> void{
232+
eventEncoderStream->SetEncoder(encoder);
232233
streamReadySemaphore->ReleaseAll();
233234
};
234235
JsonOutcome outcome = MakeEventStreamRequestDeserialize(&request, request.GetServiceRequestName(), Aws::Http::HttpMethod::HTTP_POST, [&](Aws::Endpoint::AWSEndpoint& resolvedEndpoint) -> void {
235236
resolvedEndpoint.AddPathSegments("/call-analytics-stream-transcription");
236237
},
237-
eventEncoderStream,
238238
std::move(eventStreamHandler));
239239
if(outcome.IsSuccess())
240240
{
@@ -294,13 +294,13 @@ void TranscribeStreamingServiceClient::StartMedicalScribeStreamAsync(Model::Star
294294
request.SetInputStream(eventEncoderStream); // this becomes the body of the request
295295
auto streamReadySemaphore = Aws::MakeShared<Aws::Utils::Threading::Semaphore>(ALLOCATION_TAG, 0, 1);
296296
m_clientConfiguration.executor->Submit([this, &request, handler, handlerContext, eventEncoderStream, streamReadySemaphore] () mutable {
297-
auto eventStreamHandler = [&streamReadySemaphore]() -> void{
297+
auto eventStreamHandler = [&](std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> encoder) -> void{
298+
eventEncoderStream->SetEncoder(encoder);
298299
streamReadySemaphore->ReleaseAll();
299300
};
300301
JsonOutcome outcome = MakeEventStreamRequestDeserialize(&request, request.GetServiceRequestName(), Aws::Http::HttpMethod::HTTP_POST, [&](Aws::Endpoint::AWSEndpoint& resolvedEndpoint) -> void {
301302
resolvedEndpoint.AddPathSegments("/medical-scribe-stream");
302303
},
303-
eventEncoderStream,
304304
std::move(eventStreamHandler));
305305
if(outcome.IsSuccess())
306306
{
@@ -372,13 +372,13 @@ void TranscribeStreamingServiceClient::StartMedicalStreamTranscriptionAsync(Mode
372372
request.SetAudioStream(eventEncoderStream); // this becomes the body of the request
373373
auto streamReadySemaphore = Aws::MakeShared<Aws::Utils::Threading::Semaphore>(ALLOCATION_TAG, 0, 1);
374374
m_clientConfiguration.executor->Submit([this, &request, handler, handlerContext, eventEncoderStream, streamReadySemaphore] () mutable {
375-
auto eventStreamHandler = [&streamReadySemaphore]() -> void{
375+
auto eventStreamHandler = [&](std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> encoder) -> void{
376+
eventEncoderStream->SetEncoder(encoder);
376377
streamReadySemaphore->ReleaseAll();
377378
};
378379
JsonOutcome outcome = MakeEventStreamRequestDeserialize(&request, request.GetServiceRequestName(), Aws::Http::HttpMethod::HTTP_POST, [&](Aws::Endpoint::AWSEndpoint& resolvedEndpoint) -> void {
379380
resolvedEndpoint.AddPathSegments("/medical-stream-transcription");
380381
},
381-
eventEncoderStream,
382382
std::move(eventStreamHandler));
383383
if(outcome.IsSuccess())
384384
{
@@ -432,13 +432,13 @@ void TranscribeStreamingServiceClient::StartStreamTranscriptionAsync(Model::Star
432432
request.SetAudioStream(eventEncoderStream); // this becomes the body of the request
433433
auto streamReadySemaphore = Aws::MakeShared<Aws::Utils::Threading::Semaphore>(ALLOCATION_TAG, 0, 1);
434434
m_clientConfiguration.executor->Submit([this, &request, handler, handlerContext, eventEncoderStream, streamReadySemaphore] () mutable {
435-
auto eventStreamHandler = [&streamReadySemaphore]() -> void{
435+
auto eventStreamHandler = [&](std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> encoder) -> void{
436+
eventEncoderStream->SetEncoder(encoder);
436437
streamReadySemaphore->ReleaseAll();
437438
};
438439
JsonOutcome outcome = MakeEventStreamRequestDeserialize(&request, request.GetServiceRequestName(), Aws::Http::HttpMethod::HTTP_POST, [&](Aws::Endpoint::AWSEndpoint& resolvedEndpoint) -> void {
439440
resolvedEndpoint.AddPathSegments("/stream-transcription");
440441
},
441-
eventEncoderStream,
442442
std::move(eventStreamHandler));
443443
if(outcome.IsSuccess())
444444
{

src/aws-cpp-sdk-core/include/aws/core/utils/event/EventEncoderStream.h

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,27 @@ namespace Aws
8080
public:
8181
explicit SmithyEventEncoderStream(size_t bufferSize = DEFAULT_BUF_SIZE) : EventEncoderStream(bufferSize) {}
8282
virtual ~SmithyEventEncoderStream() {}
83-
void SetSigner(std::shared_ptr<smithy::AwsSignerBase<IdentityT> > signer) {
83+
84+
/*void SetSigner(std::shared_ptr<smithy::AwsSignerBase<IdentityT> > signer) {
8485
m_evtEncoder.SetSigner(signer);
8586
}
8687
87-
void SetIdentity(const IdentityT& identity) {
88-
m_evtEncoder.SetIdentity(identity);
88+
void SetRequestContext(std::shared_ptr<AwsSmithyClientAsyncRequestContext> pRequestCtx) {
89+
m_evtEncoder.SetRequestContext(std::move(pRequestCtx));
90+
}*/
91+
92+
void SetEncoder(std::shared_ptr<EventStreamEncoder> encoder)
93+
{
94+
m_evtEncoder = encoder;
8995
}
90-
void SetSignatureSeed(const Aws::String& seed) override { m_evtEncoder.SetSignatureSeed(seed); }
96+
97+
void SetSignatureSeed(const Aws::String& seed) override { m_evtEncoder->SetSignatureSeed(seed); }
9198

9299
protected:
93100
Aws::Vector<unsigned char> EncodeAndSign(const Aws::Utils::Event::Message& msg) override {
94-
return m_evtEncoder.EncodeAndSign(msg);
101+
return m_evtEncoder->EncodeAndSign(msg);
95102
}
96-
SmithyEventStreamEncoder<IdentityT> m_evtEncoder;
103+
std::shared_ptr<EventStreamEncoder> m_evtEncoder;
97104
};
98105
}
99106
}

src/aws-cpp-sdk-core/include/aws/core/utils/event/EventStreamEncoder.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,16 @@ namespace Aws
6767
class AWS_CORE_API SmithyEventStreamEncoder : public EventStreamEncoder {
6868
public:
6969
using SIGNER_TYPE = smithy::AwsSignerBase<IdentityT>;
70-
SmithyEventStreamEncoder(std::shared_ptr<SIGNER_TYPE> signer) : EventStreamEncoder(), m_smithySigner(signer){};
71-
SmithyEventStreamEncoder() : EventStreamEncoder(){};
72-
73-
void SetSigner(std::shared_ptr<SIGNER_TYPE> signer) {
74-
m_smithySigner = signer;
75-
}
76-
77-
void SetIdentity(const IdentityT& identity)
78-
{
79-
m_identity = identity;
80-
}
70+
SmithyEventStreamEncoder(std::shared_ptr<SIGNER_TYPE> signer, IdentityT& identity) : EventStreamEncoder(), m_smithySigner(signer), m_identity{identity}{};
71+
//SmithyEventStreamEncoder() : EventStreamEncoder(){};
8172

8273
protected:
8374
bool SignEventMessage(Event::Message& signedMessage) override {
75+
76+
//resolved identity
77+
//auto identity = *static_cast<IdentityT*>(m_requestContext.m_awsIdentity.get());
78+
79+
//@to do: if identity expired, resolve it again
8480
return (m_smithySigner->SignEventMessage(signedMessage, m_signatureSeed, m_identity));
8581
}
8682

src/aws-cpp-sdk-core/include/smithy/client/AwsSmithyClient.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,7 @@ namespace client
235235
const char* requestName,
236236
Aws::Http::HttpMethod method,
237237
EndpointUpdateCallback&& endpointCallback,
238-
std::shared_ptr<Aws::Utils::Event::EventEncoderStream> eventEncoderStream_sp,
239-
std::function<void ()>&& eventEncoderStreamHandler
238+
std::function<void (std::shared_ptr<Aws::Utils::Event::EventStreamEncoder>) >&& eventEncoderStreamHandler
240239
) const {
241240
std::shared_ptr<Aws::Utils::Threading::Executor> pExecutor =
242241
Aws::MakeShared<Aws::Utils::Threading::SameThreadExecutor>("AwsSmithyClient");
@@ -246,7 +245,7 @@ namespace client
246245
ResponseHandlerFunc responseHandler = [&outcome](HttpResponseOutcome&& asyncOutcome) { outcome = std::move(asyncOutcome); };
247246
pExecutor->Submit([&]() {
248247
this->MakeRequestAsync(request, requestName, method, std::move(endpointCallback), std::move(responseHandler), pExecutor,
249-
std::move(eventEncoderStream_sp), std::move(eventEncoderStreamHandler));
248+
std::move(eventEncoderStreamHandler));
250249
});
251250
pExecutor->WaitUntilStopped();
252251
return m_serializer->Deserialize(std::move(outcome), GetServiceClientName(), requestName);

src/aws-cpp-sdk-core/include/smithy/client/AwsSmithyClientAsyncRequestContext.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ namespace smithy
7272
std::shared_ptr<Aws::Utils::Threading::Executor> m_pExecutor;
7373
std::shared_ptr<interceptor::InterceptorContext> m_interceptorContext;
7474
std::shared_ptr<smithy::AwsIdentity> m_awsIdentity;
75-
std::shared_ptr<Aws::Utils::Event::EventEncoderStream> m_eventEncoderStream;
76-
std::function<void ()> m_eventEncoderStreamHandler;
75+
//std::shared_ptr<Aws::Utils::Event::EventEncoderStream> m_eventEncoderStream;
76+
std::function<void (std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> )> m_eventEncoderStreamHandler;
7777
};
7878
} // namespace client
7979
} // namespace smithy

src/aws-cpp-sdk-core/include/smithy/client/AwsSmithyClientBase.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ namespace client
139139
EndpointUpdateCallback&& endpointCallback,
140140
ResponseHandlerFunc&& responseHandler,
141141
std::shared_ptr<Aws::Utils::Threading::Executor> pExecutor,
142-
std::shared_ptr<Aws::Utils::Event::EventEncoderStream> eventEncoderStream_sp,
143-
std::function<void () >&& eventEncoderStreamHandler
142+
std::function<void (std::shared_ptr<Aws::Utils::Event::EventStreamEncoder>) >&& eventEncoderStreamHandler
144143
) const;
145144

146145
HttpResponseOutcome MakeRequestSync(Aws::AmazonWebServiceRequest const * const request,

src/aws-cpp-sdk-core/include/smithy/client/common/AwsSmithyRequestSigning.h

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -222,17 +222,9 @@ namespace smithy
222222
return;
223223
}
224224

225-
if(m_httpRequest->IsEventStreamRequest() && m_requestContext.m_eventEncoderStream)
225+
if(m_httpRequest->IsEventStreamRequest() && m_requestContext.m_eventEncoderStreamHandler)
226226
{
227-
auto eventEncoderStreamPtr = static_cast<SmithyEventStreamEncoder<IdentityT>*>(m_requestContext.m_eventEncoderStream.get());
228-
//set signer and identity
229-
eventEncoderStreamPtr->SetSigner(signer);
230-
eventEncoderStreamPtr->SetIdentity(*m_requestContext.m_awsIdentity);
231-
//signal for stream ready
232-
if(m_requestContext.m_eventEncoderStreamHandler)
233-
{
234-
m_requestContext.m_eventEncoderStreamHandler();
235-
}
227+
m_requestContext.m_eventEncoderStreamHandler(Aws::MakeShared<Aws::Utils::Event::SmithyEventStreamEncoder<IdentityT>>("", signer, *static_cast<IdentityT*>(m_requestContext.m_awsIdentity.get())));
236228
}
237229

238230
result.emplace(signer->sign(m_httpRequest,

src/aws-cpp-sdk-core/include/smithy/identity/signer/AwsSignerBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ namespace smithy {
4747
// signer may copy the original httpRequest or create a new one
4848
virtual SigningFutureOutcome sign(std::shared_ptr<HttpRequest> httpRequest, const IdentityT& identity, SigningProperties properties) = 0;
4949
virtual SigningFutureOutcome presign(std::shared_ptr<HttpRequest> httpRequest, const IdentityT& identity, SigningProperties properties, const Aws::String& region, const Aws::String& serviceName, long long expirationTimeInSeconds) = 0;
50-
virtual bool SignEventMessage(Aws::Utils::Event::Message& , Aws::String& ) const {return false;}
50+
virtual bool SignEventMessage(Aws::Utils::Event::Message& , Aws::String& , const IDENTITY_T& ) const {return false;}
5151

5252
virtual ~AwsSignerBase() {};
5353
};

src/aws-cpp-sdk-core/include/smithy/identity/signer/built-in/SigV4Signer.h

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ namespace smithy {
8080

8181
assert(httpRequest);
8282

83-
bool success = httpRequest->IsEventStreamRequest()? legacyEventStreamSigner->SignRequest(*httpRequest, region, svcName, signPayload, legacyCreds) :
83+
bool success = /*httpRequest->IsEventStreamRequest()? legacyEventStreamSigner->SignRequest(*httpRequest, region, svcName, signPayload, legacyCreds) : */
8484
legacySigner.SignRequestWithCreds(*httpRequest, legacyCreds, region, svcName, signPayload);
8585
if (success)
8686
{
@@ -126,8 +126,21 @@ namespace smithy {
126126
return legacySigner;
127127
}
128128

129-
bool SignEventMessage(Aws::Utils::Event::Message& em, Aws::String& sig) const override {
130-
return legacyEventStreamSigner->SignEventMessage(em, sig);
129+
bool SignEventMessage(Aws::Utils::Event::Message& em, Aws::String& sig, const AwsCredentialIdentityBase& identity) const override {
130+
131+
//get legacy credentials
132+
const auto legacyCreds = [&identity]() -> Aws::Auth::AWSCredentials {
133+
if(identity.sessionToken().has_value() && identity.expiration().has_value())
134+
{
135+
return {identity.accessKeyId(), identity.secretAccessKey(), *identity.sessionToken(), *identity.expiration()};
136+
}
137+
if(identity.sessionToken().has_value())
138+
{
139+
return {identity.accessKeyId(), identity.secretAccessKey(), *identity.sessionToken()};
140+
}
141+
return {identity.accessKeyId(), identity.secretAccessKey()};
142+
}();
143+
return legacyEventStreamSigner->SignEventMessage(em, sig, legacyCreds);
131144
}
132145

133146
Aws::String m_serviceName;

src/aws-cpp-sdk-core/source/smithy/client/AwsSmithyClientBase.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ void AwsSmithyClientBase::MakeRequestAsync(Aws::AmazonWebServiceRequest const* c
183183
EndpointUpdateCallback&& endpointCallback,
184184
ResponseHandlerFunc&& responseHandler,
185185
std::shared_ptr<Aws::Utils::Threading::Executor> pExecutor,
186-
std::shared_ptr<Aws::Utils::Event::EventEncoderStream> eventEncoderStream_sp,
187-
std::function<void () >&& eventEncoderStreamHandler
186+
std::function<void (std::shared_ptr<Aws::Utils::Event::EventStreamEncoder>) >&& eventEncoderStreamHandler
188187
) const
189188
{
190189
if(!responseHandler)
@@ -215,7 +214,6 @@ void AwsSmithyClientBase::MakeRequestAsync(Aws::AmazonWebServiceRequest const* c
215214
pRequestCtx->m_method = method;
216215
pRequestCtx->m_retryCount = 0;
217216
pRequestCtx->m_invocationId = Aws::Utils::UUID::PseudoRandomUUID();
218-
pRequestCtx->m_eventEncoderStream = eventEncoderStream_sp;
219217
pRequestCtx->m_eventEncoderStreamHandler = std::move(eventEncoderStreamHandler);
220218

221219
auto authSchemeOptionOutcome = this->SelectAuthSchemeOption(*pRequestCtx);
@@ -649,7 +647,7 @@ AwsSmithyClientBase::MakeRequestSync(Aws::AmazonWebServiceRequest const * const
649647

650648
pExecutor->Submit([&]()
651649
{
652-
this->MakeRequestAsync(request, requestName, method, std::move(endpointCallback), std::move(responseHandler), pExecutor, nullptr, nullptr);
650+
this->MakeRequestAsync(request, requestName, method, std::move(endpointCallback), std::move(responseHandler), pExecutor, nullptr);
653651
});
654652
pExecutor->WaitUntilStopped();
655653

tools/code-generation/generator/src/main/resources/com/amazonaws/util/awsclientgenerator/velocity/cpp/smithy/SmithyJsonServiceEventStreamOperationsSource.vm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ void ${className}::${operation.name}Async(Model::${operation.request.shape.name}
3838
request.Set${streamModelNameWithFirstLetterCapitalized}(eventEncoderStream); // this becomes the body of the request
3939
auto streamReadySemaphore = Aws::MakeShared<Aws::Utils::Threading::Semaphore>(ALLOCATION_TAG, 0, 1);
4040
m_clientConfiguration.executor->Submit([this, &request, handler, handlerContext, #if($hasEndPointOverrides) endpointOverrides, #end eventEncoderStream, streamReadySemaphore] () mutable {
41-
auto eventStreamHandler = [&streamReadySemaphore]() -> void{
41+
auto eventStreamHandler = [&](std::shared_ptr<Aws::Utils::Event::EventStreamEncoder> encoder) -> void{
42+
eventEncoderStream->SetEncoder(encoder);
4243
streamReadySemaphore->ReleaseAll();
4344
};
4445
JsonOutcome outcome = MakeEventStreamRequestDeserialize(&request, request.GetServiceRequestName(), Aws::Http::HttpMethod::HTTP_${operation.http.method}, [&](Aws::Endpoint::AWSEndpoint& resolvedEndpoint) -> void {
4546
#parse("/com/amazonaws/util/awsclientgenerator/velocity/cpp/smithy/SmithyEndpointClosure.vm")
4647
},
47-
eventEncoderStream,
4848
std::move(eventStreamHandler));
4949
if(outcome.IsSuccess())
5050
{

0 commit comments

Comments
 (0)