public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonGameLiftConfig config = new AmazonGameLiftConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonGameLiftClient client = new AmazonGameLiftClient(creds, config); DescribeGameSessionsResponse resp = new DescribeGameSessionsResponse(); do { DescribeGameSessionsRequest req = new DescribeGameSessionsRequest { NextToken = resp.NextToken , Limit = maxItems }; resp = client.DescribeGameSessions(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.GameSessions) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
public void DescribeGameSessions(object GameSessionID) { if (clientInit == false) { LogToMyConsoleMainThread("Need to Initialize Client"); return; } //Request must contain either GameSessionID or FleetID, but not both var request = new DescribeGameSessionsRequest(); string myGameSessionID = (string)GameSessionID; if (myGameSessionID != null) { request.GameSessionId = myGameSessionID; LogToMyConsoleMainThread("DescribeGameSession " + myGameSessionID); } else if (localMode == false) { request.FleetId = staticData.myFleetID; LogToMyConsoleMainThread("DescribeGameSessions for fleet " + staticData.myFleetID); } else { request.GameSessionId = "gsess-abc"; LogToMyConsoleMainThread("Local Mode: describing default session"); LogToMyConsoleMainThread("DescribeGameSession " + myGameSessionID); } gameSessionlist = null; try { gameSessionlist = m_Client.DescribeGameSessions(request); } catch (Exception ex) { Handler(ex); } if (gameSessionlist == null) { LogToMyConsoleMainThread("Unable to describe Game Sessions... What now?"); } else { LogToMyConsoleMainThread("Number of Game Sessions: " + gameSessionlist.GameSessions.Count); foreach (GameSession GS in gameSessionlist.GameSessions) { LogToMyConsoleMainThread("Game Session ID: " + GS.GameSessionId + " Game Session Status: " + GS.Status.ToString() + " Game Session Endpoint: " + GS.IpAddress + ":" + GS.Port + " Game Session Players: " + GS.CurrentPlayerSessionCount + "/" + GS.MaximumPlayerSessionCount ); } } }
public void DescribeGameSessions() { if (clientInit == false) { LogToMyConsoleMainThread("Need to Initialize Client"); return; } LogToMyConsoleMainThread("DescribeGameSessions"); //Request must contain either GameSessionID or FleetID, but not both var request = new DescribeGameSessionsRequest(); if (localMode == false) { request.FleetId = m_targetFleet; } else { request.GameSessionId = "gsess-abc"; } DescribeGameSessionsResponse gameSessionlist = null; try { gameSessionlist = m_Client.DescribeGameSessions(request); } catch (Exception ex) { Handler(ex); } if (gameSessionlist == null) { LogToMyConsoleMainThread("Unable to describe Game Sessions... What now?"); } else { myName = gameSessionlist.GameSessions[0].Name; myGameSessionID = gameSessionlist.GameSessions[0].GameSessionId; myPort = gameSessionlist.GameSessions[0].Port; LogToMyConsoleMainThread("Number of Game Sessions: " + gameSessionlist.GameSessions.Count); foreach (GameSession GS in gameSessionlist.GameSessions) { LogToMyConsoleMainThread("Game Session ID: + " + GS.GameSessionId + " Game Session Status: " + GS.StatusReason + " " + GS.StatusReason + " Game Session Endpoint: " + GS.IpAddress + ":" + GS.Port + " Game Session Players: " + GS.CurrentPlayerSessionCount + "/" + GS.MaximumPlayerSessionCount ); } } }
public int DescribeAndRun(string sid) { var req = new DescribeGameSessionsRequest { GameSessionId = sid }; var res = _glClient.DescribeGameSessionsAsync(req).Result; if (res.GameSessions.Count < 1) { return(1); } var session = res.GameSessions.First(); return(RunBySession(session)); }
private void WaitForActivate(ref GameSession session) { for (var i = 0; i < 10; i++) { var descRequest = new DescribeGameSessionsRequest { GameSessionId = session.GameSessionId }; var res = _glClient.DescribeGameSessionsAsync(descRequest).Result; session = res.GameSessions.First(); if (session.Status != GameSessionStatus.ACTIVATING) { break; } Console.WriteLine("wait for activate: {0}({1})", session.GameSessionId, session.Status); Thread.Sleep(1000); } }
public async Task <APIGatewayProxyResponse> Get(ILambdaContext context) { AmazonGameLiftClient amazonClient = new AmazonGameLiftClient(Amazon.RegionEndpoint.USEast1); ListAliasesRequest aliasReq = new ListAliasesRequest(); aliasReq.Name = "WarshopServer"; Alias aliasRes = (await amazonClient.ListAliasesAsync(aliasReq)).Aliases[0]; DescribeAliasRequest describeAliasReq = new DescribeAliasRequest(); describeAliasReq.AliasId = aliasRes.AliasId; string fleetId = (await amazonClient.DescribeAliasAsync(describeAliasReq.AliasId)).Alias.RoutingStrategy.FleetId; DescribeGameSessionsRequest describeReq = new DescribeGameSessionsRequest(); describeReq.FleetId = fleetId; describeReq.StatusFilter = GameSessionStatus.ACTIVE; DescribeGameSessionsResponse describeRes = await amazonClient.DescribeGameSessionsAsync(describeReq); List <GameView> gameViews = describeRes.GameSessions .FindAll((GameSession g) => g.CurrentPlayerSessionCount < g.MaximumPlayerSessionCount) .ConvertAll((GameSession g) => new GameView() { gameSessionId = g.GameSessionId, creatorId = g.CreatorId, isPrivate = true.ToString() == g.GameProperties.Find((GameProperty gp) => gp.Key.Equals("IsPrivate")).Value }); GetGamesResponse response = new GetGamesResponse() { gameViews = gameViews.ToArray() }; return(new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = JsonSerializer.Serialize(response), Headers = new Dictionary <string, string> { { "Content-Type", "application/json" } } }); }
public async Task <APIGatewayProxyResponse> Post(APIGatewayProxyRequest request, ILambdaContext context) { CreateGameRequest body = JsonSerializer.Deserialize <CreateGameRequest>(request.Body); AmazonGameLiftClient amazonClient = new AmazonGameLiftClient(Amazon.RegionEndpoint.USEast1); ListAliasesRequest aliasReq = new ListAliasesRequest(); aliasReq.Name = "WarshopServer"; Alias aliasRes = (await amazonClient.ListAliasesAsync(aliasReq)).Aliases[0]; DescribeAliasRequest describeAliasReq = new DescribeAliasRequest(); describeAliasReq.AliasId = aliasRes.AliasId; string fleetId = (await amazonClient.DescribeAliasAsync(describeAliasReq.AliasId)).Alias.RoutingStrategy.FleetId; CreateGameSessionRequest req = new CreateGameSessionRequest(); req.MaximumPlayerSessionCount = 2; req.FleetId = fleetId; req.CreatorId = body.playerId; req.GameProperties.Add(new GameProperty() { Key = "IsPrivate", Value = body.isPrivate.ToString() }); req.GameProperties.Add(new GameProperty() { Key = "Password", Value = body.password == null ? "" : body.password }); try { CreateGameSessionResponse res = await amazonClient.CreateGameSessionAsync(req); GameSession gameSession = res.GameSession; int retries = 0; while (gameSession.Status.Equals(GameSessionStatus.ACTIVATING) && retries < 100) { DescribeGameSessionsRequest describeReq = new DescribeGameSessionsRequest(); describeReq.GameSessionId = res.GameSession.GameSessionId; gameSession = (await amazonClient.DescribeGameSessionsAsync(describeReq)).GameSessions[0]; retries++; } CreatePlayerSessionRequest playerSessionRequest = new CreatePlayerSessionRequest(); playerSessionRequest.PlayerId = body.playerId; playerSessionRequest.GameSessionId = gameSession.GameSessionId; CreatePlayerSessionResponse playerSessionResponse = await amazonClient.CreatePlayerSessionAsync(playerSessionRequest); CreateGameResponse response = new CreateGameResponse { playerSessionId = playerSessionResponse.PlayerSession.PlayerSessionId, ipAddress = playerSessionResponse.PlayerSession.IpAddress, port = playerSessionResponse.PlayerSession.Port }; return(new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = JsonSerializer.Serialize(response), Headers = new Dictionary <string, string> { { "Content-Type", "application/json" } } }); } catch (NotFoundException e) { return(new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.NotFound, Body = "Your game is out of date! Download the newest version\n" + e.Message, }); } catch (FleetCapacityExceededException e) { return(new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.InternalServerError, Body = "Our game servers are too busy right now, come back later!\n" + e.Message, }); } catch (Exception e) { return(new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.InternalServerError, Body = "An unexpected error occurred! Please notify the developers.\n" + e.Message, }); } }
public void DescribeGameSessionsAsync(DescribeGameSessionsRequest request, AmazonServiceCallback <DescribeGameSessionsRequest, DescribeGameSessionsResponse> callback, AsyncOptions options = null) { throw new System.NotImplementedException(); }