Esempio n. 1
0
    void Update()
    {
        return;

        featureUpdateTimer -= Time.deltaTime;
        if (featureUpdateTimer < 0)
        {
            featureUpdateTimer = Random.Range(0.3f, 0.7f);
            GetCurrentFeatures();

            foreach (CurrentFeature cf in currentFeatures)
            {
                int numGreenDotsVisible = 0;
                int numBrownDotsVisible = 0;
                if (Utils2.PointVisibleToCamera(cf.point, Camera.main))
                {
                    // green
                    if (cf.color.g > 0.6f)
                    {
                        numGreenDotsVisible++;
                    }
                    else
                    {
                        numBrownDotsVisible++;
                    }
                }
                DebugText.SetBrownDots(numBrownDotsVisible.ToString());
                DebugText.SetGreenDots(numGreenDotsVisible.ToString());
                FindObjectOfType <BatteryUpload> ().SetFillAmount((float)numGreenDotsVisible / 50f);
            }
        }
    }
Esempio n. 2
0
        private static Message CreateMessageMapKey640Keys()
        {
            var keysMap = new SortedDictionary <Number640, ICollection <Number160> >();
            var set     = new HashSet <Number160>();

            set.Add(_sample160_1);
            keysMap.Add(_sample640_1, set);

            set = new HashSet <Number160>();
            set.Add(_sample160_2);
            set.Add(_sample160_3);
            keysMap.Add(_sample640_2, set);

            set = new HashSet <Number160>();
            set.Add(_sample160_1);
            set.Add(_sample160_2);
            set.Add(_sample160_3);
            set.Add(_sample160_4);
            set.Add(_sample160_5);
            keysMap.Add(_sample640_3, set);

            var m = Utils2.CreateDummyMessage();

            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            m.SetKeyMap640Keys(new KeyMap640Keys(keysMap));
            return(m);
        }
Esempio n. 3
0
        private static Message CreateMessageSetKey640()
        {
            ICollection <Number160> sampleCollection1 = new List <Number160>();

            sampleCollection1.Add(_sample160_1);
            sampleCollection1.Add(_sample160_2);
            sampleCollection1.Add(_sample160_3);

            ICollection <Number160> sampleCollection2 = new List <Number160>();

            sampleCollection2.Add(_sample160_2);
            sampleCollection2.Add(_sample160_3);
            sampleCollection2.Add(_sample160_4);

            ICollection <Number160> sampleCollection3 = new List <Number160>();

            sampleCollection3.Add(_sample160_3);
            sampleCollection3.Add(_sample160_4);
            sampleCollection3.Add(_sample160_5);

            var m = Utils2.CreateDummyMessage();

            m.SetKeyCollection(new KeyCollection(_sample160_1, _sample160_1, _sample160_1, sampleCollection1));
            m.SetKeyCollection(new KeyCollection(_sample160_2, _sample160_2, _sample160_2, sampleCollection2));
            m.SetKeyCollection(new KeyCollection(_sample160_3, _sample160_3, _sample160_3, sampleCollection3));
            m.SetKeyCollection(new KeyCollection(_sample160_4, _sample160_4, _sample160_4, sampleCollection1));
            m.SetKeyCollection(new KeyCollection(_sample160_5, _sample160_5, _sample160_5, sampleCollection2));
            m.SetKeyCollection(new KeyCollection(_sample160_1, _sample160_2, _sample160_3, sampleCollection3));
            m.SetKeyCollection(new KeyCollection(_sample160_2, _sample160_3, _sample160_4, sampleCollection1));
            m.SetKeyCollection(new KeyCollection(_sample160_3, _sample160_4, _sample160_5, sampleCollection2));
            return(m);
        }
Esempio n. 4
0
        public void TestMessageEncodeEmpty()
        {
            // create same message object as in Java
            var m     = Utils2.CreateDummyMessage();
            var bytes = EncodeMessage(m);

            // validate decoding in Java
            Assert.IsTrue(JarRunner.WriteBytesAndTestInterop(bytes));
        }
