Ejemplo n.º 1
0
        private static string Read(Stream stream)
        {
            var type = RedisReader.ReadType(stream);

            if (type == RedisMessage.Bulk)
            {
                return(RedisReader.ReadBulkString(stream, false));
            }
            RedisReader.ReadMultiBulk(stream, false);
            return(null);
        }
Ejemplo n.º 2
0
 static RedisSentinelRole ParseSentinel(int num, string role, RedisReader reader)
 {
     reader.ExpectSize(2, num);
     reader.ExpectType(RedisMessage.MultiBulk);
     string[] masters = new string[reader.ReadInt(false)];
     for (int i = 0; i < masters.Length; i++)
     {
         masters[i] = reader.ReadBulkString();
     }
     return(new RedisSentinelRole(role, masters));
 }
Ejemplo n.º 3
0
        private static DateTime ParseStream(Stream stream)
        {
            string[] parts        = RedisReader.ReadMultiBulkString(stream);
            int      timestamp    = Int32.Parse(parts[0]);
            int      microseconds = Int32.Parse(parts[1]);
            long     ticks        = microseconds * (TimeSpan.TicksPerMillisecond / 1000);

            return(RedisArgs.Epoch
                   + TimeSpan.FromSeconds(timestamp)
                   + TimeSpan.FromTicks(ticks));
        }
Ejemplo n.º 4
0
            public override long?Parse(RedisReader reader)
            {
                RedisMessage type = reader.ReadType();

                if (type == RedisMessage.Int)
                {
                    return(reader.ReadInt(false));
                }
                reader.ReadBulkString(false);
                return(null);
            }
Ejemplo n.º 5
0
            public override string Parse(RedisReader reader)
            {
                RedisMessage type = reader.ReadType();

                if (type == RedisMessage.Bulk)
                {
                    return(reader.ReadBulkString(false));
                }
                reader.ReadMultiBulk(false);
                return(null);
            }
Ejemplo n.º 6
0
        private static long?ParseStream(Stream stream)
        {
            RedisMessage type = RedisReader.ReadType(stream);

            if (type == RedisMessage.Int)
            {
                return(RedisReader.ReadInt(stream, false));
            }

            RedisReader.ReadBulkUTF8(stream, false);
            return(null);
        }
Ejemplo n.º 7
0
        private static Dictionary <string, string>[] ParseStream(Stream stream)
        {
            object[] response = RedisReader.ReadMultiBulk(stream);

            Dictionary <string, string>[] dicts = new Dictionary <string, string> [response.Length];
            for (int i = 0; i < response.Length; i++)
            {
                object[] hash = response[i] as object[];
                dicts[i] = HashMapper.ToDict(hash);
            }
            return(dicts);
        }
Ejemplo n.º 8
0
        public override Tuple <string, string> Parse(RedisReader reader)
        {
            reader.ExpectType(RedisMessage.MultiBulk);
            long count = reader.ReadInt(false);

            if (count != 2)
            {
                return(null);                        //使用 BLPop 命令在 RedisArray.cs 中报错的解决办法。 #22
            }
            //reader.ExpectSize(2);
            return(Tuple.Create(reader.ReadBulkString(), reader.ReadBulkString()));
        }
Ejemplo n.º 9
0
            public override T Parse(RedisReader reader)
            {
                reader.ExpectType(RedisMessage.MultiBulk);
                long count = reader.ReadInt(false);

                T[] array = new T[count];
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = _command.Parse(reader);
                }
                return(array[_index]);
            }
Ejemplo n.º 10
0
                public override Tuple <T1, T2> Parse(RedisReader reader)
                {
                    reader.ExpectType(RedisMessage.MultiBulk);
                    long count = reader.ReadInt(false);

                    if (count != 2)
                    {
                        throw new RedisProtocolException("Expected 2 items");
                    }

                    return(Create(reader));
                }
Ejemplo n.º 11
0
        void InitReader()
        {
            if (_stream != null)
            {
                _stream.Dispose();
            }

            _stream   = new BufferedStream(new NetworkStream(_socket));
            _reader   = new RedisReader(_encoding, _stream);
            _pipeline = new RedisPipeline(_stream, _encoding, _reader);
            _connectionTaskSource.SetResult(_socket.Connected);
            OnConnected();
        }
Ejemplo n.º 12
0
 public StockTickRepository(QuantitativeAnalysis.DataAccess.Infrastructure.ConnectionType type, IDataSource ds, bool redis = false)
 {
     transDateRepo = new TransactionDateTimeRepository(type);
     sqlReader     = new SqlServerReader(type);
     sqlWriter     = new SqlServerWriter(type);
     dataSource    = ds;
     this.redis    = redis;
     if (redis == true)
     {
         redisWriter = new RedisWriter();
         redisReader = new RedisReader();
     }
 }
