1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package gamelift 4 5import ( 6 "context" 7 "fmt" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 10 "github.com/aws/aws-sdk-go-v2/service/gamelift/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// This operation is used with the GameLift FleetIQ solution and game server 16// groups. Retrieves information on all game servers that are currently active in a 17// specified game server group. You can opt to sort the list by game server age. 18// Use the pagination parameters to retrieve results in a set of sequential 19// segments. Learn more GameLift FleetIQ Guide 20// (https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-intro.html) 21// Related actions RegisterGameServer | ListGameServers | ClaimGameServer | 22// DescribeGameServer | UpdateGameServer | DeregisterGameServer | All APIs by task 23// (https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/reference-awssdk-fleetiq.html) 24func (c *Client) ListGameServers(ctx context.Context, params *ListGameServersInput, optFns ...func(*Options)) (*ListGameServersOutput, error) { 25 if params == nil { 26 params = &ListGameServersInput{} 27 } 28 29 result, metadata, err := c.invokeOperation(ctx, "ListGameServers", params, optFns, c.addOperationListGameServersMiddlewares) 30 if err != nil { 31 return nil, err 32 } 33 34 out := result.(*ListGameServersOutput) 35 out.ResultMetadata = metadata 36 return out, nil 37} 38 39type ListGameServersInput struct { 40 41 // An identifier for the game server group to retrieve a list of game servers from. 42 // Use either the GameServerGroup name or ARN value. 43 // 44 // This member is required. 45 GameServerGroupName *string 46 47 // The maximum number of results to return. Use this parameter with NextToken to 48 // get results as a set of sequential pages. 49 Limit *int32 50 51 // A token that indicates the start of the next sequential page of results. Use the 52 // token that is returned with a previous call to this operation. To start at the 53 // beginning of the result set, do not specify a value. 54 NextToken *string 55 56 // Indicates how to sort the returned data based on game server registration 57 // timestamp. Use ASCENDING to retrieve oldest game servers first, or use 58 // DESCENDING to retrieve newest game servers first. If this parameter is left 59 // empty, game servers are returned in no particular order. 60 SortOrder types.SortOrder 61 62 noSmithyDocumentSerde 63} 64 65type ListGameServersOutput struct { 66 67 // A collection of game server objects that match the request. 68 GameServers []types.GameServer 69 70 // A token that indicates where to resume retrieving results on the next call to 71 // this operation. If no token is returned, these results represent the end of the 72 // list. 73 NextToken *string 74 75 // Metadata pertaining to the operation's result. 76 ResultMetadata middleware.Metadata 77 78 noSmithyDocumentSerde 79} 80 81func (c *Client) addOperationListGameServersMiddlewares(stack *middleware.Stack, options Options) (err error) { 82 err = stack.Serialize.Add(&awsAwsjson11_serializeOpListGameServers{}, middleware.After) 83 if err != nil { 84 return err 85 } 86 err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListGameServers{}, middleware.After) 87 if err != nil { 88 return err 89 } 90 if err = addSetLoggerMiddleware(stack, options); err != nil { 91 return err 92 } 93 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 94 return err 95 } 96 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 97 return err 98 } 99 if err = addResolveEndpointMiddleware(stack, options); err != nil { 100 return err 101 } 102 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 103 return err 104 } 105 if err = addRetryMiddlewares(stack, options); err != nil { 106 return err 107 } 108 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 109 return err 110 } 111 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 112 return err 113 } 114 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 115 return err 116 } 117 if err = addClientUserAgent(stack); err != nil { 118 return err 119 } 120 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 121 return err 122 } 123 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 124 return err 125 } 126 if err = addOpListGameServersValidationMiddleware(stack); err != nil { 127 return err 128 } 129 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListGameServers(options.Region), middleware.Before); err != nil { 130 return err 131 } 132 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 133 return err 134 } 135 if err = addResponseErrorMiddleware(stack); err != nil { 136 return err 137 } 138 if err = addRequestResponseLogging(stack, options); err != nil { 139 return err 140 } 141 return nil 142} 143 144// ListGameServersAPIClient is a client that implements the ListGameServers 145// operation. 146type ListGameServersAPIClient interface { 147 ListGameServers(context.Context, *ListGameServersInput, ...func(*Options)) (*ListGameServersOutput, error) 148} 149 150var _ ListGameServersAPIClient = (*Client)(nil) 151 152// ListGameServersPaginatorOptions is the paginator options for ListGameServers 153type ListGameServersPaginatorOptions struct { 154 // The maximum number of results to return. Use this parameter with NextToken to 155 // get results as a set of sequential pages. 156 Limit int32 157 158 // Set to true if pagination should stop if the service returns a pagination token 159 // that matches the most recent token provided to the service. 160 StopOnDuplicateToken bool 161} 162 163// ListGameServersPaginator is a paginator for ListGameServers 164type ListGameServersPaginator struct { 165 options ListGameServersPaginatorOptions 166 client ListGameServersAPIClient 167 params *ListGameServersInput 168 nextToken *string 169 firstPage bool 170} 171 172// NewListGameServersPaginator returns a new ListGameServersPaginator 173func NewListGameServersPaginator(client ListGameServersAPIClient, params *ListGameServersInput, optFns ...func(*ListGameServersPaginatorOptions)) *ListGameServersPaginator { 174 if params == nil { 175 params = &ListGameServersInput{} 176 } 177 178 options := ListGameServersPaginatorOptions{} 179 if params.Limit != nil { 180 options.Limit = *params.Limit 181 } 182 183 for _, fn := range optFns { 184 fn(&options) 185 } 186 187 return &ListGameServersPaginator{ 188 options: options, 189 client: client, 190 params: params, 191 firstPage: true, 192 } 193} 194 195// HasMorePages returns a boolean indicating whether more pages are available 196func (p *ListGameServersPaginator) HasMorePages() bool { 197 return p.firstPage || p.nextToken != nil 198} 199 200// NextPage retrieves the next ListGameServers page. 201func (p *ListGameServersPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListGameServersOutput, error) { 202 if !p.HasMorePages() { 203 return nil, fmt.Errorf("no more pages available") 204 } 205 206 params := *p.params 207 params.NextToken = p.nextToken 208 209 var limit *int32 210 if p.options.Limit > 0 { 211 limit = &p.options.Limit 212 } 213 params.Limit = limit 214 215 result, err := p.client.ListGameServers(ctx, ¶ms, optFns...) 216 if err != nil { 217 return nil, err 218 } 219 p.firstPage = false 220 221 prevToken := p.nextToken 222 p.nextToken = result.NextToken 223 224 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 225 p.nextToken = nil 226 } 227 228 return result, nil 229} 230 231func newServiceMetadataMiddleware_opListGameServers(region string) *awsmiddleware.RegisterServiceMetadata { 232 return &awsmiddleware.RegisterServiceMetadata{ 233 Region: region, 234 ServiceID: ServiceID, 235 SigningName: "gamelift", 236 OperationName: "ListGameServers", 237 } 238} 239