public async Task EntireMessageReceived()
        {
            var expected = new TestMessage()
            {
                Text   = "Some text goes here",
                Bit    = false,
                Number = 1245423534
            };

            TestMessage actual = null;

            var reciever = new UdpReciever <TestMessage>((value) => { actual = value; });

            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            await sender.Send(expected);

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));

            while (actual == null)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.AreEqual(expected, actual);
        }
        public async Task TenSendsTenRecieves()
        {
            int expected = 10;
            int recieves = 0;
            var reciever = new UdpReciever<TestMessage>((value) => { Interlocked.Increment(ref recieves); });
            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            for (int i = 0; i < expected; i++)
            {
                await sender.Send(new TestMessage());
            }

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
            while (recieves < 10)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.AreEqual(expected, recieves);
        }
        public async Task TenSendsTenRecieves()
        {
            int expected = 10;
            int recieves = 0;
            var reciever = new UdpReciever <TestMessage>((value) => { Interlocked.Increment(ref recieves); });

            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            for (int i = 0; i < expected; i++)
            {
                await sender.Send(new TestMessage());
            }

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));

            while (recieves < 10)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.AreEqual(expected, recieves);
        }
Exemple #4
0
 public ConfiguratorViewModel()
 {
     configuration = Configuration.LoadConfiguration();
     if (configuration is null)
     {
         configuration = new Configuration();
     }
     _devices        = new ObservableCollection <Device>(configuration.Devices);
     cancTokenSource = new CancellationTokenSource();
     broadcaster     = new Thread(() => UdpBroadcaster.Broadcast(new Server_Advertisement_Message(), cancTokenSource.Token));
     server          = new TcpServer(ServerMode.CONFIGURATION_MODE);
     //_selectedSSID = configuration.SSID;
 }
        /// <summary>
        ///   Handle an event that should be treated as a UID being successfully read.
        /// </summary>
        /// <param name="payload">The payload to send with the event.</param>
        public void HandleUidEvent(byte[] uid)
        {
            byte[] payload = PreferredFormatter.GetPayload(uid);

            Log.InfoFormat("Using payload '{0}'.", BitConverter.ToString(payload).Replace("-", string.Empty));

            if (UseLoopback)
            {
                UdpBroadcaster.BroadcastLoopback(payload, Port);
            }
            else
            {
                UdpBroadcaster.Broadcast(payload, Port, IPAddress, NetworkInterface);
            }
        }
Exemple #6
0
        public byte[] SendOptionRequest(IPAddress address)
        {
            UdpBroadcaster broadcaster = new UdpBroadcaster(22023);
            // broadcaster.

            Socket     socket       = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint endPoint     = new IPEndPoint(address, 22023);
            EndPoint   senderRemote = (EndPoint)endPoint;

            socket.SendTo(this.request, endPoint);
            Console.WriteLine("waiting");
            var a = socket.ReceiveFrom(this.recieve, SocketFlags.None, ref senderRemote);

            socket.Close();
            Console.WriteLine(a);
            return(recieve);
        }
      public Task<ITransport> CreateAsync(MobOperations mobOperations, Identity identity, RoutingTable routingTable, PeerTable peerTable, InboundMessageDispatcher inboundMessageDispatcher, AuditService auditService) {
         // setup identity
         identity.Properties[UdpConstants.kUnicastPortIdentityPropertyKey] = configuration.UnicastReceiveEndpoint.Port.ToString();

         var duplicateFilter = new DuplicateFilter();
         duplicateFilter.Initialize();

         var inboundBytesAggregator = auditService.GetAggregator<double>(DataSetNames.kInboundBytes);
         var outboundBytesAggregator = auditService.GetAggregator<double>(DataSetNames.kOutboundBytes);
         var inboundReceiveProcessDispatchLatencyAggregator = auditService.GetAggregator<double>(DataSetNames.kInboundProcessDispatchLatency);
         var resendsCounter = auditService.GetCounter(DataSetNames.kTotalResends);
         var resendsAggregator = auditService.GetAggregator<int>(DataSetNames.kMessageResends);
         var tossedCounter = auditService.GetCounter(DataSetNames.kTossed);
         var duplicatesReceivedCounter = auditService.GetCounter(DataSetNames.kDuplicatesReceived);
         var announcementsReceivedCounter = auditService.GetCounter(DataSetNames.kAnnouncementsReceived);
         var multiPartChunksSentCounter = auditService.GetCounter(DataSetNames.kMultiPartChunksSent);
         var multiPartChunksReceivedAggregator = auditService.GetAggregator<int>(DataSetNames.kMultiPartChunksBytesReceived);
         var outboundMessageRateLimitAggregator = auditService.GetAggregator<double>(DataSetNames.kOutboundMessageRateLimit);
         var sendQueueDepthAggregator = auditService.GetAggregator<double>(DataSetNames.kSendQueueDepth);

         mobOperations.RegisterMob(new UdpDebugMob());

         var shutdownCts = new CancellationTokenSource();
         var acknowledgementCoordinator = new AcknowledgementCoordinator(identity);
         var udpUnicastScheduler = SchedulerFactory.CreateWithCustomThreadPool($"Courier.Udp({identity.Id.ToShortString()}).Unicast");
         var sendReceiveBufferPool = ObjectPool.CreateStackBacked(() => new byte[UdpConstants.kMaximumTransportSize]);
         var client = UdpClient.Create(configuration, udpUnicastScheduler, sendReceiveBufferPool, inboundBytesAggregator, outboundBytesAggregator, inboundReceiveProcessDispatchLatencyAggregator);
         var payloadSender = new PayloadSender(client);
         var multiPartPacketReassembler = new MultiPartPacketReassembler();
         var udpUnicasterFactory = new UdpUnicasterFactory(identity, client, acknowledgementCoordinator, sendReceiveBufferPool, resendsCounter, resendsAggregator, outboundMessageRateLimitAggregator, sendQueueDepthAggregator);
         var udpDispatcher = new UdpDispatcherImpl(identity, client, duplicateFilter, payloadSender, acknowledgementCoordinator, routingTable, peerTable, inboundMessageDispatcher, multiPartPacketReassembler, udpUnicasterFactory, announcementsReceivedCounter, tossedCounter, duplicatesReceivedCounter, multiPartChunksReceivedAggregator);
         multiPartPacketReassembler.SetUdpDispatcher(udpDispatcher);
         var announcer = new Announcer(identity, payloadSender, shutdownCts.Token);
         announcer.Initialize();
         var udpFacade = new UdpFacade(client, udpDispatcher, shutdownCts);
         var udpBroadcaster = new UdpBroadcaster(identity, client);
         var transport = new UdpTransport(udpBroadcaster, udpFacade);
         client.StartReceiving(udpDispatcher);

         return Task.FromResult<ITransport>(transport);
      }
        public async Task OneSendOneRecieve()
        {
            var wasRecieved = false;
            var reciever = new UdpReciever<TestMessage>((value) => { wasRecieved = true; });
            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            await sender.Send(new TestMessage());

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
            while(!wasRecieved)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.IsTrue(wasRecieved);
        }
