Esempio n. 1
0
        internal RedisPubSubChannel(IRedisNamedObject namedObject, RedisPoolSettings settings,
                                    Action <object> onComplete, Action <object, RedisCardioPulseStatus> onPulseStateChange)
        {
            if (settings == null)
            {
                throw new RedisFatalException(new ArgumentNullException("settings"), RedisErrorCode.MissingParameter);
            }

            m_Settings = settings;


            var name = !ReferenceEquals(namedObject, null) ? namedObject.Name : null;

            if (name.IsEmpty())
            {
                name = String.Format("{0}, {1}", GetType().Name, m_Id);
            }

            m_Name               = name;
            m_OnComplete         = onComplete;
            m_OnPulseStateChange = onPulseStateChange;

            var providerName = String.Format("{0}, {1}", typeof(RedisContinuousConnectionProvider).Name, m_Id);

            m_ConnectionProvider = new RedisContinuousConnectionProvider(providerName, m_Settings, ResponseReceived);
        }
        public RedisEndPointResolver(string name, RedisPoolSettings settings)
        {
            if (settings == null)
            {
                throw new RedisFatalException(new ArgumentNullException("settings"), RedisErrorCode.MissingParameter);
            }

            m_Name     = name;
            m_Settings = settings;
        }
Esempio n. 3
0
 public RedisConnectionPool(string name, RedisPoolSettings settings)
     : base(name, settings)
 {
     m_AsycRequestQProcessor = RedisCommon.IsWindows ?
                               new RedisAsyncRequestQParallelProcessor(Settings) :
                               new RedisAsyncRequestQProcessor(Settings);
     if (settings.MaxConnectionCount > 1 || !m_UseAsyncCompleter)
     {
         Register(this);
     }
 }
Esempio n. 4
0
        internal RedisContinuousChannel(RedisPoolSettings settings)
        {
            if (settings == null)
            {
                throw new RedisFatalException(new ArgumentNullException("settings"), RedisErrorCode.MissingParameter);
            }

            m_Settings = settings;

            Func <IRedisConnectionProvider> factory = NewConnectionProvider;

            m_ConnectionProvider = factory();
        }
        protected Tuple <RedisRole, RedisEndPoint[], RedisSocket> DiscoverNode(RedisPoolSettings settings)
        {
            using (var connection = NewConnection(settings))
            {
                var nodeInfo = GetNodeInfo(settings.MasterName, connection);
                if (!(nodeInfo == null || nodeInfo.Role == RedisRole.Undefined))
                {
                    var role             = nodeInfo.Role;
                    var siblingEndPoints = nodeInfo.Siblings;

                    return(new Tuple <RedisRole, RedisEndPoint[], RedisSocket>(role, siblingEndPoints, connection.RemoveSocket()));
                }
            }
            return(null);
        }
        public RedisAsyncRequestQProcessor(RedisPoolSettings settings,
                                           Action <RedisAsyncRequest, RedisSocketContext> onProcessRequest = null)
        {
            Settings           = settings;
            m_OnProcessRequest = onProcessRequest;
            m_IdleTimeout      = settings.ConnectionIdleTimeout;

            var queueTimeout = settings.SendTimeout;

            if (queueTimeout < 0)
            {
                queueTimeout = settings.ReceiveTimeout;
            }
            else
            {
                var receiveTimeout = settings.ReceiveTimeout;
                if (receiveTimeout > 0)
                {
                    queueTimeout += receiveTimeout;
                }
            }

            m_AsycRequestQ = new RedisAsyncRequestQ(queueTimeout);
        }
Esempio n. 7
0
 public RedisContinuousConnectionProvider(string name, RedisPoolSettings settings, Action <IRedisRawResponse> onReceiveResponse)
     : base(name, settings)
 {
     m_OnReceiveResponse = onReceiveResponse;
 }
 public RedisAsyncRequestQParallelProcessor(RedisPoolSettings settings)
     : base(settings, null)
 {
 }
Esempio n. 9
0
 public RedisManagedPool(RedisRole role, string name, RedisPoolSettings settings)
     : base(name, settings)
 {
     Role = role;
 }
Esempio n. 10
0
 public RedisManagedSentinelListener(RedisPoolSettings settings,
                                     Action <object> onComplete, Action <object, RedisCardioPulseStatus> onPulseStateChange)
     : base(null, settings, onComplete, onPulseStateChange)
 {
 }
Esempio n. 11
0
 internal RedisMonitorChannel(RedisPoolSettings settings, Action <object> onComplete)
     : base(settings)
 {
     m_OnComplete = onComplete;
     RegisterOnComplete(OnComplete);
 }
Esempio n. 12
0
        private Tuple <RedisRole, RedisSocket>[] CreateNodes(HashSet <IPEndPoint> discoveredEndPoints, RedisPoolSettings settings)
        {
            try
            {
                if (Disposed)
                {
                    return(null);
                }

                var endPoints = settings.EndPoints;
                if (endPoints.IsEmpty())
                {
                    return(null);
                }

                var ipAddresses = endPoints[0].ResolveHost();
                if (ipAddresses.IsEmpty())
                {
                    return(null);
                }

                var nodeEndPoint = new IPEndPoint(ipAddresses[0], endPoints[0].Port);
                if (discoveredEndPoints.Contains(nodeEndPoint))
                {
                    return(null);
                }

                discoveredEndPoints.Add(nodeEndPoint);

                var nodeInfo = DiscoverNode(settings);

                if (nodeInfo != null)
                {
                    var role             = nodeInfo.Item1;
                    var siblingEndPoints = nodeInfo.Item2;
                    var socket           = nodeInfo.Item3;

                    var list = new List <Tuple <RedisRole, RedisSocket> >();
                    if (socket != null)
                    {
                        list.Add(new Tuple <RedisRole, RedisSocket>(role, socket));
                    }

                    if (role != RedisRole.Undefined && !siblingEndPoints.IsEmpty())
                    {
                        foreach (var siblingEndPoint in siblingEndPoints)
                        {
                            try
                            {
                                if (!Disposed && siblingEndPoint != null && !siblingEndPoint.Host.IsEmpty())
                                {
                                    var siblingSettings = (RedisPoolSettings)settings.Clone(siblingEndPoint.Host, siblingEndPoint.Port);

                                    var otherNodes = CreateNodes(discoveredEndPoints, siblingSettings);
                                    if (otherNodes != null)
                                    {
                                        list.AddRange(otherNodes);
                                    }
                                }
                            }
                            catch (Exception)
                            { }
                        }
                    }

                    return(list.ToArray());
                }
            }
            catch (Exception)
            { }
            return(null);
        }
Esempio n. 13
0
 internal RedisContinuousReaderConnection(string name, RedisRole expectedRole, RedisPoolSettings settings,
                                          Action <IRedisRawResponse> onReceiveResponse, Action <RedisConnection, RedisSocket> onCreateSocket,
                                          Action <RedisConnection, RedisSocket> onReleaseSocket, RedisSocket socket = null, bool connectImmediately = true)
     : base(name, expectedRole, settings, onCreateSocket, onReleaseSocket, socket, connectImmediately)
 {
     m_OnReceiveResponse = onReceiveResponse;
 }