Ejemplo n.º 13
0
 protected virtual T[] Read(long count, RedisReader reader)
 {
     if (count < 0)
     {
         return(null);
     }
     T[] array = new T[count];
     for (int i = 0; i < array.Length; i++)
     {
         array[i] = _memberCommand.Parse(reader);
     }
     return(array);
 }
Ejemplo n.º 14
0
        public override RedisScan <T> Parse(RedisReader reader)
        {
            reader.ExpectType(RedisMessage.MultiBulk);
            if (reader.ReadInt(false) != 2)
            {
                throw new RedisProtocolException("Expected 2 items");
            }

            long cursor = Int64.Parse(reader.ReadBulkString());

            T[] items = _command.Parse(reader);

            return(new RedisScan <T>(cursor, items));
        }
Ejemplo n.º 15
0
        static RedisSubscriptionMessage ParseMessage(string type, RedisReader reader)
        {
            if (type == "message")
            {
                return(new RedisSubscriptionMessage(type, reader.ReadBulkString(), reader.ReadBulkString()));
            }

            else if (type == "pmessage")
            {
                return(new RedisSubscriptionMessage(type, reader.ReadBulkString(), reader.ReadBulkString(), reader.ReadBulkString()));
            }

            throw new RedisProtocolException("Unexpected type " + type);
        }
Ejemplo n.º 16
0
 public StockDailyRepository(QuantitativeAnalysis.DataAccess.Infrastructure.ConnectionType type, IDataSource dataSource, bool redis = false)
 {
     sqlReader       = new SqlServerReader(type);
     sqlWriter       = new SqlServerWriter(type);
     dateRepo        = new TransactionDateTimeRepository(type);
     sqlReader170    = new SqlServerReader(Infrastructure.ConnectionType.Server170);
     this.dataSource = dataSource;
     this.redis      = redis;
     if (redis == true)
     {
         RedisReader redisReader = new RedisReader();
         RedisWriter redisWriter = new RedisWriter();
     }
 }
Ejemplo n.º 17
0
        static RedisSubscriptionChannel ParseChannel(string type, RedisReader reader)
        {
            switch (type)
            {
            case "subscribe":
            case "unsubscribe":
                return(new RedisSubscriptionChannel(type, reader.ReadBulkString(), null, reader.ReadInt()));

            case "psubscribe":
            case "punsubscribe":
                return(new RedisSubscriptionChannel(type, null, reader.ReadBulkString(), reader.ReadInt()));
            }

            throw new RedisProtocolException("Unexpected type " + type);
        }
Ejemplo n.º 18
0
        private static Dictionary <string, string>[] ParseStream(Stream stream, string[] fields)
        {
            string[] response = RedisReader.ReadMultiBulkString(stream);

            Dictionary <string, string>[] dicts = new Dictionary <string, string> [response.Length / fields.Length];
            for (int i = 0; i < response.Length; i += fields.Length)
            {
                dicts[i / fields.Length] = new Dictionary <string, string>();
                for (int j = 0; j < fields.Length; j++)
                {
                    dicts[i / fields.Length][fields[j]] = response[i + j];
                }
            }
            return(dicts);
        }
Ejemplo n.º 19
0
            public override string Parse(RedisReader reader)
            {
                RedisMessage type = reader.ReadType();

                if ((int)type == -1)
                {
                    return(String.Empty);
                }
                else if (type == RedisMessage.Error)
                {
                    throw new RedisException(reader.ReadStatus(false));
                }

                throw new RedisProtocolException("Unexpected type: " + type);
            }
Ejemplo n.º 20
0
        private static string ParseStream(Stream stream)
        {
            RedisMessage type = RedisReader.ReadType(stream);

            if (type == RedisMessage.Status)
            {
                return(RedisReader.ReadStatus(stream, false));
            }

            object[] result = RedisReader.ReadMultiBulk(stream, false);
            if (result != null)
            {
                throw new RedisProtocolException("Expecting null MULTI BULK response. Received: " + result.ToString());
            }
            return(null);
        }
Ejemplo n.º 21
0
            public override T Parse(RedisReader reader)
            {
                reader.ExpectType(RedisMessage.MultiBulk);
                long count = reader.ReadInt(false);

                if (count == -1)
                {
                    return(default(T));             //使用 BLPop 命令在 RedisArray.cs 中报错的解决办法。 #22
                }
                T[] array = new T[count];
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = _command.Parse(reader);
                }
                return(array[_index]);
            }
Ejemplo n.º 22
0
        public override RedisSlowLogEntry Parse(RedisReader reader)
        {
            reader.ExpectType(RedisMessage.MultiBulk);
            reader.ExpectSize(4);
            long id           = reader.ReadInt();
            long timestamp    = reader.ReadInt();
            long microseconds = reader.ReadInt();

            reader.ExpectType(RedisMessage.MultiBulk);
            string[] arguments = new string[reader.ReadInt(false)];
            for (int i = 0; i < arguments.Length; i++)
            {
                arguments[i] = reader.ReadBulkString();
            }

            return(new RedisSlowLogEntry(id, RedisDate.FromTimestamp(timestamp), RedisDate.Micro.FromMicroseconds(microseconds), arguments));
        }
