Exemple #1
0
 public override async void UserEventTriggered(IChannelHandlerContext context, object evt)
 {
     try
     {
         if (evt is IdleStateEvent)
         {
             PerformanceCounter cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
             var percentage         = cpu.NextValue();
             Volatile.Read(ref percentage);
             percentage = cpu.NextValue();
             GlobalMemoryStatus(ref MemInfo);
             var memory = MemInfo.dwMemoryLoad;
             var msg    = $"{percentage},{memory},{{{string.Join(",", string.Empty)}}}";
             _logWriter?.Info($"{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")}:{msg}");
             HEARTBEAT_SEQUENCE = Unpooled.UnreleasableBuffer(Unpooled.CopiedBuffer(Encoding.UTF8.GetBytes("HEARTBEAT:" + msg)));
             try
             {
                 await context.WriteAndFlushAsync(HEARTBEAT_SEQUENCE.Duplicate());
             }
             catch (Exception e)
             {
                 _logWriter?.Fatal($"{nameof(HeartbeatHandler)}.{nameof(UserEventTriggered)}:{e}");
             }
         }
         else
         {
             base.UserEventTriggered(context, evt);
         }
     }
     catch (Exception e)
     {
         _logWriter?.Fatal($"{nameof(HeartbeatHandler)}.{nameof(UserEventTriggered)}:{e}");
     }
 }
Exemple #2
0
        public void GlobalSetup()
        {
            PooledByteBufferAllocator allocator = PooledByteBufferAllocator.Default;

            // Use buffer sizes that will also allow to write UTF-8 without grow the buffer
            this.buffer  = allocator.DirectBuffer(512);
            this.wrapped = Unpooled.UnreleasableBuffer(allocator.DirectBuffer(512));
            var asciiSequence = new StringBuilder(128);

            for (int i = 0; i < 128; i++)
            {
                asciiSequence.Append('a');
            }
            this.ascii = asciiSequence.ToString();

            // Generate some mixed UTF-8 String for benchmark
            var utf8Sequence = new StringBuilder(128);

            char[] chars = "Some UTF-8 like äÄ∏ŒŒ".ToCharArray();
            for (int i = 0; i < 128; i++)
            {
                utf8Sequence.Append(chars[i % chars.Length]);
            }
            this.utf8 = utf8Sequence.ToString();

            byte[] bytes = Encoding.ASCII.GetBytes(this.ascii);
            this.asciiLength = bytes.Length;
            this.asciiBuffer = allocator.DirectBuffer(this.asciiLength);
            this.asciiBuffer.WriteBytes(bytes);

            bytes           = Encoding.UTF8.GetBytes(this.utf8);
            this.utf8Length = bytes.Length;
            this.utf8Buffer = allocator.DirectBuffer(bytes.Length);
            this.utf8Buffer.WriteBytes(bytes);
        }
        public void WrappedReadOnly()
        {
            var buf = Unpooled.UnreleasableBuffer(Unpooled.Buffer(1).AsReadOnly());

            Assert.Same(buf, buf.AsReadOnly());

            Assert.True(buf.Unwrap().Release());
        }
Exemple #4
0
        static Heartbeats()
        {
            IByteBuffer buf = Unpooled.Buffer(ProtocolHeader.HEAD_LENGTH);

            buf.WriteShort(ProtocolHeader.MAGIC);
            buf.WriteByte(ProtocolHeader.HEARTBEAT); // 心跳包这里可忽略高地址的4位序列化/反序列化标志
            buf.WriteByte(0);
            buf.WriteLong(0);
            buf.WriteInt(0);
            HEARTBEAT_BUF = Unpooled.UnreleasableBuffer(buf);
        }
