Ejemplo n.º 1
0
        public IObservable <RedisClient> Init(
            RedisServerInfo serverInfo)
        {
            return(Observable.Return(Unit.Default)
                   .SelectMany(unit => _semaphore.WaitAsync()
                               .ToObservable()
                               .Select(_ => serverInfo))
                   .Select(_ =>
            {
                var obj = _clients.GetOrAdd(
                    serverInfo.Id,
                    id =>
                {
                    try
                    {
                        return Connect(serverInfo.EndPoint);
                    }
                    catch (Exception exception)
                    {
                        return exception;
                    }
                });

                if (obj is Exception e)
                {
                    throw e;
                }

                return (RedisClient)obj;
            })
                   .Finally(() => _semaphore.Release()));
        }
Ejemplo n.º 2
0
        public IObservable <RedisClient> Release(
            RedisServerInfo serverInfo)
        {
            return(Observable.Return(Unit.Default)
                   .SelectMany(unit => _semaphore.WaitAsync()
                               .ToObservable()
                               .Select(_ => serverInfo))
                   .Select(_ =>
            {
                if (_clients.TryRemove(serverInfo.Id, out var obj))
                {
                    if (obj is Exception e)
                    {
                        throw e;
                    }

                    var client = (RedisClient)obj;
                    client.Dispose();
                    return client;
                }

                return null;
            })
                   .Finally(() => _semaphore.Release()));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// GetInfo
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public static JsonResult <RedisServerInfo> GetInfo(string name)
        {
            try
            {
                RedisServerInfo redisServerInfo = new RedisServerInfo();

                redisServerInfo.Cpu = CurrentRedisClient.GetCpu(name).ToString();

                redisServerInfo.Memory = CurrentRedisClient.GetUsedMem(name).ToString();

                redisServerInfo.Cmds = CurrentRedisClient.GetOpsCmd(name).ToString();

                redisServerInfo.Input = CurrentRedisClient.GetInput(name).ToString();

                redisServerInfo.Output = CurrentRedisClient.GetOutput(name).ToString();

                return(new JsonResult <RedisServerInfo>()
                {
                    Code = 1, Data = redisServerInfo, Message = "OK"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error($"RedisController.GetInfo name:{name}", ex);
                return(new JsonResult <RedisServerInfo>()
                {
                    Code = 2, Message = ex.Message
                });
            }
        }
Ejemplo n.º 4
0
 public OpenTabIntent(
     RedisServerInfo serverInfo,
     string commandText,
     int?index = null)
 {
     ServerInfo  = serverInfo;
     Index       = index;
     CommandText = commandText;
 }
Ejemplo n.º 5
0
 public Selected(
     RedisConnectionInfo connectionInfo,
     RedisServerInfo serverInfo,
     RedisDatabaseInfo databaseInfo)
 {
     ConnectionInfo = connectionInfo;
     ServerInfo     = serverInfo;
     DatabaseInfo   = databaseInfo;
 }
Ejemplo n.º 6
0
        private RedisClient GetClient(
            RedisServerInfo serverInfo)
        {
            if (_clients.TryGetValue(serverInfo.Id, out var obj))
            {
                if (obj is Exception e)
                {
                    throw e;
                }

                return((RedisClient)obj);
            }

            throw new Exception("No available client for the target");
        }
        private ServerItemModel CreateServerItem(
            RedisServerInfo serverInfo)
        {
            string address;

            if (serverInfo.EndPoint is DnsEndPoint dns)
            {
                address = $"{dns.Host}:{dns.Port}";
            }
            else
            {
                address = serverInfo.EndPoint.ToString();
            }

            return(new ServerItemModel
            {
                Address = address,
                ServerInfo = serverInfo
            });
        }
Ejemplo n.º 8
0
 public ActivateTargetIntent(
     RedisServerInfo serverInfo)
 {
     ServerInfo = serverInfo;
 }