Exemplo n.º 1
0
        public static long GetNextKeyValueLong(String keyID)
        {
            KeyDAO    keyDAO    = new KeyDAO();
            KeyEntity keyEntity = null;

            cache.TryGetValue(keyID, out keyEntity);
            long keyValue = 0;

            if (keyEntity == null)
            {//双重检查防止并发
                lock (myLock)
                {
                    cache.TryGetValue(keyID, out keyEntity);
                    if (keyEntity == null)
                    {
                        keyEntity = keyDAO.Load(keyID);
                        if (keyEntity == null)
                        {
                            keyEntity = new KeyEntity
                            {
                                Steps     = defaultKeyCount,
                                Key_id    = keyID,
                                Max_value = defaultKeyCount,
                                LastValue = 0
                            };
                            keyDAO.Insert(keyEntity);
                        }
                        else
                        {
                            keyDAO.UpdateMaxValue(keyID, keyEntity.Steps);
                            keyEntity.LastValue  = keyEntity.Max_value;
                            keyEntity.Max_value += keyEntity.Steps;
                        }
                        cache[keyID] = keyEntity;
                    }
                }
            }

            lock (keyEntity)
            {
                keyValue = keyEntity.GetNextValue();
                if (keyValue == 0)
                {
                    //缓存里的值已经用完,再次申请
                    keyDAO.UpdateMaxValue(keyID, keyEntity.Steps);
                    keyEntity.LastValue  = keyEntity.Max_value;
                    keyEntity.Max_value += keyEntity.Steps;
                }
            }

            return(keyValue);
        }
Exemplo n.º 2
0
        public IActionResult Register(string mail, string pass, string key)
        {
            Usuario usuario  = new Usuario(mail, pass);
            var     confirm  = KeyDAO.getInstance().verificarKey(key);
            var     confirm2 = UsuarioDAO.getInstance().verificarUsuario(usuario);

            if (confirm && !confirm2)
            {
                UsuarioDAO.getInstance().agregarUsuario(usuario);
                KeyDAO.getInstance().borrarKey(key);
                ViewBag.msg = "El usuario fue creado correctamente";
                return(View("Registro"));
            }
            else if (!confirm)
            {
                ViewBag.msg = "La key ingresada ya está en uso o es inexistente";
                return(View("Registro"));
            }
            else
            {
                ViewBag.msg = "El usuario ya existe";
                return(View("Registro"));
            }
        }
Exemplo n.º 3
0
 public static void MiMain()
 {
     KeyDAO.getInstance().generarKeys();
 }