Exemple #5
0
        FixedRedisMessagePool()
        {
            var stringToSimpleStringValues     = new Dictionary <string, SimpleStringRedisMessage>();
            var byteBufferToSimpleStringValues = new Dictionary <IByteBuffer, SimpleStringRedisMessage>();

            foreach (string simpleString in SimpleStrings)
            {
                IByteBuffer key = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(simpleString)));

                var redisMessage = new SimpleStringRedisMessage(simpleString);
                stringToSimpleStringValues.Add(simpleString, redisMessage);
                byteBufferToSimpleStringValues.Add(key, redisMessage);
            }
            this.stringToSimpleStringMessages     = new ReadOnlyDictionary <string, SimpleStringRedisMessage>(stringToSimpleStringValues);
            this.byteBufferToSimpleStringMessages = new ReadOnlyDictionary <IByteBuffer, SimpleStringRedisMessage>(byteBufferToSimpleStringValues);

            var errorToErrorValues      = new Dictionary <string, ErrorRedisMessage>();
            var byteBufferToErrorValues = new Dictionary <IByteBuffer, ErrorRedisMessage>();

            foreach (string error in Errors)
            {
                IByteBuffer key = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(error)));

                var redisMessage = new ErrorRedisMessage(error);
                errorToErrorValues.Add(error, redisMessage);
                byteBufferToErrorValues.Add(key, redisMessage);
            }
            this.stringToErrorMessages     = new ReadOnlyDictionary <string, ErrorRedisMessage>(errorToErrorValues);
            this.byteBufferToErrorMessages = new ReadOnlyDictionary <IByteBuffer, ErrorRedisMessage>(byteBufferToErrorValues);

            var longToIntegerValues       = new Dictionary <long, IntegerRedisMessage>();
            var longToByteBufferValues    = new Dictionary <long, byte[]>();
            var byteBufferToIntegerValues = new Dictionary <IByteBuffer, IntegerRedisMessage>();

            for (long value = MinimumCachedIntegerNumber; value < MaximumCachedIntegerNumber; value++)
            {
                byte[]      bytes = RedisCodecUtil.LongToAsciiBytes(value);
                IByteBuffer key   = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(bytes));

                var redisMessage = new IntegerRedisMessage(value);
                longToIntegerValues.Add(value, redisMessage);
                longToByteBufferValues.Add(value, bytes);
                byteBufferToIntegerValues.Add(key, redisMessage);
            }

            this.longToIntegerMessages       = new ReadOnlyDictionary <long, IntegerRedisMessage>(longToIntegerValues);
            this.longToBytes                 = new ReadOnlyDictionary <long, byte[]>(longToByteBufferValues);
            this.byteBufferToIntegerMessages = new ReadOnlyDictionary <IByteBuffer, IntegerRedisMessage>(byteBufferToIntegerValues);
        }
        public void WriteUtf8Wrapped()
        {
            string usAscii = "Some UTF-8 like äÄ∏ŒŒ";
            var    buf     = Unpooled.UnreleasableBuffer(Unpooled.Buffer(16));

            AssertWrapped(buf);
            buf.WriteBytes(TextEncodings.UTF8NoBOM.GetBytes(usAscii));
            var buf2 = Unpooled.UnreleasableBuffer(Unpooled.Buffer(16));

            AssertWrapped(buf2);
            ByteBufferUtil.WriteUtf8(buf2, usAscii);

            Assert.Equal(buf, buf2);

            buf.Release();
            buf2.Release();
        }
        public void WriteUsAsciiWrapped()
        {
            string usAscii = "NettyRocks";
            var    buf     = Unpooled.UnreleasableBuffer(Unpooled.Buffer(16));

            AssertWrapped(buf);
            buf.WriteBytes(Encoding.ASCII.GetBytes(usAscii));
            var buf2 = Unpooled.UnreleasableBuffer(Unpooled.Buffer(16));

            AssertWrapped(buf2);
            ByteBufferUtil.WriteAscii(buf2, usAscii);

            Assert.Equal(buf, buf2);

            buf.Unwrap().Release();
            buf2.Unwrap().Release();
        }
        public void CantRelease()
        {
            IByteBuffer buffer = Unpooled.UnreleasableBuffer(Unpooled.Buffer(1));

            Assert.Equal(1, buffer.ReferenceCount);
            Assert.False(buffer.Release());
            Assert.Equal(1, buffer.ReferenceCount);
            Assert.False(buffer.Release());
            Assert.Equal(1, buffer.ReferenceCount);

            buffer.Retain(5);
            Assert.Equal(1, buffer.ReferenceCount);

            buffer.Retain();
            Assert.Equal(1, buffer.ReferenceCount);

            Assert.True(buffer.Unwrap().Release());
            Assert.Equal(0, buffer.ReferenceCount);
        }
        FixedRedisMessagePool()
        {
            this.byteBufToSimpleStrings = new Dictionary <IByteBuffer, SimpleStringRedisMessage>(DefaultSimpleStrings.Length);
            this.stringToSimpleStrings  = new Dictionary <string, SimpleStringRedisMessage>(DefaultSimpleStrings.Length);

            foreach (string simpleString in DefaultSimpleStrings)
            {
                IByteBuffer key = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(simpleString)));

                var cached = new SimpleStringRedisMessage(simpleString);
                this.byteBufToSimpleStrings.Add(key, cached);
                this.stringToSimpleStrings.Add(simpleString, cached);
            }

            this.byteBufToErrors = new Dictionary <IByteBuffer, ErrorRedisMessage>(DefaultErrors.Length);
            this.stringToErrors  = new Dictionary <string, ErrorRedisMessage>(DefaultErrors.Length);
            foreach (string error in DefaultErrors)
            {
                IByteBuffer key = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(error)));

                var cached = new ErrorRedisMessage(error);
                this.byteBufToErrors.Add(key, cached);
                this.stringToErrors.Add(error, cached);
            }

            this.byteBufToIntegers = new Dictionary <IByteBuffer, IntegerRedisMessage>();
            this.longToIntegers    = new Dictionary <long, IntegerRedisMessage>(SizeCachedIntegerNumber);
            this.longToByteBufs    = new Dictionary <long, byte[]>(SizeCachedIntegerNumber);

            for (long value = MinimumCachedIntegerNumber; value < MaximumCachedIntegerNumber; value++)
            {
                byte[]      keyBytes   = RedisCodecUtil.LongToAsciiBytes(value);
                IByteBuffer keyByteBuf = Unpooled.UnreleasableBuffer(
                    Unpooled.WrappedBuffer(keyBytes));

                var cached = new IntegerRedisMessage(value);
                this.byteBufToIntegers.Add(keyByteBuf, cached);
                this.longToIntegers.Add(value, cached);
                this.longToByteBufs.Add(value, keyBytes);
            }
        }
Exemple #10
0
        static ImageCache()
        {
            ImageBank = new Dictionary <string, IByteBuffer>(StringComparer.OrdinalIgnoreCase);

            var asm  = typeof(ImageCache).Assembly;
            var path = typeof(ImageCache).Namespace + ".images.";

            for (int y = 0; y < 10; y++)
            {
                for (int x = 0; x < 20; x++)
                {
                    try
                    {
                        string name      = Name(x, y);
                        var    fileBytes = Unpooled.UnreleasableBuffer(Http2ExampleUtil.ToByteBuffer(asm.GetManifestResourceStream(path + name)));
                        ImageBank.Add(name, fileBytes);
                    }
                    catch (Exception)
                    {
                        //e.printStackTrace();
                    }
                }
            }
        }
Exemple #11
0
 public TChannelBufferOutputTransport(int minimumSize = DefaultMinimumSize)
 {
     this._minimumSize = Math.Min(DefaultMinimumSize, minimumSize);
     _outputBuffer     = Unpooled.UnreleasableBuffer(Unpooled.Buffer(this._minimumSize));
 }