/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the gamelift-2015-10-01.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.GameLift.Model
{
///
/// Container for the parameters to the CreateGameSessionQueue operation.
/// Creates a placement queue that processes requests for new game sessions. A queue uses
/// FleetIQ algorithms to determine the best placement locations and find an available
/// game server there, then prompts the game server process to start a new game session.
///
///
///
///
/// A game session queue is configured with a set of destinations (Amazon GameLift fleets
/// or aliases), which determine the locations where the queue can place new game sessions.
/// These destinations can span multiple fleet types (Spot and On-Demand), instance types,
/// and Amazon Web Services Regions. If the queue includes multi-location fleets, the
/// queue is able to place game sessions in all of a fleet's remote locations. You can
/// opt to filter out individual locations if needed.
///
///
///
/// The queue configuration also determines how FleetIQ selects the best available placement
/// for a new game session. Before searching for an available game server, FleetIQ first
/// prioritizes the queue's destinations and locations, with the best placement locations
/// on top. You can set up the queue to use the FleetIQ default prioritization or provide
/// an alternate set of priorities.
///
///
///
/// To create a new queue, provide a name, timeout value, and a list of destinations.
/// Optionally, specify a sort configuration and/or a filter, and define a set of latency
/// cap policies. You can also include the ARN for an Amazon Simple Notification Service
/// (SNS) topic to receive notifications of game session placement activity. Notifications
/// using SNS or CloudWatch events is the preferred way to track placement activity.
///
///
///
/// If successful, a new GameSessionQueue
object is returned with an assigned
/// queue ARN. New game session requests, which are submitted to queue with StartGameSessionPlacement
/// or StartMatchmaking,
/// reference a queue's name or ARN.
///
///
///
/// Learn more
///
///
///
///
/// Design a game session queue
///
///
///
///
/// Create a game session queue
///
///
///
/// Related actions
///
///
///
/// CreateGameSessionQueue
/// | DescribeGameSessionQueues
/// | UpdateGameSessionQueue
/// | DeleteGameSessionQueue
/// | All
/// APIs by task
///
///
public partial class CreateGameSessionQueueRequest : AmazonGameLiftRequest
{
private string _customEventData;
private List _destinations = new List();
private FilterConfiguration _filterConfiguration;
private string _name;
private string _notificationTarget;
private List _playerLatencyPolicies = new List();
private PriorityConfiguration _priorityConfiguration;
private List _tags = new List();
private int? _timeoutInSeconds;
///
/// Gets and sets the property CustomEventData.
///
/// Information to be added to all events that are related to this game session queue.
///
///
[AWSProperty(Min=0, Max=256)]
public string CustomEventData
{
get { return this._customEventData; }
set { this._customEventData = value; }
}
// Check to see if CustomEventData property is set
internal bool IsSetCustomEventData()
{
return this._customEventData != null;
}
///
/// Gets and sets the property Destinations.
///
/// A list of fleets and/or fleet aliases that can be used to fulfill game session placement
/// requests in the queue. Destinations are identified by either a fleet ARN or a fleet
/// alias ARN, and are listed in order of placement preference.
///
///
public List Destinations
{
get { return this._destinations; }
set { this._destinations = value; }
}
// Check to see if Destinations property is set
internal bool IsSetDestinations()
{
return this._destinations != null && this._destinations.Count > 0;
}
///
/// Gets and sets the property FilterConfiguration.
///
/// A list of locations where a queue is allowed to place new game sessions. Locations
/// are specified in the form of Amazon Web Services Region codes, such as us-west-2
.
/// If this parameter is not set, game sessions can be placed in any queue location.
///
///
public FilterConfiguration FilterConfiguration
{
get { return this._filterConfiguration; }
set { this._filterConfiguration = value; }
}
// Check to see if FilterConfiguration property is set
internal bool IsSetFilterConfiguration()
{
return this._filterConfiguration != null;
}
///
/// Gets and sets the property Name.
///
/// A descriptive label that is associated with game session queue. Queue names must be
/// unique within each Region.
///
///
[AWSProperty(Required=true, Min=1, Max=128)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property NotificationTarget.
///
/// An SNS topic ARN that is set up to receive game session placement notifications. See
///
/// Setting up notifications for game session placement.
///
///
[AWSProperty(Min=0, Max=300)]
public string NotificationTarget
{
get { return this._notificationTarget; }
set { this._notificationTarget = value; }
}
// Check to see if NotificationTarget property is set
internal bool IsSetNotificationTarget()
{
return this._notificationTarget != null;
}
///
/// Gets and sets the property PlayerLatencyPolicies.
///
/// A set of policies that act as a sliding cap on player latency. FleetIQ works to deliver
/// low latency for most players in a game session. These policies ensure that no individual
/// player can be placed into a game with unreasonably high latency. Use multiple policies
/// to gradually relax latency requirements a step at a time. Multiple policies are applied
/// based on their maximum allowed latency, starting with the lowest value.
///
///
public List PlayerLatencyPolicies
{
get { return this._playerLatencyPolicies; }
set { this._playerLatencyPolicies = value; }
}
// Check to see if PlayerLatencyPolicies property is set
internal bool IsSetPlayerLatencyPolicies()
{
return this._playerLatencyPolicies != null && this._playerLatencyPolicies.Count > 0;
}
///
/// Gets and sets the property PriorityConfiguration.
///
/// Custom settings to use when prioritizing destinations and locations for game session
/// placements. This configuration replaces the FleetIQ default prioritization process.
/// Priority types that are not explicitly named will be automatically applied at the
/// end of the prioritization process.
///
///
public PriorityConfiguration PriorityConfiguration
{
get { return this._priorityConfiguration; }
set { this._priorityConfiguration = value; }
}
// Check to see if PriorityConfiguration property is set
internal bool IsSetPriorityConfiguration()
{
return this._priorityConfiguration != null;
}
///
/// Gets and sets the property Tags.
///
/// A list of labels to assign to the new game session queue resource. Tags are developer-defined
/// key-value pairs. Tagging Amazon Web Services resources are useful for resource management,
/// access management and cost allocation. For more information, see
/// Tagging Amazon Web Services Resources in the Amazon Web Services General Reference.
///
///
[AWSProperty(Min=0, Max=200)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property TimeoutInSeconds.
///
/// The maximum time, in seconds, that a new game session placement request remains in
/// the queue. When a request exceeds this time, the game session placement changes to
/// a TIMED_OUT
status. By default, this property is set to 600
.
///
///
[AWSProperty(Min=0)]
public int TimeoutInSeconds
{
get { return this._timeoutInSeconds.GetValueOrDefault(); }
set { this._timeoutInSeconds = value; }
}
// Check to see if TimeoutInSeconds property is set
internal bool IsSetTimeoutInSeconds()
{
return this._timeoutInSeconds.HasValue;
}
}
}