public bool AddResponseToIncomingQueue(GHResponseFromClient response) { bool append_success = false; lock (_inComingClientResponseQueueLock) { for (int i = 0; i < 20; i++) { if (!_updatingInComingClientResponseQueue) { _updatingInComingClientResponseQueue = true; _inComingClientResponseQueue.Append(response); append_success = true; _updatingInComingClientResponseQueue = false; break; } else { Thread.Sleep(5); Debug.WriteLine("AddResponseToIncomingQueue: Trying Again - Count: " + i); } } if (append_success) { Debug.WriteLine("AddResponseToIncomingQueue Successful"); } else { Debug.WriteLine("AddResponseToIncomingQueue Failed!"); } } return(append_success); }
protected async void ClientPlayerSelectionResponse(GHCommandFromServer command, int selectedRole, int selectedRace, int selectedGender, int selectedAlignment) { GHResponseFromClient response = new GHResponseFromClient(command.Id); response.ReturnValues.Add("selectedRole", selectedRole); response.ReturnValues.Add("selectedRace", selectedRace); response.ReturnValues.Add("selectedGender", selectedGender); response.ReturnValues.Add("selectedAlignment", selectedAlignment); await connection.InvokeAsync("ResponseFromClient", response); }
public async Task ResponseFromClient(GHResponseFromClient response) { bool success = _serverGameCenter.AddResponseToIncomingQueue(response); await Clients.Caller.SendAsync("ResponseFromClientResult", response.CommandId, success? 1 : 0); }