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); }
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); } }
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); }
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); }
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(); }