Пример #1
0
    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;
 }
Пример #3
0
        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
            });
        }
Пример #4
0
    // 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);
        }
Пример #6
0
        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]);
        }
Пример #7
0
        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);
 }
Пример #9
0
        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);
        }