/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace GameLift { namespace Model { /** *

Custom prioritization settings for use by a game session queue when placing * new game sessions with available game servers. When defined, this configuration * replaces the default FleetIQ prioritization process, which is as follows:

*
  • If player latency data is included in a game session request, * destinations and locations are prioritized first based on lowest average latency * (1), then on lowest hosting cost (2), then on destination list order (3), and * finally on location (alphabetical) (4). This approach ensures that the queue's * top priority is to place game sessions where average player latency is lowest, * and--if latency is the same--where the hosting cost is less, etc.

  • *

    If player latency data is not included, destinations and locations are * prioritized first on destination list order (1), and then on location * (alphabetical) (2). This approach ensures that the queue's top priority is to * place game sessions on the first destination fleet listed. If that fleet has * multiple locations, the game session is placed on the first location (when * listed alphabetically).

Changing the priority order will * affect how game sessions are placed.

See Also:

AWS * API Reference

*/ class PriorityConfiguration { public: AWS_GAMELIFT_API PriorityConfiguration(); AWS_GAMELIFT_API PriorityConfiguration(Aws::Utils::Json::JsonView jsonValue); AWS_GAMELIFT_API PriorityConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_GAMELIFT_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline const Aws::Vector& GetPriorityOrder() const{ return m_priorityOrder; } /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline bool PriorityOrderHasBeenSet() const { return m_priorityOrderHasBeenSet; } /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline void SetPriorityOrder(const Aws::Vector& value) { m_priorityOrderHasBeenSet = true; m_priorityOrder = value; } /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline void SetPriorityOrder(Aws::Vector&& value) { m_priorityOrderHasBeenSet = true; m_priorityOrder = std::move(value); } /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline PriorityConfiguration& WithPriorityOrder(const Aws::Vector& value) { SetPriorityOrder(value); return *this;} /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline PriorityConfiguration& WithPriorityOrder(Aws::Vector&& value) { SetPriorityOrder(std::move(value)); return *this;} /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline PriorityConfiguration& AddPriorityOrder(const PriorityType& value) { m_priorityOrderHasBeenSet = true; m_priorityOrder.push_back(value); return *this; } /** *

The recommended sequence to use when prioritizing where to place new game * sessions. Each type can only be listed once.

  • * LATENCY -- FleetIQ prioritizes locations where the average player * latency (provided in each game session request) is lowest.

  • * COST -- FleetIQ prioritizes destinations with the lowest current * hosting costs. Cost is evaluated based on the location, instance type, and fleet * type (Spot or On-Demand) for each destination in the queue.

  • * DESTINATION -- FleetIQ prioritizes based on the order that * destinations are listed in the queue configuration.

  • * LOCATION -- FleetIQ prioritizes based on the provided order of * locations, as defined in LocationOrder.

*/ inline PriorityConfiguration& AddPriorityOrder(PriorityType&& value) { m_priorityOrderHasBeenSet = true; m_priorityOrder.push_back(std::move(value)); return *this; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline const Aws::Vector& GetLocationOrder() const{ return m_locationOrder; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline bool LocationOrderHasBeenSet() const { return m_locationOrderHasBeenSet; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline void SetLocationOrder(const Aws::Vector& value) { m_locationOrderHasBeenSet = true; m_locationOrder = value; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline void SetLocationOrder(Aws::Vector&& value) { m_locationOrderHasBeenSet = true; m_locationOrder = std::move(value); } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline PriorityConfiguration& WithLocationOrder(const Aws::Vector& value) { SetLocationOrder(value); return *this;} /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline PriorityConfiguration& WithLocationOrder(Aws::Vector&& value) { SetLocationOrder(std::move(value)); return *this;} /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline PriorityConfiguration& AddLocationOrder(const Aws::String& value) { m_locationOrderHasBeenSet = true; m_locationOrder.push_back(value); return *this; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline PriorityConfiguration& AddLocationOrder(Aws::String&& value) { m_locationOrderHasBeenSet = true; m_locationOrder.push_back(std::move(value)); return *this; } /** *

The prioritization order to use for fleet locations, when the * PriorityOrder property includes LOCATION. Locations * are identified by Amazon Web Services Region codes such as * us-west-2. Each location can only be listed once.

*/ inline PriorityConfiguration& AddLocationOrder(const char* value) { m_locationOrderHasBeenSet = true; m_locationOrder.push_back(value); return *this; } private: Aws::Vector m_priorityOrder; bool m_priorityOrderHasBeenSet = false; Aws::Vector m_locationOrder; bool m_locationOrderHasBeenSet = false; }; } // namespace Model } // namespace GameLift } // namespace Aws