public void IsThreadSafe()
        {
            var reads = 0;
            var cache = new BytesCache();

            Parallel.For(0, 64, (idx) =>
            {
                cache.Content("test", () => new byte[1] {
                    0xAA
                });
                cache.Update("test",
                             () => { reads++; return(new byte[1] {
                        0xBB
                    }); },
                             () => { reads++; return(new byte[1] {
                        0xCC
                    }); }
                             );

                cache.Content("test", () => { reads++; return(new byte[1] {
                        0xDD
                    }); });
            });

            Assert.Equal(64, reads);
        }
Example #2
0
        public override void deserializeBody(InputStream stream, TLContext context)
        {
            this.messageId = StreamingUtils.readLong(stream);
            int minSize = stream.available();

            this.content = BytesCache.getInstance().allocate(minSize);
            StreamingUtils.readBytes(this.content, 0, minSize, stream);
        }
        public void CachesOnRead()
        {
            var reads = 0;
            var cache = new BytesCache();

            cache.Content("test", () => { reads++; return(new byte[1] {
                    0xAB
                }); });
            cache.Content("test", () => { reads++; return(new byte[1] {
                    0xAB
                }); });

            Assert.Equal(1, reads);
        }
        public void Removes()
        {
            var reads = 0;
            var cache = new BytesCache();

            cache.Content("test", () => { reads++; return(new byte[1] {
                    0xDD
                }); });
            cache.Remove("test");
            cache.Content("test", () => { reads++; return(new byte[1] {
                    0xDD
                }); });

            Assert.Equal(2, reads);
        }
        public void CachesOnUpdate()
        {
            var reads = 0;
            var cache = new BytesCache();

            cache.Content("test", () => new byte[1] {
                0xAA
            });
            cache.Update("test",
                         () => { reads++; return(new byte[1] {
                    0xBB
                }); },
                         () => { reads++; return(new byte[1] {
                    0xCC
                }); }
                         );

            cache.Content("test", () => { reads++; return(new byte[1] {
                    0xDD
                }); });

            Assert.Equal(1, reads);
        }
 internal RequestMessageConstructor()
 {
     _sendBufferCache = new BytesCache(NetworkSettings.WriteBufferSize);
 }