public async Task Subscribe_FiltersOnObserverGenericType() { var eventManager = new MobileServiceEventManager(); var testEvent = new TestEvent <bool>(false); var mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false); var mre = new ManualResetEventSlim(); var observer = new MobileServiceEventObserver <TestEvent <bool> >(e => { e.Payload = true; mre.Set(); }); IDisposable testEventSubscription = eventManager.Subscribe(observer); await eventManager.PublishAsync(testEvent); bool eventSet = mre.Wait(500); Assert.True(eventSet); Assert.True(testEvent.Payload, "Test event was not handled"); mre.Reset(); await eventManager.PublishAsync(mobileServiceEvent); eventSet = mre.Wait(500); Assert.False(eventSet); Assert.False(mobileServiceEvent.Payload); testEventSubscription.Dispose(); }
private void StatusObserver(MobileServiceEvent obj) { // Refresh the UI if a job was edited on the detail page if (obj.Name == "JobChanged") { Device.BeginInvokeOnMainThread(async() => { await RefreshAsync(); }); } }
private void DownloadStatusObserver(MobileServiceEvent obj) { var image = Images.Where(x => x.Id == obj.Name).FirstOrDefault(); Debug.WriteLine($"Image download event: {image?.Id}"); if (image != null) { image.ImageLoaded = true; } }
public void Subscribe_FiltersOnGenericType() { var eventManager = new MobileServiceEventManager(); var testEvent = new TestEvent <bool>(false); var mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false); IDisposable testEventSubscription = eventManager.Subscribe <TestEvent <bool> >(e => e.Payload = true); eventManager.PublishAsync(testEvent).Wait(1000); eventManager.PublishAsync(mobileServiceEvent).Wait(1000); Assert.True(testEvent.Payload, "Test event was not handled"); Assert.False(mobileServiceEvent.Payload, "Mobile service event was not filtered"); testEventSubscription.Dispose(); }
public void Subscribe_OnSubscriptionHandler_Succeeds() { var eventManager = new MobileServiceEventManager(); var mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false); bool eventHandled = false; IDisposable innerSubscription = null; IDisposable outerSubscription = eventManager .Subscribe <IMobileServiceEvent>(e => innerSubscription = eventManager.Subscribe <IMobileServiceEvent>(b => eventHandled = true)); bool result = eventManager.PublishAsync(mobileServiceEvent).Wait(1000); Assert.True(result, "Subscribe failed"); outerSubscription.Dispose(); eventManager.PublishAsync(mobileServiceEvent).Wait(1000); Assert.True(eventHandled, "Subscribe failed"); }