Exemple #9
0
        public void CanStart()
        {
            const string TestData = "pwerowerower";

            using (UdpBroadcaster caster = new UdpBroadcaster(47777))
                using (UdpBroadcastListener listener = new UdpBroadcastListener(47777))
                {
                    listener.StartListen();

                    caster.SetData(TestData);

                    caster.Broadcast();
                    Thread.Sleep(1000);

                    var pkt = listener.GetPackets();
                    foreach (var p in pkt)
                    {
                        Console.WriteLine($"{p.Data} {p.Sender}");
                        Assert.AreEqual(TestData, p.Data);
                    }

                    Assert.AreEqual(1, pkt.Length);
                }
        }
        public async Task OneSendOneRecieve()
        {
            var wasRecieved = false;
            var reciever    = new UdpReciever <TestMessage>((value) => { wasRecieved = true; });

            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            await sender.Send(new TestMessage());

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));

            while (!wasRecieved)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.IsTrue(wasRecieved);
        }
        public async Task EntireMessageReceived()
        {
            var expected = new TestMessage()
            {
                Text = "Some text goes here",
                Bit = false,
                Number = 1245423534
            };

            TestMessage actual = null;

            var reciever = new UdpReciever<TestMessage>((value) => { actual = value; });
            reciever.Start();
            await Task.Delay(20);

            var sender = new UdpBroadcaster();

            await sender.Send(expected);

            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
            while (actual == null)
            {
                cts.Token.ThrowIfCancellationRequested();
                await Task.Delay(10, cts.Token);
            }

            reciever.Stop();

            Assert.AreEqual(expected, actual);
        }
Exemple #12
0
        public void Main()
        {
            visualizer = new DataVisualizer();
            log        = new Logger();

            //Showing Splash Screen
            splash = new SplashScreen();
            splash.Show();

            //Loading configuration
            splash.ShowConfLoadingSplashScreen();
            configuration = Configuration.LoadConfiguration();
            if (configuration is null)
            {
                ShowErrorMessage("Unable to load the configuration...\nExiting.");
                Environment.Exit(0);
                return;
            }
            ESPManager.Initialize(configuration.Devices);

            //Testing Database connection
            splash.ShowDBConneLoadingSplashScreen();
            DatabaseConnection dbConnection = new DatabaseConnection();

            if (dbConnection.TestConnection() == false) //not connected after 3 tries
            {
                ShowErrorMessage("Unable to connect to Database...\nExiting.");
                Environment.Exit(0);
                return;
            }

            //Connecting to Devices
            splash.ShowDeviceAwaitingSplashScreen();
            broadcasterTokenS = new CancellationTokenSource();
            UdpBroadcaster.Start(broadcasterTokenS.Token);
            dataCollector = new DataCollector();
            dataCollector.Initialize();
            if (dataCollector.Initialized is false)
            {
                ShowErrorMessage("Unable to initialize devices...\nExiting.");
                Environment.Exit(0);
                return;
            }

            //Setting up the notification icon
            notifyIcon = new System.Windows.Forms.NotifyIcon();
            Stream iconStream = Assembly.GetAssembly(typeof(Core.Controls.MessageBox)).GetManifestResourceStream("Core.Resources.icon.ico");

            notifyIcon.Icon    = new System.Drawing.Icon(iconStream);
            notifyIcon.Visible = true;
            notifyIcon.Click  += NotifyIcon_Click;
            toast = new ToastMenu();
            toast.MouseDoubleClick += Toast_MouseDoubleClick;
            toast.Deactivated      += MenuFlyout_Deactivated;
            toast.ExitCLicked      += Exit;
            toast.ShowGraphClicked += Toast_ShowGraphClicked;
            toast.ShowLogClicked   += Toast_ShowLogClicked;

            //starting data collection

            ShowMessage("Starting data collection");
            dataCollector.StartDataCollection();

            //Opening visualizer
            splash.Close();
        }