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();
        }
Exemplo n.º 2
0
 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");
        }