public void ChangeLanguage(int idLanguage) { IdLanguage = idLanguage; _listLocalizationValues.Clear(); SystemLanguage language = (SystemLanguage)idLanguage; TextAsset txtLocalization = Resources.Load <TextAsset>($"Localization/{language}") as TextAsset; if (txtLocalization != null) { DataLocalization dataLocalization = JsonUtility.FromJson <DataLocalization>(txtLocalization.ToString()); foreach (var dataItemLocalization in dataLocalization.listDataItems) { _listLocalizationValues.Add(dataItemLocalization.key, dataItemLocalization.value); } } var items = FindObjectsOfType <MonoBehaviour>().OfType <ILocalizationItem>(); foreach (var item in items) { if (_listLocalizationValues.ContainsKey(item.Key)) { item.ChangeLocalization(_listLocalizationValues[item.Key]); } } PlayerPrefs.SetInt(_keyLanguage, idLanguage); }
public PeerDataNodeServiceClient(string addr, ActivitySource activitySource, ILogger logger, DataLocalization currentNodeLocalization) { _addr = addr; _activitySource = activitySource; _logger = logger; _currentNodeLocalization = currentNodeLocalization; }
public async Task <ChannelChoice> GetGrpcChannelForRequest(string stepName, DataLocalization dataLocalization) { _logger.LogInformation($"Routing request for {stepName}"); var possibleSteps = await _clusterStateProvider.GetPossibleChoicesForStep(stepName); _logger.LogInformation( $"Possible choices are : {string.Join(",", possibleSteps.Select(x => x.Metadata.Name))}"); var targetPod = await _podSelector.SelectBestPod(possibleSteps, dataLocalization); if (targetPod == null) { return(null); } _logger.LogInformation($"The choice is {targetPod.Metadata.Name}. Retrieving or creating GRPC for {targetPod.Status.PodIP}"); var podAddr = $"http://{targetPod.Status.PodIP}:5000"; return(new ChannelChoice { GrpcChannel = this._grpcChannelPool.GetChannelForAddress(podAddr), PodChoice = targetPod }); }
// Token: 0x06000819 RID: 2073 RVA: 0x000225F0 File Offset: 0x000209F0 private void Load(string name) { string fileName = "DataConfig/" + name + ".json"; byte[] bytes = ResourceHelper.QueryFileContent(fileName); string aJSON = StringHelper.ReadFromBytes(bytes); JSONNode jsonnode = JSON.Parse(aJSON); DataLocalization dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["zoom_in"]); this._dicDataLocalization.Add("zoom_in", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["zoom_out"]); this._dicDataLocalization.Add("zoom_out", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["select_color"]); this._dicDataLocalization.Add("select_color", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["long_press"]); this._dicDataLocalization.Add("long_press", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["start"]); this._dicDataLocalization.Add("start", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["view_all"]); this._dicDataLocalization.Add("view_all", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["CARTOON"]); this._dicDataLocalization.Add("CARTOON", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["ANIMAL"]); this._dicDataLocalization.Add("ANIMAL", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["KID"]); this._dicDataLocalization.Add("KID", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["PLANT"]); this._dicDataLocalization.Add("PLANT", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["FOOD"]); this._dicDataLocalization.Add("FOOD", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["HOUSEHOLD"]); this._dicDataLocalization.Add("HOUSEHOLD", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["OTHERS"]); this._dicDataLocalization.Add("OTHERS", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["DAILY"]); this._dicDataLocalization.Add("DAILY", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["next_release"]); this._dicDataLocalization.Add("next_release", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["my_work"]); this._dicDataLocalization.Add("my_work", dataLocalization); dataLocalization = new DataLocalization(); dataLocalization.Load(jsonnode["save_successfully"]); this._dicDataLocalization.Add("save_successfully", dataLocalization); }
public GrpcDataInjectionService(IDataMasterClient dataMasterClient, IDictionary <string, int> localFiles, IConfiguration configuration, ILogger <GrpcDataInjectionService> logger) { _dataMasterClient = dataMasterClient; _localFiles = localFiles; _configuration = configuration; _logger = logger; permStoragePath = configuration["StorageAdapter:PermStoragePath"]; this._localization = LocalFileSystemStorageAdapter.ExtractLocalization(configuration); }
public int GetDistance(DataLocalization @from, DataLocalization to) { if (from.Host == to.Host) { return(SameHostDistance); } var fromZone = ZoneIndex[from.Zone]; var toZone = ZoneIndex[to.Zone]; return(InterZoneDistanceMatrix[fromZone][toZone]); }
public DataMasterClient(IConfiguration configuration, ILogger <DataMasterClient> logger) { _configuration = configuration; _logger = logger; var orchestratorServiceAddr = configuration["DATAMASTER_SERVICE_HOST"]; var port = configuration["DATAMASTER_SERVICE_PORT"]; _addr = configuration["NODE_IP"]; var grpcChannel = GrpcChannel.ForAddress($"http://{orchestratorServiceAddr}:{port}"); _client = new DataMasterService.DataMasterServiceClient(grpcChannel); _localization = LocalFileSystemStorageAdapter.ExtractLocalization(configuration); }
public LocalFileSystemStorageAdapter(IDataMasterClient dataMaster, IConfiguration configuration, ILogger <LocalFileSystemStorageAdapter> logger, IPeerPool peerPool, IDictionary <string, int> localFiles, ActivitySource activitySource) { this._dataMaster = dataMaster; _configuration = configuration; _logger = logger; _peerPool = peerPool; _permanentStorageBasePath = configuration["StorageAdapter:PermStoragePath"]; _localFiles = localFiles; _useHardLinking = bool.Parse(configuration["UseHardLinking"]); _activitySource = activitySource; _localization = ExtractLocalization(configuration); }
public async Task <V1Pod> SelectBestPod(IEnumerable <V1Pod> possibleTargets, DataLocalization dataLocalization) { if (_configuration["UseLoadOrientedAlgo"] == "true") { var pt = possibleTargets.Select(pod => { var podLocalization = this.ExtractDataLocalization(pod); var currentLoad = _workTracker.GetCurrentLoadForPod(pod.Name()); // pair these two up and take a routing decision based on that. var distance = _proximityTable.GetDistance(dataLocalization, podLocalization); return(new PossibleTarget { Pod = pod, Load = currentLoad, Distance = distance }); }) .Where(x => x.Load < _maxLoad).ToList(); pt.Sort((p1, p2) => { if (p1.Distance < p2.Distance) { return(-1); } if (p1.Distance > p2.Distance) { return(1); } if (p1.Load < p2.Load) { return(-1); } if (p1.Load > p2.Load) { return(1); } return(0); }); if (pt.Count == 0) { return(null); } if (pt[0].Distance == 0) { // The load on the next node is the same as the host if (pt.Count > 1 && pt[1].Load >= pt[0].Load) { return(pt[0].Pod); } if (pt.Count > 1) { return(pt[1].Pod); } return(null); } return(pt[0].Pod); } var result = possibleTargets.Select(pod => { var podLocalization = this.ExtractDataLocalization(pod); var currentLoad = _workTracker.GetCurrentLoadForPod(pod.Name()); // pair these two up and take a routing decision based on that. var distance = _proximityTable.GetDistance(dataLocalization, podLocalization); return(new { Pod = pod, Load = currentLoad, Distance = distance }); }) .Where(x => x.Load < _maxLoad) .OrderBy(arg => arg.Distance) .FirstOrDefault(); if (result != null) { return(await Task.FromResult(result.Pod)); } return(null); }
public async Task DownloadDataFromPeer(string remoteFileIdentifier, string targetLocalPath, DataLocalization peerLocalization) { var client = new TcpClient(_addr, 6000); var stream = client.GetStream(); using var file = File.OpenWrite(targetLocalPath); var fileNameLength = BitConverter.GetBytes(remoteFileIdentifier.Length); await stream.WriteAsync(fileNameLength.AsMemory(0, fileNameLength.Length)); var fnBytes = Encoding.UTF8.GetBytes(remoteFileIdentifier); await stream.WriteAsync(fnBytes.AsMemory(0, fnBytes.Length)); await stream.CopyToAsync(file); var totalSize = (int)file.Length; string from = $"{peerLocalization.Host}-{peerLocalization.Zone}"; string to = $"{_currentNodeLocalization.Host}-{_currentNodeLocalization.Zone}"; var currentActivity = Activity.Current; currentActivity.SetTag("wf-from", from); currentActivity.SetTag("wf-to", to); currentActivity.SetTag("wf-ds", (long)totalSize); _logger.LogInformation("Downloaded data {from} {to} {totalSize}", from, to, totalSize); }