Ejemplo n.º 1
0
        public ActionResult RunAction(string receivedData)
        {
            MobileAppServerClient.RequestBody rb = JsonConvert.DeserializeObject <MobileAppServerClient.RequestBody>(receivedData);
            SubServer targetServer = GetAvailableSubServer();

            string cacheResultKey = BuildCacheResultKey(rb);

            if (targetServer == null)
            {
                CheckAllocateNewInstance();
                return(ResolveResultOnUreachableServer(cacheResultKey));
            }

            Client client = BuildClient(targetServer);

            client.SendRequest(rb);

            MobileAppServerClient.OperationResult result = client.GetResult();

            if (EnabledCachedResultsForUnreachableServers)
            {
                CacheRepository <MobileAppServerClient.OperationResult> .Set(cacheResultKey, result, 380);
            }

            if (targetServer.HasLifetime())
            {
                targetServer.RefreshLifetime();
            }
            return(ActionResult.Json(result));
        }
Ejemplo n.º 2
0
        private string BuildCacheResultKey(MobileAppServerClient.RequestBody rb)
        {
            string cacheResultKey = $"{rb.Controller}-{rb.Action}";

            if (rb.Parameters != null)
            {
                rb.Parameters.ForEach(p => cacheResultKey += $"-{p.Name}:{p.Value}");
            }
            return(cacheResultKey);
        }
Ejemplo n.º 3
0
        private int GetCurrentThreadCountOnServer(SubServer server, Client client)
        {
            LogController.WriteLog($"Querying availability on '{server.Address}:{server.Port}'", ServerLogType.INFO);

            MobileAppServerClient.RequestBody rb = MobileAppServerClient
                                                   .RequestBody.Create("ServerInfoController", "GetCurrentThreadsCount");
            client.SendRequest(rb);

            int result = int.Parse(client.ReadResponse().Content.ToString());

            return(result);
        }