Ejemplo n.º 23
0
        static RedisScanPair ParseStream(Stream stream)
        {
            object[]      parts  = RedisReader.ReadMultiBulk(stream);
            object[]      values = parts[1] as object[];
            RedisScanPair result = new RedisScanPair
            {
                Cursor = ParseCursor(parts[0]),
                Items  = new Dictionary <string, object>(),
            };

            for (int i = 0; i < values.Length; i += 2)
            {
                result.Items[values[i] as String] = values[i + 1];
            }

            return(result);
        }
Ejemplo n.º 24
0
        static RedisScan ParseStream(Stream stream)
        {
            RedisReader.ExpectType(stream, RedisMessage.MultiBulk);

            long      count = RedisReader.ReadInt(stream, false);
            RedisScan scan  = new RedisScan();

            scan.Cursor = Int64.Parse(RedisReader.Read(stream).ToString());
            RedisReader.ExpectType(stream, RedisMessage.MultiBulk);

            scan.Items = new string[RedisReader.ReadInt(stream, false)];
            for (int i = 0; i < scan.Items.Length; i++)
            {
                scan.Items[i] = RedisReader.Read(stream).ToString();
            }
            return(scan);
        }
Ejemplo n.º 25
0
            public override string Parse(RedisReader reader)
            {
                RedisMessage type = reader.ReadType();

                if (type == RedisMessage.Status)
                {
                    return(reader.ReadStatus(false));
                }

                object[] result = reader.ReadMultiBulk(false);
                if (result != null && result.Length > 0)
                {
                    throw new RedisProtocolException("Expecting null MULTI BULK response for command '" + this.Command + "'. Received: " + String.Join(", ", result));
                }

                return(null);
            }
Ejemplo n.º 26
0
            public override string Parse(RedisReader reader)
            {
                RedisMessage type = reader.ReadType();

                if (type == RedisMessage.Status)
                {
                    return(reader.ReadStatus(false));
                }

                object[] result = reader.ReadMultiBulk(false);
                if (result != null)
                {
                    throw new RedisProtocolException("Expecting null MULTI BULK response. Received: " + result.ToString());
                }

                return(null);
            }
Ejemplo n.º 27
0
        public MockConnector(string host, int port, params byte[][] mockResponses)
        {
            _host      = host;
            _port      = port;
            _encoding  = new RedisEncoding();
            _written   = new MemoryStream();
            _responses = new MemoryStream();
            _writer    = new RedisWriter(_encoding);
            _reader    = new RedisReader(_encoding, _responses);
            _messages  = new ConcurrentQueue <Tuple <long, int> >();
            _pipeline  = new RedisPipeline(_written, _encoding, _reader);

            for (int i = 0; i < mockResponses.Length; i++)
            {
                _responses.Write(mockResponses[i], 0, mockResponses[i].Length);
            }

            _responses.Position = 0;
        }
Ejemplo n.º 28
0
        static RedisMasterRole ParseMaster(int num, string role, RedisReader reader)
        {
            reader.ExpectSize(3, num);
            long offset = reader.ReadInt();

            reader.ExpectType(RedisMessage.MultiBulk);
            var slaves = new Tuple <string, int, int> [reader.ReadInt(false)];

            for (int i = 0; i < slaves.Length; i++)
            {
                reader.ExpectType(RedisMessage.MultiBulk);
                reader.ExpectSize(3);
                string ip           = reader.ReadBulkString();
                int    port         = Int32.Parse(reader.ReadBulkString());
                int    slave_offset = Int32.Parse(reader.ReadBulkString());
                slaves[i] = new Tuple <string, int, int>(ip, port, slave_offset);
            }
            return(new RedisMasterRole(role, offset, slaves));
        }
        public override Dictionary <string, string> Parse(RedisReader reader)
        {
            reader.ExpectType(RedisMessage.MultiBulk);
            long   count = reader.ReadInt(false);
            var    dict  = new Dictionary <string, string>();
            string key   = string.Empty;

            for (int i = 0; i < count; i++)
            {
                if (i % 2 == 0)
                {
                    key = reader.ReadBulkString();
                }
                else
                {
                    dict[key] = reader.ReadBulkString();
                }
            }
            return(dict);
        }
Ejemplo n.º 30
0
        static Dictionary <string, byte[]> ToDict(RedisReader reader)
        {
            reader.ExpectType(RedisMessage.MultiBulk);
            long   count = reader.ReadInt(false);
            var    dict  = new Dictionary <string, byte[]>();
            string key   = String.Empty;

            for (int i = 0; i < count; i++)
            {
                if (i % 2 == 0)
                {
                    key = reader.ReadBulkString();
                }
                else
                {
                    dict[key] = reader.ReadBulkBytes();
                }
            }
            return(dict);
        }