Ejemplo n.º 1
0
 public static async Task Execute(string id, PackageUpdate update)
 {
     try
     {
         await PackageDAO.UpdatePackage(id, update);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Ejemplo n.º 2
0
 //TODO separar em metodos individuais privados
 public static async Task UpdatePackage(string id, PackageUpdate packageUpdate)
 {
     try
     {
         var filter = Builders <Package> .Filter.Where(package => package.Id == ObjectId.Parse(id));
     }
     catch (Exception)
     {
         throw;
     }
 }
        public Task HandleUpdateAsync(PackageUpdate update, CancellationToken cancellationToken)
        {
            // TODO: Each call to ParseMessageFor needs to be localized for each user
            var tasks = new List <Task>(update.Channels.Count());

            foreach (var channel in update.Channels)
            {
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(channel.LanguageCode);
                var message = _parser.ParseMessageFor(update.Updates, update.Previous, true);
                tasks.Add(SendMessageToChats(message, channel.Channels, cancellationToken));
            }

            return(Task.WhenAll(tasks));
        }
Ejemplo n.º 4
0
        protected void updateTools(PackageChange change, int index)
        {
            if (Users.Count == 0 && WeakUsers.Count == 0)
            {
                return;
            }
            PackageUpdate update = new PackageUpdate(change, index);
            bool          isNewUpdate;

            lock (_updatelock)
            {
                isNewUpdate = !pendingUpdates.Contains(update);
            }
            if (isNewUpdate)
            {
                lock (_updatelock)
                {
                    pendingUpdates.Add(update);
                }
                Task task = Task.Delay(queuingDelay);
                taskCompletion[task.Id] = false;
                tasks.Add(task);

                task.ContinueWithOnUIThread(x =>
                {
                    taskCompletion[x.Id] = true;
                    if (tasks.TrueForAll(t => taskCompletion[t.Id]))
                    {
                        tasks.Clear();
                        taskCompletion.Clear();
                        List <PackageUpdate> updates;
                        lock (_updatelock)
                        {
                            updates = pendingUpdates.ToList();
                            pendingUpdates.Clear();
                        }
                        var removedImports     = updates.Where(u => u.Change == PackageChange.ImportRemove).Select(u => u.Index).ToList();
                        var removedExports     = updates.Where(u => u.Change == PackageChange.ExportRemove).Select(u => u.Index).ToList();
                        var pendingUpdatesList = new List <PackageUpdate>();
                        //remove add/change updates for entries that have been removed
                        foreach (PackageUpdate upd in updates)
                        {
                            switch (upd.Change)
                            {
                            case PackageChange.ExportAdd:
                            case PackageChange.ExportData:
                            case PackageChange.ExportHeader:
                                {
                                    if (!removedExports.Contains(upd.Index))
                                    {
                                        pendingUpdatesList.Add(upd);
                                    }
                                    break;
                                }

                            case PackageChange.ImportAdd:
                            case PackageChange.ImportHeader:
                                {
                                    if (!removedImports.Contains(upd.Index))
                                    {
                                        pendingUpdatesList.Add(upd);
                                    }
                                    break;
                                }

                            default:
                                pendingUpdatesList.Add(upd);
                                break;
                            }
                        }
                        foreach (var item in Users.Concat(WeakUsers))
                        {
                            item.handleUpdate(pendingUpdatesList);
                        }
                        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsModified)));
                    }
                });
            }
        }