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}"); } }
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()); }
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); }
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); } }
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(); } } } }
public TChannelBufferOutputTransport(int minimumSize = DefaultMinimumSize) { this._minimumSize = Math.Min(DefaultMinimumSize, minimumSize); _outputBuffer = Unpooled.UnreleasableBuffer(Unpooled.Buffer(this._minimumSize)); }