public void StopSelectedBoatDataRefreshTask() { if (SelectedBoatCancellationTokenSource != null) { SelectedBoatCancellationTokenSource.Cancel(); NmeaServer.Stop(); MessageHub.PublishAsync(new BoatDataServiceStatusChanged(Global.Instance, false)); } }
public async Task All_Registered_Message_Handler_Services_Are_Invoked_For_Each_Published_Message() { IMessageHandler <TestMessage> testMessageHandler1 = A.Fake <IMessageHandler <TestMessage> >(); IMessageHandler <TestMessage> testMessageHandler2 = A.Fake <IMessageHandler <TestMessage> >(); IServiceProvider services = A.Fake <IServiceProvider>(); A.CallTo(() => services.GetService(typeof(IEnumerable <IMessageHandler <TestMessage> >))).Returns(new IMessageHandler <TestMessage>[] { testMessageHandler1, testMessageHandler2 }); IMessageHub hub = new MessageHub(services); await hub.PublishAsync(new TestMessage { Id = 123 }); A.CallTo(() => testMessageHandler1.HandleAsync(A <TestMessage> .That.Matches(msg => msg.Id == 123))).MustHaveHappenedOnceExactly(); A.CallTo(() => testMessageHandler2.HandleAsync(A <TestMessage> .That.Matches(msg => msg.Id == 123))).MustHaveHappenedOnceExactly(); }
public void LaunchSelectedBoatDataRefreshTask() { StopSelectedBoatDataRefreshTask(); if (SelectedBoatNumber != null) { SelectedBoatCancellationTokenSource = new CancellationTokenSource(); Tasks.RefreshSelectedBoat(SelectedBoatCancellationTokenSource.Token); NmeaServer.Start(); TimeSpan t = TimeSpan.FromMilliseconds(Conf.REQUEST_RATE); string humanReadableRate = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", t.Hours, t.Minutes, t.Seconds, t.Milliseconds); MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("RequestRateInformation")}{humanReadableRate}"))); MessageHub.PublishAsync(new BoatDataServiceStatusChanged(Global.Instance, true)); } }
public async Task <FollowResponseMessage> Follow(string userId) { MessageHub.PublishAsync(new BeforeFollowEvent(this, userId)); dynamic syncMessage = new JObject(); syncMessage._uuid = _authSettings.Guid; syncMessage._uid = _authSettings.UserId; syncMessage._csrftoken = _authSettings.Token; syncMessage.user_id = userId; var content = SignedContent(syncMessage.ToString()); var followReponse = await WebApi.PostEntityAsync <FollowResponseMessage>(string.Format(PostFollow, userId), content); MessageHub.PublishAsync(new AfterFollowEvent(this, userId)); return(followReponse); }
public async Task <LikeResponseMessage> Like(Media media, CancellationToken token) { MessageHub.PublishAsync(new BeforeLikeEvent(this, media)); dynamic syncMessage = new JObject(); syncMessage._uuid = _authSettings.Guid; syncMessage._uid = _authSettings.UserId; syncMessage._csrftoken = _authSettings.Token; syncMessage.media_id = media.Id; var content = SignedContent(syncMessage.ToString()); var likeResponse = await Retry.Do(WebApi.PostEntityAsync <LikeResponseMessage>(string.Format(PostLike, media.Id), content, token), token); MessageHub.PublishAsync(new AfterLikeEvent(this, media)); return(likeResponse); }
public async Task When_publishing_using_async() { var hub = new MessageHub(); var queue = new ConcurrentQueue <string>(); hub.Subscribe <string>(async msg => { await Task.Delay(1); queue.Enqueue(msg); }); await hub.PublishAsync("A"); queue.Count.ShouldBe(1); queue.TryDequeue(out var receivedMsg).ShouldBeTrue(); receivedMsg.ShouldBe("A"); }
private void NmeaServer_OnNMEASent(string nmea) { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("NMEASent")} {Environment.NewLine}{nmea}", Color.Gray))); }
private void NmeaServer_OnServerError(Exception exception) { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("NMEAServerError")}{exception.Message}\r\n", Color.Red))); StopSelectedBoatDataRefreshTask(); }
private void NmeaServer_OnClientConnected(string address) { MessageHub.PublishAsync(new LogMessage(this, new LogText($"{Texts.GetString("ClientConnected")}{address}"))); NmeaServer.SendData(); }