Пример #1
0
        public async Task <IActionResult> Claim(Role role)
        {
            var client      = (Guid)HttpContext.Items[CookieIdentificationMiddleware.ClientIdKey];
            var currentRole = _registry.GetRole(client);
            var owner       = _registry.GetOwner(role);
            var success     = true;

            if (currentRole == role)
            {
                if (role != Role.Reader)
                {
                    success = TryDefend(client, role);
                }
            }
            else if (!owner.HasValue)
            {
                _registry.SetClientRole(client, role);
            }
            else
            {
                success = await TryClaimThroughDisputeAsync(client, owner.Value, role);
            }

            if (success)
            {
                return(Ok());
            }
            else
            {
                return(Conflict("The role is occupied."));
            }
        }
Пример #2
0
        public void ShoudStoreClientRole(Role role)
        {
            _registry.SetClientRole(_client1, role);
            var newRole = _registry.GetRole(_client1);

            newRole.ShouldBe(role);
        }
Пример #3
0
 private void Resolve(Guid winner, Guid loser)
 {
     _isResolved = true;
     _registry.SetClientRole(winner, Role);
     _registry.SetClientRole(loser, Role.Reader);
 }