Esempio n. 5
0
        public async void TestOrder()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x50"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2525, 2525))
                         .SetP2PId(55)
                         .SetPorts(2525)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x20"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(9099, 9099))
                        .SetP2PId(55)
                        .SetPorts(8088)
                        .Start();
                recv1.RawDataReply(new TestOrderRawDataReply());

                for (int i = 0; i < 500; i++)
                {
                    cc = await sender.ConnectionBean.Reservation.CreateAsync(0, 1);

                    var sendDirectBuilder = new SendDirectBuilder(sender, (PeerAddress)null);
                    var buffer            = AlternativeCompositeByteBuf.CompBuffer().WriteInt(i);
                    sendDirectBuilder.SetBuffer(new Buffer(buffer));
                    sendDirectBuilder.SetIsStreaming();

                    var tr = sender.DirectDataRpc.SendAsync(recv1.PeerAddress, sendDirectBuilder, cc);
                    Core.Utils.Utils.AddReleaseListener(cc, tr);
                    tr.ContinueWith(t =>
                    {
                        int j = t.Result.Buffer(0).BackingBuffer.ReadInt();
                        Console.WriteLine("Received {0}.", j);
                    });
                }
            }
            finally
            {
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 6
0
        public async void TestGracefulHalt()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x9876"))
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2424, 2424))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x1234"))
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(7777, 7777))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetP2PId(55)
                        .SetPorts(7777)
                        .Start();

                // bootstrap first
                await sender.Bootstrap().SetPeerAddress(recv1.PeerAddress).StartAsync();

                Assert.IsTrue(sender.PeerBean.PeerMap.All.Count == 1);
                Assert.IsTrue(recv1.PeerBean.PeerMap.AllOverflow.Count == 1);

                // graceful shutdown
                cc = await recv1.ConnectionBean.Reservation.CreateAsync(1, 0);

                var shutdownBuilder = new ShutdownBuilder(sender);

                await sender.QuitRpc.QuitAsync(recv1.PeerAddress, shutdownBuilder, cc);

                await sender.ShutdownAsync();

                sender = null; // ignore finally-block shutdown

                Assert.IsTrue(recv1.PeerBean.PeerMap.All.Count == 0);
            }
            finally
            {
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 7
0
        public void TestMessageDecodeEmpty()
        {
            // create same message object as in Java
            var m1 = Utils2.CreateDummyMessage();

            // compare Java encoded and .NET decoded objects
            var m2 = DecodeMessage(JarRunner.RequestJavaBytes());

            Assert.IsTrue(CheckSameContentTypes(m1, m2));
        }
Esempio n. 8
0
        private void MediaTable(Section s, IEnumerable <Attachment> media, int tableColor = -1)
        {
            Table t = null;

            if (tableColor == -1)
            {
                t = s.AddTable().TableDefaults();
            }
            else
            {
                t = s.AddTable().TableDefaults(tableColor);
            }

            var colWidth = 0.5 * ContentWidth();
            var c0       = t.AddColumn(colWidth);
            var c1       = t.AddColumn(colWidth);

            var r0 = t.AddRow();

            r0.Cells[0].AddParagraph().AddBold("Number");
            r0.Cells[1].AddParagraph().AddBold("Media");

            double maxImgWidth = colWidth - 10;
            int    number      = 1;

            foreach (var att in media)
            {
                var row = t.AddRow();
                row.BottomPadding = 5;
                row.TopPadding    = 5;

                //number
                var header = row.Cells[0].AddParagraph();
                header.AddText(string.Format("{0}. {1}", number, att.Link));
                number++;

                //thumb
                var pathName = Utils2.RandomFilePath(".png");
                var bmpSrc   = AttachmentManager.GetAttachmentBitmap3(att);
                AttachmentManager.SaveBitmapSource(AttachmentManager.GetAttachmentBitmap3(att), pathName);

                var para = row.Cells[1].AddImage(pathName);
                if (att.Format == (int)AttachmentFormat.Pdf)  //pdf thumb is low resolution
                {
                    para.Height = maxImgWidth;
                }
                else
                {
                    para.Width = maxImgWidth;
                }
                para.RelativeHorizontal = RelativeHorizontal.Column;
                para.RelativeVertical   = RelativeVertical.Paragraph;
            }
        }
Esempio n. 9
0
    public void PlaceRandomOnion()
    {
        float   radius  = 5f;
        Vector3 randPos = Utils2.FlattenVector(UnityEngine.Random.onUnitSphere) * radius + (Vector3.up * UnityEngine.Random.Range(-3, 3f));

        randPos = Camera.main.transform.forward * 2;
        GameObject onion = (GameObject)Instantiate(onionPrefab, Camera.main.transform.position + randPos, Quaternion.identity);

        onionList.Add(onion);
//		DebugText.place
    }
Esempio n. 10
0
        public async void TestBootstrapFail()
        {
            var  rnd    = new Random(42);
            Peer master = null;
            Peer slave  = null;

            try
            {
                master = new PeerBuilder(new Number160(rnd))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(4001, 4001))
                         .SetPorts(4001)
                         .Start();
                slave = new PeerBuilder(new Number160(rnd))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(4002, 4002))
                        .SetPorts(4002)
                        .Start();

                // bootstrap to another address/port
                var taskBootstrap = master.Bootstrap()
                                    .SetInetAddress(IPAddress.Loopback)
                                    .SetPorts(3000)
                                    .StartAsync();
                try
                {
                    await taskBootstrap;
                    Assert.Fail("The bootstrapping task should fail.");
                }
                catch (Exception)
                {
                    Assert.IsTrue(taskBootstrap.IsFaulted);
                }

                // bootstrap to correct address
                taskBootstrap = master.Bootstrap()
                                .SetPeerAddress(slave.PeerAddress)
                                .StartAsync();
                await taskBootstrap;
                Assert.IsTrue(!taskBootstrap.IsFaulted);
            }
            finally
            {
                if (master != null)
                {
                    master.ShutdownAsync().Wait();
                }
                if (slave != null)
                {
                    slave.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 11
0
        public async void TestDirect1()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x50"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2525, 2525))
                         .SetP2PId(55)
                         .SetPorts(2525)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x20"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(9099, 9099))
                        .SetP2PId(55)
                        .SetPorts(8088)
                        .Start();
                recv1.RawDataReply(new TestRawDataReply());

                cc = await sender.ConnectionBean.Reservation.CreateAsync(0, 1);

                var sendDirectBuilder = new SendDirectBuilder(sender, (PeerAddress)null);
                sendDirectBuilder.SetIsStreaming();
                sendDirectBuilder.SetIdleTcpSeconds(Int32.MaxValue);
                var buffer = CreateTestBuffer();
                sendDirectBuilder.SetBuffer(buffer);

                var   tr1 = sender.DirectDataRpc.SendAsync(recv1.PeerAddress, sendDirectBuilder, cc);
                await tr1;
                Assert.IsTrue(!tr1.IsFaulted);

                var ret = tr1.Result.Buffer(0);
                Assert.AreEqual(buffer, ret);
            }
            finally
            {
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 12
0
        public async void TestNeighborFail()
        {
            Peer sender = null;
            Peer recv1  = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x50"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2424, 2424))
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x20"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(8088, 8088))
                        .SetP2PId(55)
                        .SetPorts(2424)
                        .Start();

                var neighbors1 = new NeighborRpc(sender.PeerBean, sender.ConnectionBean);
                var neighbors2 = new NeighborRpc(recv1.PeerBean, recv1.ConnectionBean);
                var cc         = await recv1.ConnectionBean.Reservation.CreateAsync(1, 0);

                try
                {
                    var sv        = new SearchValues(new Number160("0x30"), null);
                    var infConfig = Utils2.CreateInfiniteConfiguration();
                    await
                    neighbors2.CloseNeighborsAsync(sender.PeerAddress, sv, Message.MessageType.Exception, cc,
                                                   infConfig);

                    Assert.Fail("ArgumentException should have been thrown.");
                }
                catch (ArgumentException)
                {
                    cc.ShutdownAsync().Wait();
                }
            }
            finally
            {
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 13
0
        public async void TestPingUdpPool()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x9876"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x1234"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetP2PId(55)
                        .SetPorts(8088)
                        .Start();

                var tasks = new List <Task <Message> >(50);
                cc = await recv1.ConnectionBean.Reservation.CreateAsync(tasks.Capacity, 0);

                for (int i = 0; i < tasks.Capacity; i++)
                {
                    var taskResponse = sender.PingRpc.PingUdpAsync(recv1.PeerAddress, cc,
                                                                   new DefaultConnectionConfiguration());
                    tasks.Add(taskResponse);
                }
                foreach (var task in tasks)
                {
                    await task;
                    Assert.IsTrue(!task.IsFaulted);
                }
            }
            finally
            {
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }

                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 14
0
        public async void TestPingTimeoutUdp()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x9876"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x1234"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetP2PId(55)
                        .SetPorts(8088)
                        .Start();
                var handshake1 = new PingRpc(sender.PeerBean, sender.ConnectionBean, false, true, true);
                var handshake2 = new PingRpc(recv1.PeerBean, recv1.ConnectionBean, false, true, true);

                cc = await recv1.ConnectionBean.Reservation.CreateAsync(1, 0);

                var tr = handshake1.PingUdpAsync(recv1.PeerAddress, cc, new DefaultConnectionConfiguration());

                try
                {
                    await tr;
                    Assert.Fail("Timeout should have let task fail.");
                }
                catch (Exception)
                {
                    Assert.IsTrue(tr.IsFaulted);
                }
            }
            finally
            {
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 15
0
        private static Message CreateMessageKey()
        {
            var m = Utils2.CreateDummyMessage();

            m.SetKey(_sample160_1);
            m.SetKey(_sample160_2);
            m.SetKey(_sample160_3);
            m.SetKey(_sample160_4);
            m.SetKey(_sample160_5);
            m.SetKey(_sample160_1);
            m.SetKey(_sample160_2);
            m.SetKey(_sample160_3);
            return(m);
        }
Esempio n. 16
0
        private MiniUserUC GetUser(Person owner)
        {
            var usr = new MiniUserUC();

            if (owner == null)
            {
                owner       = new Person();
                owner.Name  = "SYSTEM";
                owner.Color = Utils2.ColorToInt(Colors.Aqua);
            }

            usr.DataContext = owner;
            return(usr);
        }
Esempio n. 17
0
        public static Message CreateMessageInteger()
        {
            var m = Utils2.CreateDummyMessage();

            m.SetIntValue(Int32.MinValue);
            m.SetIntValue(-256);
            m.SetIntValue(-128);
            m.SetIntValue(-1);
            m.SetIntValue(0);
            m.SetIntValue(1);
            m.SetIntValue(128);
            m.SetIntValue(Int32.MaxValue);
            return(m);
        }
Esempio n. 18
0
        public async void TestNeighbor2()
        {
            Peer sender = null;
            Peer recv1  = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x50"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2424, 2424))
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x20"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(8088, 8088))
                        .SetP2PId(55)
                        .SetPorts(2424)
                        .Start();

                var neighbors1 = new NeighborRpc(sender.PeerBean, sender.ConnectionBean);
                var neighbors2 = new NeighborRpc(recv1.PeerBean, recv1.ConnectionBean);
                var cc         = await recv1.ConnectionBean.Reservation.CreateAsync(1, 0);

                var sv        = new SearchValues(new Number160("0x30"), null);
                var infConfig = Utils2.CreateInfiniteConfiguration();
                var tr        = neighbors2.CloseNeighborsAsync(sender.PeerAddress, sv, Message.MessageType.Request2, cc,
                                                               infConfig);
                await tr;

                Assert.IsTrue(!tr.IsFaulted);

                var addresses = tr.Result.NeighborsSet(0);

                // I see noone, not even myself. My peer was added in the overflow map.
                Assert.AreEqual(0, addresses.Size);
                await cc.ShutdownAsync();
            }
            finally
            {
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 19
0
        private static Message CreateMessageLong()
        {
            var m = Utils2.CreateDummyMessage();

            m.SetLongValue(Int64.MinValue);
            m.SetLongValue(-256);
            m.SetLongValue(-128);
            m.SetLongValue(-1);
            m.SetLongValue(0);
            m.SetLongValue(1);
            m.SetLongValue(128);
            m.SetLongValue(Int64.MaxValue);
            return(m);
        }
Esempio n. 20
0
        public async void TestPingTcp2()
        {
            Peer           sender = null;
            Peer           recv1  = null;
            ChannelCreator cc     = null;

            try
            {
                sender = new PeerBuilder(new Number160("0x9876"))
                         .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                         .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(2424, 2424))
                         .SetP2PId(55)
                         .SetPorts(2424)
                         .Start();
                recv1 = new PeerBuilder(new Number160("0x1234"))
                        .SetMaintenanceTask(Utils2.CreateInfiniteIntervalMaintenanceTask())
                        .SetChannelServerConfiguration(Utils2.CreateInfiniteTimeoutChannelServerConfiguration(8088, 8088))
                        .SetP2PId(55)
                        .SetPorts(8088)
                        .Start();

                // TODO check release in cc for first ping
                cc = await recv1.ConnectionBean.Reservation.CreateAsync(0, 1);

                var   tr = sender.PingRpc.PingTcpAsync(recv1.PeerAddress, cc, new DefaultConnectionConfiguration());
                await tr;
                var   tr2 = recv1.PingRpc.PingTcpAsync(sender.PeerAddress, cc, new DefaultConnectionConfiguration());
                await tr2;

                Assert.IsTrue(!tr.IsFaulted);
                Assert.IsTrue(!tr2.IsFaulted);
            }
            finally
            {
                if (cc != null)
                {
                    cc.ShutdownAsync().Wait();
                }
                if (sender != null)
                {
                    sender.ShutdownAsync().Wait();
                }
                if (recv1 != null)
                {
                    recv1.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 21
0
        public async void TestBootstrap()
        {
            var  rnd    = new Random(42);
            Peer master = null;

            try
            {
                // setup
                // TODO test with >100 peers
                // TODO test with timeout
                var peers = Utils2.CreateNodes(200, rnd, 4004);
                master = peers[0];

                // do testing
                var list = new List <Task>();
                for (int i = 0; i < peers.Length; i++)
                {
                    if (peers[i] != master)
                    {
                        Console.WriteLine("Bootstrapping peer {0}.", i);
                        var taskBootstrap = peers[i].Bootstrap().SetPeerAddress(master.PeerAddress).StartAsync();
                        list.Add(taskBootstrap);
                    }
                }
                foreach (var bootstrapTask in list)
                {
                    try
                    {
                        await bootstrapTask;
                    }
                    catch (Exception)
                    {
                        Console.Error.WriteLine(bootstrapTask.TryGetException());
                    }
                    finally
                    {
                        Assert.IsTrue(!bootstrapTask.IsFaulted);
                    }
                }
            }
            finally
            {
                if (master != null)
                {
                    master.ShutdownAsync().Wait();
                }
            }
        }
Esempio n. 22
0
        /// <summary>
        /// Slices tall image into a set of slices. Each slice has width equal to width of original and height not greater
        /// than height of 300 DPI A4 page
        /// </summary>
        /// <param name="pathName">path name to original</param>
        /// <returns>enumerable with pathnames to slice images</returns>
        public static IEnumerable <string> SliceImage(string pathName)
        {
            var sizeTemplate = new System.Drawing.Bitmap(pathName);
            var maxImgHeight = PdfTools2.PAGE_HEIGHT * sizeTemplate.Width / PdfTools2.PAGE_WIDTH;

            if (sizeTemplate.Height < maxImgHeight)
            {
                return new string[] { pathName }
            }
            ;

            var res = new List <string>();

            var pagesRequired = (int)Math.Ceiling((double)sizeTemplate.Height / maxImgHeight);

            //height of original not yet sliced
            var heightRemains = sizeTemplate.Height;

            // index of pixel row in original image that will become top row of slice image
            var nextYToHandle = 0;

            for (int page = 0; page < pagesRequired; page++)
            {
                var slicePathName = Utils2.RandomFilePath(".png");
                var sliceHeight   = Math.Min(heightRemains, maxImgHeight);
                var sliceWidth    = sizeTemplate.Width;
                using (var sliceImg = new Bitmap(sliceWidth, sliceHeight))
                {
                    using (Graphics graphics = Graphics.FromImage(sliceImg))
                    {
                        graphics.DrawImage(sizeTemplate,
                                           new Rectangle(0, 0, sliceWidth, sliceHeight),             //dst rect
                                           new Rectangle(0, nextYToHandle, sliceWidth, sliceHeight), //src rect
                                           GraphicsUnit.Pixel);
                    }
                    sliceImg.Save(slicePathName);
                }
                res.Add(slicePathName);

                heightRemains -= sliceHeight;
                nextYToHandle += sliceHeight;
            }

            sizeTemplate.Dispose();

            return(res);
        }
    }
Esempio n. 23
0
        private static List <DirectedSegment3> BreakSegmentsBySegments(List <DirectedSegment3> segments)
        {
            var res = new List <DirectedSegment3>();

            for (var i = 0; i < segments.Count; i++)
            {
                var target   = segments[i];
                var target2D = target.ToSegment2(EPlane.Xoy);
                if (target2D.Length.Near(0))
                {
                    continue;
                }
                var intersections = new List <double>();
                for (var j = 1; j < segments.Count; j++)
                {
                    var breaker   = segments[(i + j) % segments.Count];
                    var breaker2D = breaker.ToSegment2(EPlane.Xoy);
                    if (breaker2D.Length.Near(0))
                    {
                        continue;
                    }
                    if (!Vector2.Cross(target2D.Direction, breaker2D.Direction).Near(0))
                    {
                        var inter = Utils2.GetLineIntersection(target2D.P1, target2D.Direction, breaker2D.P1,
                                                               breaker2D.Direction);
                        if (target2D.Contains(inter))
                        {
                            intersections.Add((inter - target2D.P1).Length / target2D.Length);
                        }
                    }
                    //if (DirectedSegment2.IsSegmentsProperIntersection(target2D, breaker2D))
                    //{
                    //    var inter = Utils2.GetLineIntersection(target2D.P1, target2D.Direction, breaker2D.P1,
                    //                                           breaker2D.Direction);
                    //    intersections.Add((inter - target2D.P1).Length/target2D.Length);
                    //}
                }
                intersections.Add(1);
                intersections.Sort();
                var prev = target.P1;
                foreach (var current in intersections.Select(f => target.P1 + target.Direction * f * target.Length))
                {
                    res.Add(new DirectedSegment3(prev, current));
                    prev = current;
                }
            }
            return(res);
        }
Esempio n. 24
0
        private static Message CreateMessageMapKey640Data()
        {
            // TODO create Data objects with BasedOn keys and other properties

            IDictionary <Number640, Data> sampleMap1 = new Dictionary <Number640, Data>();

            sampleMap1.Add(_sample640_1, _sampleData1);
            sampleMap1.Add(_sample640_2, _sampleData1);
            sampleMap1.Add(_sample640_3, _sampleData1);

            IDictionary <Number640, Data> sampleMap2 = new Dictionary <Number640, Data>();

            sampleMap2.Add(_sample640_1, _sampleData2);
            sampleMap2.Add(_sample640_2, _sampleData2);
            sampleMap2.Add(_sample640_3, _sampleData2);

            IDictionary <Number640, Data> sampleMap3 = new Dictionary <Number640, Data>();

            sampleMap3.Add(_sample640_1, _sampleData3);
            sampleMap3.Add(_sample640_2, _sampleData3);
            sampleMap3.Add(_sample640_3, _sampleData3);

            IDictionary <Number640, Data> sampleMap4 = new Dictionary <Number640, Data>();

            sampleMap4.Add(_sample640_1, _sampleData1);
            sampleMap4.Add(_sample640_2, _sampleData2);
            sampleMap4.Add(_sample640_3, _sampleData3);

            IDictionary <Number640, Data> sampleMap5 = new Dictionary <Number640, Data>();

            sampleMap5.Add(_sample640_3, _sampleData1);
            sampleMap5.Add(_sample640_2, _sampleData2);
            sampleMap5.Add(_sample640_1, _sampleData3);

            var m = Utils2.CreateDummyMessage();

            m.SetDataMap(new DataMap(sampleMap1));
            m.SetDataMap(new DataMap(sampleMap2));
            m.SetDataMap(new DataMap(sampleMap3));
            m.SetDataMap(new DataMap(sampleMap4));
            m.SetDataMap(new DataMap(sampleMap5));
            m.SetDataMap(new DataMap(sampleMap1));
            m.SetDataMap(new DataMap(sampleMap2));
            m.SetDataMap(new DataMap(sampleMap3));
            return(m);
        }
Esempio n. 25
0
        private static Message CreateMessageBloomFilter()
        {
            var sampleBf1 = new SimpleBloomFilter <Number160>(2, 5);

            sampleBf1.Add(_sample160_1);

            var sampleBf2 = new SimpleBloomFilter <Number160>(2, 5);

            sampleBf2.Add(_sample160_2);
            sampleBf2.Add(_sample160_1);

            var sampleBf3 = new SimpleBloomFilter <Number160>(2, 5);

            sampleBf3.Add(_sample160_1);
            sampleBf3.Add(_sample160_2);
            sampleBf3.Add(_sample160_3);

            var sampleBf4 = new SimpleBloomFilter <Number160>(2, 5);

            sampleBf4.Add(_sample160_1);
            sampleBf4.Add(_sample160_2);
            sampleBf4.Add(_sample160_3);
            sampleBf4.Add(_sample160_4);

            var sampleBf5 = new SimpleBloomFilter <Number160>(2, 5);

            sampleBf5.Add(_sample160_1);
            sampleBf5.Add(_sample160_2);
            sampleBf5.Add(_sample160_3);
            sampleBf5.Add(_sample160_4);
            sampleBf5.Add(_sample160_5);

            var m = Utils2.CreateDummyMessage();

            m.SetBloomFilter(sampleBf1);
            m.SetBloomFilter(sampleBf2);
            m.SetBloomFilter(sampleBf3);
            m.SetBloomFilter(sampleBf4);
            m.SetBloomFilter(sampleBf5);
            m.SetBloomFilter(sampleBf1);
            m.SetBloomFilter(sampleBf2);
            m.SetBloomFilter(sampleBf3);
            return(m);
        }
Esempio n. 26
0
        private static Message CreateMessageMapKey640Byte()
        {
            IDictionary <Number640, sbyte> sampleMap1 = new Dictionary <Number640, sbyte>();

            sampleMap1.Add(_sample640_1, _sampleBytes1[0]);
            sampleMap1.Add(_sample640_2, _sampleBytes1[1]);
            sampleMap1.Add(_sample640_3, _sampleBytes1[2]);

            IDictionary <Number640, sbyte> sampleMap2 = new Dictionary <Number640, sbyte>();

            sampleMap2.Add(_sample640_1, _sampleBytes1[3]);
            sampleMap2.Add(_sample640_2, _sampleBytes1[4]);
            sampleMap2.Add(_sample640_3, _sampleBytes1[5]);

            IDictionary <Number640, sbyte> sampleMap3 = new Dictionary <Number640, sbyte>();

            sampleMap3.Add(_sample640_1, _sampleBytes1[6]);
            sampleMap3.Add(_sample640_2, _sampleBytes1[7]);
            sampleMap3.Add(_sample640_3, _sampleBytes1[8]);

            IDictionary <Number640, sbyte> sampleMap4 = new Dictionary <Number640, sbyte>();

            sampleMap4.Add(_sample640_1, _sampleBytes1[9]);
            sampleMap4.Add(_sample640_2, _sampleBytes1[10]);
            sampleMap4.Add(_sample640_3, _sampleBytes1[11]);

            IDictionary <Number640, sbyte> sampleMap5 = new Dictionary <Number640, sbyte>();

            sampleMap5.Add(_sample640_1, _sampleBytes1[12]);
            sampleMap5.Add(_sample640_2, _sampleBytes1[13]);
            sampleMap5.Add(_sample640_3, _sampleBytes1[14]);

            var m = Utils2.CreateDummyMessage();

            m.SetKeyMapByte(new KeyMapByte(sampleMap1));
            m.SetKeyMapByte(new KeyMapByte(sampleMap2));
            m.SetKeyMapByte(new KeyMapByte(sampleMap3));
            m.SetKeyMapByte(new KeyMapByte(sampleMap4));
            m.SetKeyMapByte(new KeyMapByte(sampleMap5));
            m.SetKeyMapByte(new KeyMapByte(sampleMap1));
            m.SetKeyMapByte(new KeyMapByte(sampleMap2));
            m.SetKeyMapByte(new KeyMapByte(sampleMap3));
            return(m);
        }
Esempio n. 27
0
        /// <summary>
        /// Decodes a message from the provided byte array.
        /// </summary>
        /// <param name="bytes">The message bytes from Java encoding.</param>
        /// <returns>The .NET message version.</returns>
        public static Message DecodeMessage(byte[] bytes)
        {
            var decoder = new Decoder(null);

            // mock a non-working ChannelHandlerContext
            var pipeline = new Pipeline();
            var channel  = new MyTcpClient(new IPEndPoint(IPAddress.Any, 0), pipeline);
            var session  = new PipelineSession(channel, pipeline, new List <IInboundHandler>(), new List <IOutboundHandler>());
            var ctx      = new ChannelHandlerContext(channel, session);

            // create dummy sender for decoding
            var message = Utils2.CreateDummyMessage();
            AlternativeCompositeByteBuf buf = AlternativeCompositeByteBuf.CompBuffer();

            buf.WriteBytes(bytes.ToSByteArray());
            decoder.Decode(ctx, buf, message.Recipient.CreateSocketTcp(), message.Sender.CreateSocketTcp());

            return(decoder.Message);
        }
Esempio n. 28
0
        private static Message CreateMessageSetPeerSocket()
        {
            IPAddress sampleAddress1 = IPAddress.Parse("192.168.1.1");
            IPAddress sampleAddress2 = IPAddress.Parse("255.255.255.255");
            IPAddress sampleAddress3 = IPAddress.Parse("127.0.0.1");
            IPAddress sampleAddress4 = IPAddress.Parse("0:1:2:3:4:5:6:7");
            IPAddress sampleAddress5 = IPAddress.Parse("7:6:5:4:3:2:1:0");

            var samplePsa1  = new PeerSocketAddress(sampleAddress1, 0, 0);
            var samplePsa2  = new PeerSocketAddress(sampleAddress2, 65535, 65535);
            var samplePsa3  = new PeerSocketAddress(sampleAddress3, 1, 1);
            var samplePsa4  = new PeerSocketAddress(sampleAddress4, 2, 2);
            var samplePsa5  = new PeerSocketAddress(sampleAddress5, 30, 40);
            var samplePsa6  = new PeerSocketAddress(sampleAddress1, 88, 88);
            var samplePsa7  = new PeerSocketAddress(sampleAddress2, 177, 177);
            var samplePsa8  = new PeerSocketAddress(sampleAddress3, 60000, 65000);
            var samplePsa9  = new PeerSocketAddress(sampleAddress4, 99, 100);
            var samplePsa10 = new PeerSocketAddress(sampleAddress5, 13, 1234);

            ICollection <PeerSocketAddress> sampleAddresses = new List <PeerSocketAddress>();

            sampleAddresses.Add(samplePsa1);
            sampleAddresses.Add(samplePsa2);
            sampleAddresses.Add(samplePsa3);
            sampleAddresses.Add(samplePsa4);
            sampleAddresses.Add(samplePsa5);
            sampleAddresses.Add(samplePsa6);
            sampleAddresses.Add(samplePsa7);
            sampleAddresses.Add(samplePsa8);
            sampleAddresses.Add(samplePsa9);
            sampleAddresses.Add(samplePsa10);

            // only 1 content is set, because per content, whole list is encoded
            var m = Utils2.CreateDummyMessage();

            m.SetPeerSocketAddresses(sampleAddresses);
            return(m);
        }
Esempio n. 29
0
        private static Message CreateMessageByteBuffer()
        {
            // write some random bytes
            var buf = AlternativeCompositeByteBuf.CompBuffer();

            for (int i = 0; i < 300; i++)
            {
                switch (i % 3)
                {
                case 0:
                    buf.WriteBytes(_sampleBytes1);
                    break;

                case 1:
                    buf.WriteBytes(_sampleBytes2);
                    break;

                case 2:
                    buf.WriteBytes(_sampleBytes3);
                    break;
                }
            }

            // decompose buffer and use the resulting 8 ByteBufs in the list
            var decoms = buf.Decompose(0, buf.ReadableBytes);

            var m = Utils2.CreateDummyMessage();

            m.SetBuffer(new Buffer(decoms[0]));
            m.SetBuffer(new Buffer(decoms[1]));
            m.SetBuffer(new Buffer(decoms[2]));
            m.SetBuffer(new Buffer(decoms[3]));
            m.SetBuffer(new Buffer(decoms[4]));
            m.SetBuffer(new Buffer(decoms[5]));
            m.SetBuffer(new Buffer(decoms[6]));
            m.SetBuffer(new Buffer(decoms[7]));
            return(m);
        }
Esempio n. 30
0
        private static Message CreateMessageSetTrackerData()
        {
            var sampleAddress1 = new PeerAddress(_sample160_1, IPAddress.Parse("192.168.1.1"));
            var sampleAddress2 = new PeerAddress(_sample160_2, IPAddress.Parse("255.255.255.255"));
            var sampleAddress3 = new PeerAddress(_sample160_3, IPAddress.Parse("127.0.0.1"));
            var sampleAddress4 = new PeerAddress(_sample160_4, IPAddress.Parse("0:1:2:3:4:5:6:7"));
            var sampleAddress5 = new PeerAddress(_sample160_5, IPAddress.Parse("7:6:5:4:3:2:1:0"));

            IDictionary <PeerAddress, Data> sampleMap1 = new Dictionary <PeerAddress, Data>();

            sampleMap1.Add(sampleAddress1, _sampleData1);
            sampleMap1.Add(sampleAddress2, _sampleData2);
            sampleMap1.Add(sampleAddress3, _sampleData3);

            IDictionary <PeerAddress, Data> sampleMap2 = new Dictionary <PeerAddress, Data>();

            sampleMap2.Add(sampleAddress2, _sampleData1);
            sampleMap2.Add(sampleAddress3, _sampleData2);
            sampleMap2.Add(sampleAddress4, _sampleData3);

            IDictionary <PeerAddress, Data> sampleMap3 = new Dictionary <PeerAddress, Data>();

            sampleMap3.Add(sampleAddress3, _sampleData1);
            sampleMap3.Add(sampleAddress4, _sampleData2);
            sampleMap3.Add(sampleAddress5, _sampleData3);

            var m = Utils2.CreateDummyMessage();

            m.SetTrackerData(new TrackerData(sampleMap1, true));
            m.SetTrackerData(new TrackerData(sampleMap1, false));
            m.SetTrackerData(new TrackerData(sampleMap2, true));
            m.SetTrackerData(new TrackerData(sampleMap2, false));
            m.SetTrackerData(new TrackerData(sampleMap3, true));
            m.SetTrackerData(new TrackerData(sampleMap3, false));
            m.SetTrackerData(new TrackerData(sampleMap1, true));
            m.SetTrackerData(new TrackerData(sampleMap1, false));
            return(m);
        }