Files
2026-02-28 12:32:28 -05:00

283 lines
17 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/gamelift/GameLift_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/gamelift/model/EventCode.h>
#include <aws/core/utils/DateTime.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Json
{
class JsonValue;
class JsonView;
} // namespace Json
} // namespace Utils
namespace GameLift
{
namespace Model
{
/**
* <p>Log entry describing an event that involves Amazon GameLift resources (such
* as a fleet). In addition to tracking activity, event codes and messages can
* provide additional information for troubleshooting and debugging
* problems.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/gamelift-2015-10-01/Event">AWS API
* Reference</a></p>
*/
class Event
{
public:
AWS_GAMELIFT_API Event();
AWS_GAMELIFT_API Event(Aws::Utils::Json::JsonView jsonValue);
AWS_GAMELIFT_API Event& operator=(Aws::Utils::Json::JsonView jsonValue);
AWS_GAMELIFT_API Aws::Utils::Json::JsonValue Jsonize() const;
///@{
/**
* <p>A unique identifier for a fleet event.</p>
*/
inline const Aws::String& GetEventId() const{ return m_eventId; }
inline bool EventIdHasBeenSet() const { return m_eventIdHasBeenSet; }
inline void SetEventId(const Aws::String& value) { m_eventIdHasBeenSet = true; m_eventId = value; }
inline void SetEventId(Aws::String&& value) { m_eventIdHasBeenSet = true; m_eventId = std::move(value); }
inline void SetEventId(const char* value) { m_eventIdHasBeenSet = true; m_eventId.assign(value); }
inline Event& WithEventId(const Aws::String& value) { SetEventId(value); return *this;}
inline Event& WithEventId(Aws::String&& value) { SetEventId(std::move(value)); return *this;}
inline Event& WithEventId(const char* value) { SetEventId(value); return *this;}
///@}
///@{
/**
* <p>A unique identifier for an event resource, such as a fleet ID.</p>
*/
inline const Aws::String& GetResourceId() const{ return m_resourceId; }
inline bool ResourceIdHasBeenSet() const { return m_resourceIdHasBeenSet; }
inline void SetResourceId(const Aws::String& value) { m_resourceIdHasBeenSet = true; m_resourceId = value; }
inline void SetResourceId(Aws::String&& value) { m_resourceIdHasBeenSet = true; m_resourceId = std::move(value); }
inline void SetResourceId(const char* value) { m_resourceIdHasBeenSet = true; m_resourceId.assign(value); }
inline Event& WithResourceId(const Aws::String& value) { SetResourceId(value); return *this;}
inline Event& WithResourceId(Aws::String&& value) { SetResourceId(std::move(value)); return *this;}
inline Event& WithResourceId(const char* value) { SetResourceId(value); return *this;}
///@}
///@{
/**
* <p>The type of event being logged. </p> <p> <b>Fleet state transition
* events:</b> </p> <ul> <li> <p>FLEET_CREATED -- A fleet resource was successfully
* created with a status of <code>NEW</code>. Event messaging includes the fleet
* ID.</p> </li> <li> <p>FLEET_STATE_DOWNLOADING -- Fleet status changed from
* <code>NEW</code> to <code>DOWNLOADING</code>. Amazon GameLift is downloading the
* compressed build and running install scripts.</p> </li> <li>
* <p>FLEET_STATE_VALIDATING -- Fleet status changed from <code>DOWNLOADING</code>
* to <code>VALIDATING</code>. Amazon GameLift has successfully installed build and
* is now validating the build files.</p> </li> <li> <p>FLEET_STATE_BUILDING --
* Fleet status changed from <code>VALIDATING</code> to <code>BUILDING</code>.
* Amazon GameLift has successfully verified the build files and is now launching a
* fleet instance.</p> </li> <li> <p>FLEET_STATE_ACTIVATING -- Fleet status changed
* from <code>BUILDING</code> to <code>ACTIVATING</code>. Amazon GameLift is
* launching a game server process on the fleet instance and is testing its
* connectivity with the Amazon GameLift service.</p> </li> <li>
* <p>FLEET_STATE_ACTIVE -- The fleet's status changed from <code>ACTIVATING</code>
* to <code>ACTIVE</code>. The fleet is now ready to host game sessions.</p> </li>
* <li> <p>FLEET_STATE_ERROR -- The Fleet's status changed to <code>ERROR</code>.
* Describe the fleet event message for more details.</p> </li> </ul> <p> <b>Fleet
* creation events (ordered by fleet creation activity):</b> </p> <ul> <li>
* <p>FLEET_BINARY_DOWNLOAD_FAILED -- The build failed to download to the fleet
* instance.</p> </li> <li> <p>FLEET_CREATION_EXTRACTING_BUILD -- The game server
* build was successfully downloaded to an instance, and Amazon GameLiftis now
* extracting the build files from the uploaded build. Failure at this stage
* prevents a fleet from moving to ACTIVE status. Logs for this stage display a
* list of the files that are extracted and saved on the instance. Access the logs
* by using the URL in <i>PreSignedLogUrl</i>.</p> </li> <li>
* <p>FLEET_CREATION_RUNNING_INSTALLER -- The game server build files were
* successfully extracted, and Amazon GameLift is now running the build's install
* script (if one is included). Failure in this stage prevents a fleet from moving
* to ACTIVE status. Logs for this stage list the installation steps and whether or
* not the install completed successfully. Access the logs by using the URL in
* <i>PreSignedLogUrl</i>.</p> </li> <li> <p>FLEET_CREATION_COMPLETED_INSTALLER --
* The game server build files were successfully installed and validation of the
* installation will begin soon.</p> </li> <li> <p>FLEET_CREATION_FAILED_INSTALLER
* -- The installed failed while attempting to install the build files. This event
* indicates that the failure occurred before Amazon GameLift could start
* validation. </p> </li> <li> <p>FLEET_CREATION_VALIDATING_RUNTIME_CONFIG -- The
* build process was successful, and the GameLift is now verifying that the game
* server launch paths, which are specified in the fleet's runtime configuration,
* exist. If any listed launch path exists, Amazon GameLift tries to launch a game
* server process and waits for the process to report ready. Failures in this stage
* prevent a fleet from moving to <code>ACTIVE</code> status. Logs for this stage
* list the launch paths in the runtime configuration and indicate whether each is
* found. Access the logs by using the URL in <i>PreSignedLogUrl</i>.</p> </li>
* <li> <p>FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND -- Validation of the runtime
* configuration failed because the executable specified in a launch path does not
* exist on the instance.</p> </li> <li>
* <p>FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE -- Validation of the runtime
* configuration failed because the executable specified in a launch path failed to
* run on the fleet instance.</p> </li> <li> <p>FLEET_VALIDATION_TIMED_OUT --
* Validation of the fleet at the end of creation timed out. Try fleet creation
* again.</p> </li> <li> <p>FLEET_ACTIVATION_FAILED -- The fleet failed to
* successfully complete one of the steps in the fleet activation process. This
* event code indicates that the game build was successfully downloaded to a fleet
* instance, built, and validated, but was not able to start a server process. For
* more information, see <a
* href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation">Debug
* Fleet Creation Issues</a>.</p> </li> <li>
* <p>FLEET_ACTIVATION_FAILED_NO_INSTANCES -- Fleet creation was not able to obtain
* any instances based on the input fleet attributes. Try again at a different time
* or choose a different combination of fleet attributes such as fleet type,
* instance type, etc.</p> </li> <li> <p>FLEET_INITIALIZATION_FAILED -- A generic
* exception occurred during fleet creation. Describe the fleet event message for
* more details.</p> </li> </ul> <p> <b>VPC peering events:</b> </p> <ul> <li>
* <p>FLEET_VPC_PEERING_SUCCEEDED -- A VPC peering connection has been established
* between the VPC for an Amazon GameLift fleet and a VPC in your Amazon Web
* Services account.</p> </li> <li> <p>FLEET_VPC_PEERING_FAILED -- A requested VPC
* peering connection has failed. Event details and status information provide
* additional detail. A common reason for peering failure is that the two VPCs have
* overlapping CIDR blocks of IPv4 addresses. To resolve this, change the CIDR
* block for the VPC in your Amazon Web Services account. For more information on
* VPC peering failures, see <a
* href="https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html">https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html</a>
* </p> </li> <li> <p>FLEET_VPC_PEERING_DELETED -- A VPC peering connection has
* been successfully deleted.</p> </li> </ul> <p> <b>Container group events:</b>
* </p> <ul> <li> <p>CONTAINER_GROUP_REGISTRATION_FAILED A game server container
* group started, but timed out before calling <code>RegisterCompute</code>. </p>
* </li> <li> <p>CONTAINER_GROUP_CRASHED A game server container group started and
* terminated without calling <code>RegisterCompute</code>.</p> </li> </ul> <p>
* <b>Spot instance events:</b> </p> <ul> <li> <p> INSTANCE_INTERRUPTED -- A spot
* instance was interrupted by EC2 with a two-minute notification.</p> </li> <li>
* <p>INSTANCE_RECYCLED -- A spot instance was determined to have a high risk of
* interruption and is scheduled to be recycled once it has no active game
* sessions.</p> </li> </ul> <p> <b>Server process events:</b> </p> <ul> <li>
* <p>SERVER_PROCESS_INVALID_PATH -- The game server executable or script could not
* be found based on the Fleet runtime configuration. Check that the launch path is
* correct based on the operating system of the Fleet.</p> </li> <li>
* <p>SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT -- The server process did not call
* <code>InitSDK()</code> within the time expected (5 minutes). Check your game
* session log to see why <code>InitSDK()</code> was not called in time.</p> </li>
* <li> <p>SERVER_PROCESS_PROCESS_READY_TIMEOUT -- The server process did not call
* <code>ProcessReady()</code> within the time expected (5 minutes) after calling
* <code>InitSDK()</code>. Check your game session log to see why
* <code>ProcessReady()</code> was not called in time.</p> </li> <li>
* <p>SERVER_PROCESS_CRASHED -- The server process exited without calling
* <code>ProcessEnding()</code>. Check your game session log to see why
* <code>ProcessEnding()</code> was not called.</p> </li> <li>
* <p>SERVER_PROCESS_TERMINATED_UNHEALTHY -- The server process did not report a
* valid health check for too long and was therefore terminated by GameLift. Check
* your game session log to see if the thread became stuck processing a synchronous
* task for too long.</p> </li> <li> <p>SERVER_PROCESS_FORCE_TERMINATED -- The
* server process did not exit cleanly within the time expected after
* <code>OnProcessTerminate()</code> was sent. Check your game session log to see
* why termination took longer than expected.</p> </li> <li>
* <p>SERVER_PROCESS_PROCESS_EXIT_TIMEOUT -- The server process did not exit
* cleanly within the time expected (30 seconds) after calling
* <code>ProcessEnding()</code>. Check your game session log to see why termination
* took longer than expected.</p> </li> </ul> <p> <b>Game session events:</b> </p>
* <ul> <li> <p>GAME_SESSION_ACTIVATION_TIMEOUT -- GameSession failed to activate
* within the expected time. Check your game session log to see why
* <code>ActivateGameSession()</code> took longer to complete than expected.</p>
* </li> </ul> <p> <b>Other fleet events:</b> </p> <ul> <li> <p>FLEET_SCALING_EVENT
* -- A change was made to the fleet's capacity settings (desired instances,
* minimum/maximum scaling limits). Event messaging includes the new capacity
* settings.</p> </li> <li> <p>FLEET_NEW_GAME_SESSION_PROTECTION_POLICY_UPDATED --
* A change was made to the fleet's game session protection policy setting. Event
* messaging includes both the old and new policy setting. </p> </li> <li>
* <p>FLEET_DELETED -- A request to delete a fleet was initiated.</p> </li> <li>
* <p> GENERIC_EVENT -- An unspecified event has occurred.</p> </li> </ul>
*/
inline const EventCode& GetEventCode() const{ return m_eventCode; }
inline bool EventCodeHasBeenSet() const { return m_eventCodeHasBeenSet; }
inline void SetEventCode(const EventCode& value) { m_eventCodeHasBeenSet = true; m_eventCode = value; }
inline void SetEventCode(EventCode&& value) { m_eventCodeHasBeenSet = true; m_eventCode = std::move(value); }
inline Event& WithEventCode(const EventCode& value) { SetEventCode(value); return *this;}
inline Event& WithEventCode(EventCode&& value) { SetEventCode(std::move(value)); return *this;}
///@}
///@{
/**
* <p>Additional information related to the event.</p>
*/
inline const Aws::String& GetMessage() const{ return m_message; }
inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; }
inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; }
inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); }
inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); }
inline Event& WithMessage(const Aws::String& value) { SetMessage(value); return *this;}
inline Event& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;}
inline Event& WithMessage(const char* value) { SetMessage(value); return *this;}
///@}
///@{
/**
* <p>Time stamp indicating when this event occurred. Format is a number expressed
* in Unix time as milliseconds (for example <code>"1469498468.057"</code>).</p>
*/
inline const Aws::Utils::DateTime& GetEventTime() const{ return m_eventTime; }
inline bool EventTimeHasBeenSet() const { return m_eventTimeHasBeenSet; }
inline void SetEventTime(const Aws::Utils::DateTime& value) { m_eventTimeHasBeenSet = true; m_eventTime = value; }
inline void SetEventTime(Aws::Utils::DateTime&& value) { m_eventTimeHasBeenSet = true; m_eventTime = std::move(value); }
inline Event& WithEventTime(const Aws::Utils::DateTime& value) { SetEventTime(value); return *this;}
inline Event& WithEventTime(Aws::Utils::DateTime&& value) { SetEventTime(std::move(value)); return *this;}
///@}
///@{
/**
* <p>Location of stored logs with additional detail that is related to the event.
* This is useful for debugging issues. The URL is valid for 15 minutes. You can
* also access fleet creation logs through the Amazon GameLift console.</p>
*/
inline const Aws::String& GetPreSignedLogUrl() const{ return m_preSignedLogUrl; }
inline bool PreSignedLogUrlHasBeenSet() const { return m_preSignedLogUrlHasBeenSet; }
inline void SetPreSignedLogUrl(const Aws::String& value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl = value; }
inline void SetPreSignedLogUrl(Aws::String&& value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl = std::move(value); }
inline void SetPreSignedLogUrl(const char* value) { m_preSignedLogUrlHasBeenSet = true; m_preSignedLogUrl.assign(value); }
inline Event& WithPreSignedLogUrl(const Aws::String& value) { SetPreSignedLogUrl(value); return *this;}
inline Event& WithPreSignedLogUrl(Aws::String&& value) { SetPreSignedLogUrl(std::move(value)); return *this;}
inline Event& WithPreSignedLogUrl(const char* value) { SetPreSignedLogUrl(value); return *this;}
///@}
///@{
/**
* <p>The number of times that this event occurred.</p>
*/
inline long long GetCount() const{ return m_count; }
inline bool CountHasBeenSet() const { return m_countHasBeenSet; }
inline void SetCount(long long value) { m_countHasBeenSet = true; m_count = value; }
inline Event& WithCount(long long value) { SetCount(value); return *this;}
///@}
private:
Aws::String m_eventId;
bool m_eventIdHasBeenSet = false;
Aws::String m_resourceId;
bool m_resourceIdHasBeenSet = false;
EventCode m_eventCode;
bool m_eventCodeHasBeenSet = false;
Aws::String m_message;
bool m_messageHasBeenSet = false;
Aws::Utils::DateTime m_eventTime;
bool m_eventTimeHasBeenSet = false;
Aws::String m_preSignedLogUrl;
bool m_preSignedLogUrlHasBeenSet = false;
long long m_count;
bool m_countHasBeenSet = false;
};
} // namespace Model
} // namespace GameLift
} // namespace Aws