Exemple #1
0
        public async Task <ActionResult <InstallerPkg> > Put(InstallerPkg installerPkg)
        {
            RCAddResult result = await AddInstallerPackageAsync(installerPkg);

            switch (result)
            {
            case RCAddResult.Success:
                return(installerPkg);

            case RCAddResult.Failure:
                return(new BadRequestResult());

            case RCAddResult.KeyAlreadyExists:
                return(new ConflictResult());

            default:
                return(new BadRequestResult());
            }
        }
Exemple #2
0
        private async Task <RCAddResult> AddInstallerPackageAsync(InstallerPkg pkg)
        {
            IReliableDictionary <string, InstallerPkg> packagesDictionary = await this._statemanager.GetOrAddAsync <IReliableDictionary <string, InstallerPkg> >("packages");

            using (ITransaction tx = _statemanager.CreateTransaction())
            {
                var result = await packagesDictionary.TryGetValueAsync(tx, pkg.Name);

                if (result.HasValue)
                {
                    return(RCAddResult.KeyAlreadyExists);
                }

                if (!await packagesDictionary.TryAddAsync(tx, pkg.Name, pkg))
                {
                    return(RCAddResult.Failure);
                }

                await tx.CommitAsync();
            }

            return(RCAddResult.Success);
        }