Example #1
0
        public async Task DeleteAsync(string id)
        {
            var changeListeners = new List <Action <EntityChange <T> > >();
            T   internalEntity;

            using (await Lock.WriterLockAsync())
            {
                internalEntity = DeleteEntity(id, changeListeners);

                if (PersistenceRepository != null)
                {
                    await PersistenceRepository.DeleteAsync(id);
                }
            }
            SendToSubscribers(changeListeners, EntityChangeType.Delete, internalEntity);
        }
Example #2
0
        public async Task DeleteAsync(string id, CancellationToken ct = default(CancellationToken))
        {
            var allSubscriptions = new List <Subscription <T> >();
            T   internalEntity;

            using (await Lock.WriterLockAsync(ct))
            {
                internalEntity = DeleteEntity(id, allSubscriptions);

                if (PersistenceRepository != null)
                {
                    await PersistenceRepository.DeleteAsync(id, ct);
                }
            }
            if (internalEntity != null)
            {
                SendToSubscribers(allSubscriptions, EntityChangeType.Delete, internalEntity);
            }
        }
Example #3
0
        public async Task DeleteAsync(T entity, bool checkConflict = false)
        {
            var changeListeners = new List <Action <EntityChange <T> > >();
            T   internalEntity;

            using (await Lock.WriterLockAsync())
            {
                if (checkConflict)
                {
                    CheckForConcurrencyConflict(entity);
                }

                internalEntity = DeleteEntity(entity.Id, changeListeners);

                if (PersistenceRepository != null)
                {
                    await PersistenceRepository.DeleteAsync(entity);
                }
            }
            SendToSubscribers(changeListeners, EntityChangeType.Delete, internalEntity);
        }
Example #4
0
        public async Task DeleteAsync(T entity, bool checkConflict = false,
                                      CancellationToken ct         = default(CancellationToken))
        {
            var allSubscriptions = new List <Subscription <T> >();
            T   internalEntity;

            using (await Lock.WriterLockAsync(ct))
            {
                if (checkConflict)
                {
                    CheckForConcurrencyConflict(entity);
                }

                internalEntity = DeleteEntity(entity.Id, allSubscriptions);

                if (PersistenceRepository != null)
                {
                    await PersistenceRepository.DeleteAsync(entity, false, ct);
                }
            }
            SendToSubscribers(allSubscriptions, EntityChangeType.Delete, internalEntity);
        }
Example #5
0
        public async Task DeleteAllByEngineIdAsync(string engineId, CancellationToken ct = default(CancellationToken))
        {
            var deletedBuilds = new List <(Build, List <Subscription <Build> >)>();

            using (await Lock.WriterLockAsync(ct))
            {
                foreach (string buildId in Entities.Values.Where(e => e.EngineRef == engineId).Select(e => e.Id)
                         .ToArray())
                {
                    var   allSubscriptions = new List <Subscription <Build> >();
                    Build internalBuild    = DeleteEntity(buildId, allSubscriptions);

                    if (PersistenceRepository != null)
                    {
                        await PersistenceRepository.DeleteAsync(buildId, ct);
                    }
                    deletedBuilds.Add((internalBuild, allSubscriptions));
                }
            }
            foreach ((Build internalBuild, List <Subscription <Build> > allSubscriptions) in deletedBuilds)
            {
                SendToSubscribers(allSubscriptions, EntityChangeType.Delete, internalBuild);
            }
        }