Exemplo n.º 1
0
        public WriteableBitmap(int pixelWidth, int pixelHeight) : base()
        {
            _buffer = new InMemoryBuffer(pixelWidth * pixelHeight * 4);

            PixelWidth  = pixelWidth;
            PixelHeight = pixelHeight;
        }
        public void ShouldWaitForEnqueue()
        {
            var buffer         = new InMemoryBuffer();
            var stop           = false;
            var attemptsToRead = 0;

            var thread = new Thread(() =>
            {
                while (!stop)
                {
                    var message = buffer.WaitOneAndPeek(CancellationToken.None);
                    Thread.Sleep(1);
                    attemptsToRead++;
                    if (message != null)
                    {
                        buffer.Dequeue(CancellationToken.None);
                    }
                }
            });

            thread.Start();

            for (int i = 0; i < 10; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    buffer.Enqueue(new RawMessage(new byte[0], string.Empty), CancellationToken.None);
                    buffer.Enqueue(new RawMessage(new byte[0], string.Empty), CancellationToken.None);
                });
            }

            Thread.Sleep(25);
            stop = true;
            Assert.AreEqual(20, attemptsToRead);
        }
        Message __Unpack(List <Packet> packets)
        {
            var     buffer  = new InMemoryBuffer();
            Message message = null;

            foreach (var p in packets)
            {
                message = Message.Unpack(p.Payload, buffer);
            }

            return(message);
        }
 public async Task Bysky()
 {
     try
     {
         var buffer = new InMemoryBuffer();
         var bytes  = "1204043F0D01286A1E27669F08768272FA8125E0B0BFCC6A0E14610A3481EFF952B4B05CFC2F53E7D2E013AEA013560F103035C55933596F5A4ED89BD6EB046DCD1C00CA".ToByteArray();
         var m      = MessageMT.Unpack(bytes, buffer) as ChatMessageMT;
     }
     catch (Exception e)
     {
     }
 }
        public void PackLegacy()
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            try
            {
                var buffer = new InMemoryBuffer();

                //var bytes = "118B26010037393939393734303536323A46524F4D373939393937343035363228382E362E32302D31303A33352855544329293A20CFF0E8E2E5F2".ToByteArray();
                var bytes1 = "119607010037393939373136383933384062792D736B792E6E65743AD2E5F1F220322031323A3237".ToByteArray();

                var m1 = Legacy_MessageMT.Unpack(bytes1, buffer);
            }
            catch (Exception e)
            {
            }
        }
Exemplo n.º 6
0
        public async Task ShouldWaitForEnqueue()
        {
            var buffer         = new InMemoryBuffer();
            var cts            = new CancellationTokenSource();
            var attemptsToRead = 0;

            var thread = new Thread(() =>
            {
                while (!cts.IsCancellationRequested)
                {
                    try
                    {
                        var message = buffer.WaitOneAndPeek(cts.Token);
                        Thread.Sleep(50);
                        attemptsToRead++;
                        if (message != null)
                        {
                            buffer.Dequeue(cts.Token);
                        }
                    }
                    catch (OperationCanceledException)
                    {
                        //that's ok )
                    }
                }
            });

            thread.Start();

            var writeTasks = Enumerable.Range(0, 10).Select(i =>
                                                            Task.Factory.StartNew(() =>
            {
                buffer.Enqueue(new RawMessage(new byte[0], string.Empty), cts.Token);
                buffer.Enqueue(new RawMessage(new byte[0], string.Empty), cts.Token);
            })
                                                            );

            await Task.WhenAll(writeTasks);

            await Task.Delay(TimeSpan.FromSeconds(2));

            cts.Cancel();

            Assert.AreEqual(20, attemptsToRead);
        }