/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// // THIS CODE IS AUTOGENERATED, DO NOT MODIFY ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #pragma once #include #include #include #include #include #include #include #include #include #include #include #if defined (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) // The AWS Native SDK AWSAllocator triggers a warning due to accessing members of std::allocator directly. // AWSAllocator.h(70): warning C4996: 'std::allocator::pointer': warning STL4010: Various members of std::allocator are deprecated in C++17. // Use std::allocator_traits instead of accessing these members directly. // You can define _SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have received this warning. AZ_PUSH_DISABLE_WARNING(4251 4996, "-Wunknown-warning-option") #include #include AZ_POP_DISABLE_WARNING #endif // (PLATFORM_SUPPORTS_AWS_NATIVE_SDK) #include #include "StdAfx.h" namespace CloudGemWebCommunicator { namespace ServiceAPI { extern const char* LmbrAWS_CodeGen_PortalSetUserStatus_UUID; extern const char* LmbrAWS_CodeGen_Component_UUID; extern const char* LmbrAWS_CodeGen_ChannelRequestResult_UUID; extern const char* LmbrAWS_CodeGen_ResponseHandler_UUID; extern const char* LmbrAWS_CodeGen_RegistrationResult_UUID; extern const char* LmbrAWS_CodeGen_NotificationBus1_UUID; extern const char* LmbrAWS_CodeGen_RequestBus1_UUID; extern const char* LmbrAWS_CodeGen_PortalUserListResults_UUID; extern const char* LmbrAWS_CodeGen_ServiceStatus_UUID; extern const char* LmbrAWS_CodeGen_BroadcastRequest_UUID; extern const char* LmbrAWS_CodeGen_PortalBroadcastResult_UUID; extern const char* LmbrAWS_CodeGen_ChannelInfo_UUID; // redefs bool WriteJson(CloudGemFramework::JsonWriter& writer, const int& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const AZStd::string& item); bool WriteJson(CloudGemFramework::JsonWriter& writer, const double& item); struct ChannelInfo { AZ_TYPE_INFO(ChannelInfo, LmbrAWS_CodeGen_ChannelInfo_UUID) AZ_CLASS_ALLOCATOR(ChannelInfo, AZ::SystemAllocator, 0) AZStd::string CommunicationChannel; AZStd::string ChannelName; AZStd::string CommunicationType; AZStd::string Subscription; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ChannelInfo& item); using ChannelRequestResultArray = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ChannelRequestResultArray& list); struct ChannelRequestResult { AZ_TYPE_INFO(ChannelRequestResult, LmbrAWS_CodeGen_ChannelRequestResult_UUID) AZ_CLASS_ALLOCATOR(ChannelRequestResult, AZ::SystemAllocator, 0) ChannelRequestResultArray Channels; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ChannelRequestResult& item); struct ServiceStatus { AZ_TYPE_INFO(ServiceStatus, LmbrAWS_CodeGen_ServiceStatus_UUID) AZ_CLASS_ALLOCATOR(ServiceStatus, AZ::SystemAllocator, 0) AZStd::string status; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const ServiceStatus& item); struct PortalSetUserStatus { AZ_TYPE_INFO(PortalSetUserStatus, LmbrAWS_CodeGen_PortalSetUserStatus_UUID) AZ_CLASS_ALLOCATOR(PortalSetUserStatus, AZ::SystemAllocator, 0) AZStd::string RegistrationStatus; AZStd::string ClientID; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalSetUserStatus& item); using PortalUserListResultArray = AZStd::vector; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalUserListResultArray& list); struct PortalUserListResults { AZ_TYPE_INFO(PortalUserListResults, LmbrAWS_CodeGen_PortalUserListResults_UUID) AZ_CLASS_ALLOCATOR(PortalUserListResults, AZ::SystemAllocator, 0) PortalUserListResultArray Users; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalUserListResults& item); struct RegistrationResult { AZ_TYPE_INFO(RegistrationResult, LmbrAWS_CodeGen_RegistrationResult_UUID) AZ_CLASS_ALLOCATOR(RegistrationResult, AZ::SystemAllocator, 0) AZStd::string Endpoint; double EndpointPort; AZStd::string PrivateKey; AZStd::string ConnectionType; AZStd::string Result; AZStd::string DeviceCert; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const RegistrationResult& item); struct BroadcastRequest { AZ_TYPE_INFO(BroadcastRequest, LmbrAWS_CodeGen_BroadcastRequest_UUID) AZ_CLASS_ALLOCATOR(BroadcastRequest, AZ::SystemAllocator, 0) AZStd::string Message; AZStd::string ChannelName; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const BroadcastRequest& item); struct PortalBroadcastResult { AZ_TYPE_INFO(PortalBroadcastResult, LmbrAWS_CodeGen_PortalBroadcastResult_UUID) AZ_CLASS_ALLOCATOR(PortalBroadcastResult, AZ::SystemAllocator, 0) AZStd::string Result; bool OnJsonKey(const char* key, CloudGemFramework::JsonReader& reader); static void Reflect(AZ::ReflectContext* reflection); }; bool WriteJson(CloudGemFramework::JsonWriter& writer, const PortalBroadcastResult& item); // Service RequestJobs CLOUD_GEM_SERVICE(CloudGemWebCommunicator); class get_client_channelsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_GET, "/client/channels"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ChannelRequestResult result; Parameters parameters; }; using get_client_channelsRequestJob = CloudGemFramework::ServiceRequestJob; class get_service_statusRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_GET, "/service/status"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ServiceStatus result; Parameters parameters; }; using get_service_statusRequestJob = CloudGemFramework::ServiceRequestJob; class PostPortalUsersRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_POST, "/portal/users"); struct Parameters { PortalSetUserStatus request_content; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalSetUserStatus result; Parameters parameters; }; using PostPortalUsersRequestJob = CloudGemFramework::ServiceRequestJob; class GetPortalUsersRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_GET, "/portal/users"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalUserListResults result; Parameters parameters; }; using GetPortalUsersRequestJob = CloudGemFramework::ServiceRequestJob; class get_client_registrationRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_GET, "/client/registration/{registration_type}"); struct Parameters { AZStd::string registration_type; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; RegistrationResult result; Parameters parameters; }; using get_client_registrationRequestJob = CloudGemFramework::ServiceRequestJob; class channel_broadcastRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_POST, "/portal/channel"); struct Parameters { BroadcastRequest message_info; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalBroadcastResult result; Parameters parameters; }; using channel_broadcastRequestJob = CloudGemFramework::ServiceRequestJob; class list_all_channelsRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_GET, "/portal/channel"); struct Parameters { bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; ChannelRequestResult result; Parameters parameters; }; using list_all_channelsRequestJob = CloudGemFramework::ServiceRequestJob; class client_channel_broadcastRequest : public CloudGemFramework::ServiceRequest { public: SERVICE_REQUEST(CloudGemWebCommunicator, HttpMethod::HTTP_POST, "/client/channel"); struct Parameters { BroadcastRequest message_info; bool BuildRequest(CloudGemFramework::RequestBuilder& request); bool WriteJson(CloudGemFramework::JsonWriter& writer) const; }; PortalBroadcastResult result; Parameters parameters; }; using client_channel_broadcastRequestJob = CloudGemFramework::ServiceRequestJob; // Notification bus for this component class CloudGemWebCommunicatorNotifications : public AZ::ComponentBus { public: /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onget_client_channelsRequestSuccess(const ChannelRequestResult response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onget_client_channelsRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onget_service_statusRequestSuccess(const ServiceStatus response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onget_service_statusRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnPostPortalUsersRequestSuccess(const PortalSetUserStatus response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnPostPortalUsersRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void OnGetPortalUsersRequestSuccess(const PortalUserListResults response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void OnGetPortalUsersRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onget_client_registrationRequestSuccess(const RegistrationResult response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onget_client_registrationRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onchannel_broadcastRequestSuccess(const PortalBroadcastResult response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onchannel_broadcastRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onlist_all_channelsRequestSuccess(const ChannelRequestResult response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onlist_all_channelsRequestError(const CloudGemFramework::Error error); /** * Sent when the request is a success * * Params: * jsonOutput: The output receieved from the lambda call * request: The AWS Lambda request object */ virtual void Onclient_channel_broadcastRequestSuccess(const PortalBroadcastResult response); /** * Sent when the request fails * * Params: * error: The output receieved from the lambda call, * could be function error or an issue with the request * request: The AWS Lambda request object */ virtual void Onclient_channel_broadcastRequestError(const CloudGemFramework::Error error); }; using CloudGemWebCommunicatorNotificationBus = AZ::EBus; class BehaviorCloudGemWebCommunicatorNotificationBusHandler : public CloudGemWebCommunicatorNotificationBus::Handler, public AZ::BehaviorEBusHandler { public: AZ_EBUS_BEHAVIOR_BINDER(BehaviorCloudGemWebCommunicatorNotificationBusHandler, LmbrAWS_CodeGen_NotificationBus1_UUID, AZ::SystemAllocator , Onget_client_channelsRequestSuccess , Onget_client_channelsRequestError , Onget_service_statusRequestSuccess , Onget_service_statusRequestError , OnPostPortalUsersRequestSuccess , OnPostPortalUsersRequestError , OnGetPortalUsersRequestSuccess , OnGetPortalUsersRequestError , Onget_client_registrationRequestSuccess , Onget_client_registrationRequestError , Onchannel_broadcastRequestSuccess , Onchannel_broadcastRequestError , Onlist_all_channelsRequestSuccess , Onlist_all_channelsRequestError , Onclient_channel_broadcastRequestSuccess , Onclient_channel_broadcastRequestError ); void Onget_client_channelsRequestSuccess(const ChannelRequestResult response) override; void Onget_client_channelsRequestError(const CloudGemFramework::Error error) override; void Onget_service_statusRequestSuccess(const ServiceStatus response) override; void Onget_service_statusRequestError(const CloudGemFramework::Error error) override; void OnPostPortalUsersRequestSuccess(const PortalSetUserStatus response) override; void OnPostPortalUsersRequestError(const CloudGemFramework::Error error) override; void OnGetPortalUsersRequestSuccess(const PortalUserListResults response) override; void OnGetPortalUsersRequestError(const CloudGemFramework::Error error) override; void Onget_client_registrationRequestSuccess(const RegistrationResult response) override; void Onget_client_registrationRequestError(const CloudGemFramework::Error error) override; void Onchannel_broadcastRequestSuccess(const PortalBroadcastResult response) override; void Onchannel_broadcastRequestError(const CloudGemFramework::Error error) override; void Onlist_all_channelsRequestSuccess(const ChannelRequestResult response) override; void Onlist_all_channelsRequestError(const CloudGemFramework::Error error) override; void Onclient_channel_broadcastRequestSuccess(const PortalBroadcastResult response) override; void Onclient_channel_broadcastRequestError(const CloudGemFramework::Error error) override; }; class CloudGemWebCommunicatorResponseHandler; // Request bus for this component class CloudGemWebCommunicatorRequests : public AZ::ComponentBus { public: virtual ~CloudGemWebCommunicatorRequests() {} virtual void get_client_channels(CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void get_service_status(CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void PostPortalUsers(const PortalSetUserStatus& request_content, CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void GetPortalUsers(CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void get_client_registration(const AZStd::string& registration_type, CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void channel_broadcast(const BroadcastRequest& message_info, CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void list_all_channels(CloudGemWebCommunicatorResponseHandler* responseHandler); virtual void client_channel_broadcast(const BroadcastRequest& message_info, CloudGemWebCommunicatorResponseHandler* responseHandler); }; using CloudGemWebCommunicatorRequestBus = AZ::EBus; // This class is used as a parameter for all requests and throws the response on the CloudGemWebCommunicatorNotificationBus // Inherit from this to define custom behavior. class CloudGemWebCommunicatorResponseHandler { public: AZ_TYPE_INFO(CloudGemWebCommunicatorResponseHandler, LmbrAWS_CodeGen_ResponseHandler_UUID) AZ_CLASS_ALLOCATOR(CloudGemWebCommunicatorResponseHandler, AZ::SystemAllocator, 0) virtual ~CloudGemWebCommunicatorResponseHandler() {} virtual void Handleget_client_channelsSuccess(get_client_channelsRequestJob* job, AZ::EntityId entityId); virtual void Handleget_client_channelsError(get_client_channelsRequestJob* job, AZ::EntityId entityId); virtual void Handleget_service_statusSuccess(get_service_statusRequestJob* job, AZ::EntityId entityId); virtual void Handleget_service_statusError(get_service_statusRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPortalUsersSuccess(PostPortalUsersRequestJob* job, AZ::EntityId entityId); virtual void HandlePostPortalUsersError(PostPortalUsersRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalUsersSuccess(GetPortalUsersRequestJob* job, AZ::EntityId entityId); virtual void HandleGetPortalUsersError(GetPortalUsersRequestJob* job, AZ::EntityId entityId); virtual void Handleget_client_registrationSuccess(get_client_registrationRequestJob* job, AZ::EntityId entityId); virtual void Handleget_client_registrationError(get_client_registrationRequestJob* job, AZ::EntityId entityId); virtual void Handlechannel_broadcastSuccess(channel_broadcastRequestJob* job, AZ::EntityId entityId); virtual void Handlechannel_broadcastError(channel_broadcastRequestJob* job, AZ::EntityId entityId); virtual void Handlelist_all_channelsSuccess(list_all_channelsRequestJob* job, AZ::EntityId entityId); virtual void Handlelist_all_channelsError(list_all_channelsRequestJob* job, AZ::EntityId entityId); virtual void Handleclient_channel_broadcastSuccess(client_channel_broadcastRequestJob* job, AZ::EntityId entityId); virtual void Handleclient_channel_broadcastError(client_channel_broadcastRequestJob* job, AZ::EntityId entityId); }; class CloudGemWebCommunicatorClientComponent : public AZ::Component , public CloudGemWebCommunicatorRequestBus::Handler { public: AZ_COMPONENT(CloudGemWebCommunicatorClientComponent, LmbrAWS_CodeGen_Component_UUID); virtual ~CloudGemWebCommunicatorClientComponent() = default; AZStd::shared_ptr m_defaultResponseHandler; void Init() override; void Activate() override; void Deactivate() override; static void Reflect(AZ::ReflectContext* reflection) { ChannelInfo::Reflect(reflection); ChannelRequestResult::Reflect(reflection); ServiceStatus::Reflect(reflection); PortalSetUserStatus::Reflect(reflection); PortalUserListResults::Reflect(reflection); RegistrationResult::Reflect(reflection); BroadcastRequest::Reflect(reflection); PortalBroadcastResult::Reflect(reflection); AZ::SerializeContext* serializeContext = azrtti_cast(reflection); if (serializeContext) { // we must include any fields we want to expose to the editor or lua in the serialize context serializeContext->Class() ->Version(1); AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { editContext->Class("CloudGemWebCommunicatorClientComponent", "CloudGemWebCommunicator Component") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Category, "Cloud Canvas Gems") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game")); } } AZ::BehaviorContext* behaviorContext = azrtti_cast(reflection); if (behaviorContext) { behaviorContext->EBus("CloudGemWebCommunicatorRequestBus") // one of these for each function ->Event("get_client_channels", &CloudGemWebCommunicatorRequestBus::Events::get_client_channels) ->Event("get_service_status", &CloudGemWebCommunicatorRequestBus::Events::get_service_status) ->Event("PostPortalUsers", &CloudGemWebCommunicatorRequestBus::Events::PostPortalUsers) ->Event("GetPortalUsers", &CloudGemWebCommunicatorRequestBus::Events::GetPortalUsers) ->Event("get_client_registration", &CloudGemWebCommunicatorRequestBus::Events::get_client_registration) ->Event("channel_broadcast", &CloudGemWebCommunicatorRequestBus::Events::channel_broadcast) ->Event("list_all_channels", &CloudGemWebCommunicatorRequestBus::Events::list_all_channels) ->Event("client_channel_broadcast", &CloudGemWebCommunicatorRequestBus::Events::client_channel_broadcast) ; behaviorContext->EBus("CloudGemWebCommunicatorNotificationBus") ->Handler() ; } } // Functions from the swagger definitions void get_client_channels(CloudGemWebCommunicatorResponseHandler* responseHandler) override; void get_service_status(CloudGemWebCommunicatorResponseHandler* responseHandler) override; void PostPortalUsers(const PortalSetUserStatus& request_content, CloudGemWebCommunicatorResponseHandler* responseHandler) override; void GetPortalUsers(CloudGemWebCommunicatorResponseHandler* responseHandler) override; void get_client_registration(const AZStd::string& registration_type, CloudGemWebCommunicatorResponseHandler* responseHandler) override; void channel_broadcast(const BroadcastRequest& message_info, CloudGemWebCommunicatorResponseHandler* responseHandler) override; void list_all_channels(CloudGemWebCommunicatorResponseHandler* responseHandler) override; void client_channel_broadcast(const BroadcastRequest& message_info, CloudGemWebCommunicatorResponseHandler* responseHandler) override; }; } // ServiceAPI } // CloudGemWebCommunicator