Inheritance: MonoBehaviour
Esempio n. 1
0
        /// <summary>
        /// Removes the subscriber from the list of subscribers for the associated event type.
        /// </summary>
        /// <typeparam name="TEvent">The type of the event.</typeparam>
        /// <param name="subscriber">The subscriber to remove.</param>
        internal void Remove <TEvent>(EventSubscriber subscriber)
            where TEvent : EventBase
        {
            var eventType = typeof(TEvent).Name;

            Remove(eventType, subscriber);
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            INode node = NodeFactory.Default;

            node.Loger.Type = LogType.ALL;
            node.AddLogHandler(new SmartRoute.ConsoleLogHandler(LogType.ALL));
            node.Open();
            EventSubscriber henry = node.Register <EventSubscriber>("henry");

            henry.Register <User>(OnUser);
            henry.Register <Employee>(OnEmployees);

            node.SubscriberRegisted = (n, s) =>
            {
                if (s.Name == "ken")
                {
                    // System.Threading.ThreadPool.QueueUserWorkItem(ToKen, henry);
                }
            };

            while (true)
            {
                //System.Text.StringBuilder sb = new System.Text.StringBuilder();
                //foreach (ISubscriber item in node.GetLocalSubscriber())
                //    sb.Append(item.ToString() + ',');
                //foreach (ISubscriber item in node.GetRemoteSubscriber())
                //    sb.Append(item.ToString() + ',');
                //node.Loger.Process(LogType.INFO, sb.ToString());
                // Console.WriteLine(mCount);
                System.Threading.Thread.Sleep(1000);
            }
            Console.Read();
        }
Esempio n. 3
0
        public void WhenSourceEventRaised_ThenCollectedSubscriberIsNotNotified()
        {
            var source = new EventSource();
            var publisher = new EventPublisher(source);
            var subscriber = new EventSubscriber();

            var subscription = publisher.PropertyChanged.Subscribe(subscriber.OnChanged);

            try
            {
                subscriber = null;
                subscription.Dispose();
                GC.Collect();
                GC.WaitForFullGCApproach(-1);
                GC.WaitForFullGCComplete(-1);
                GC.WaitForPendingFinalizers();

                source.RaisePropertyChanged("Foo");

                Assert.Equal(0, EventSubscriber.ChangedProperties.Count);

            }
            finally
            {
                //subscription.Dispose();
            }
        }
Esempio n. 4
0
        public bool Unsubscribe(object source, string type, EventSubscriber subscriber)
        {
            EventFilter filter;

            CreateFilter(source, type, out filter, false);
            return(Unsubscribe(ref filter, subscriber));
        }
Esempio n. 5
0
        public void WhenSourceEventRaised_ThenCollectedSubscriberIsNotNotified()
        {
            var source     = new EventSource();
            var publisher  = new EventPublisher(source);
            var subscriber = new EventSubscriber();

            var subscription = publisher.PropertyChanged.Subscribe(subscriber.OnChanged);

            try
            {
                subscriber = null;
                subscription.Dispose();
                GC.Collect();
                GC.WaitForFullGCApproach(-1);
                GC.WaitForFullGCComplete(-1);
                GC.WaitForPendingFinalizers();

                source.RaisePropertyChanged("Foo");

                Assert.Equal(0, EventSubscriber.ChangedProperties.Count);
            }
            finally
            {
                //subscription.Dispose();
            }
        }
Esempio n. 6
0
        public static void Main(string[] args)
        {
            INode node = NodeFactory.Default;

            node.Loger.Type = LogType.ALL;
            node.AddLogHandler(new SmartRoute.ConsoleLogHandler(LogType.ALL));
            node.Open();
            EventSubscriber ken = node.Register <EventSubscriber>("ken");

            ken.Register <User>(OnUser);
            ken.Register <Employee>(OnEmployees);
            node.SubscriberRegisted = (n, s) =>
            {
                if (s.Name == "henry")
                {
                    ken.Publish("henry", Employee.GetEmployee());
                }
            };

            while (true)
            {
                Console.WriteLine(mCount);
                System.Threading.Thread.Sleep(1000);
            }
            Console.Read();
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            INode node = NodeFactory.Default;

            node.Loger.Type = LogType.ALL;
            node.AddLogHandler(new ConsoleLogHandler(LogType.ALL));
            node.Open();
            EventSubscriber ken = node.Register <EventSubscriber>("ken");

            node.SubscriberRegisted += (n, s) =>
            {
                if (s.Name == "henry")
                {
                    System.Threading.ThreadPool.QueueUserWorkItem(o =>
                    {
                        while (true)
                        {
                            Employee result = ken.Publish <Employee>("henry", Employee.GetEmployee());
                            if (result == null)
                            {
                                throw new Exception("error");
                            }
                            System.Threading.Interlocked.Increment(ref mCount);
                        }
                    });
                }
            };
            while (true)
            {
                Console.WriteLine("{0}/秒|{1}", mCount - mLastCount, mCount);
                mLastCount = mCount;
                System.Threading.Thread.Sleep(1000);
            }
            Console.Read();
        }
Esempio n. 8
0
        public IActionResult Delete(int id)
        {
            EventSubscriber es = _subscriptionService.GetSubscription(id);

            if (es == null)
            {
                var result = new
                {
                    status  = "error",
                    code    = "1000",
                    message = "Subscription with such 'id' is not exist!"
                };
                var error = JsonConvert.SerializeObject(result, _serializerSettings);
                return(new OkObjectResult(error));
            }
            var status = _subscriptionService.DeleteSubscriptionAsync(es);

            if (!status)
            {
                return(new StatusCodeResult(500));
            }
            var response = new
            {
                status  = "success",
                code    = "200",
                message = "Ok"
            };
            var json = JsonConvert.SerializeObject(response, _serializerSettings);

            return(new OkObjectResult(json));
        }
Esempio n. 9
0
 public void Main()
 {
   this.subscriber = new EventSubscriber("localhost:5000");
   //Run(this);
   OnStart(null);
   ReadLine();
 }
        private WeakReference CreateEventSubscriber(EventPublisher publisher)
        {
            var subscriber = new EventSubscriber(publisher);

            Assert.AreEqual(1, publisher.Subscribers);
            return(new WeakReference(subscriber));
        }
Esempio n. 11
0
        public void PublishAllEventsAndSubscribeToSome()
        {
            IEventRegistry registry = new EventRegistry();
            SimpleClient   client   = new SimpleClient("PublishAllEventsAndSubscribeToSome");

            registry.PublishEvents(client);
            EventSubscriber      sub  = new EventSubscriber();
            OtherEventSubscriber sub2 = new OtherEventSubscriber();

            Assert.IsFalse(sub.EventRaised, "Event raised");
            Assert.IsFalse(sub2.EventRaised, "Event raised");

            client.ClientMethodThatTriggersEvent();
            Assert.IsFalse(sub.EventRaised, "Event raised");

            client.ClientMethodThatTriggersEvent3();
            Assert.IsFalse(sub2.EventRaised, "Event raised");

            registry.Subscribe(sub);
            registry.Subscribe(sub2);
            client.ClientMethodThatTriggersEvent();
            client.ClientMethodThatTriggersEvent3();
            Assert.IsTrue(sub.EventRaised, "Event Not Raised");
            Assert.IsTrue(sub2.EventRaised, "Event Not Raised");
        }
Esempio n. 12
0
        public void TestInitialize()
        {
            fixture = new Fixture().Customize(new AutoNSubstituteCustomization());
            inversionOfControlContainer = fixture.Freeze <IServiceProvider>();
            configuration             = fixture.Freeze <IEventSubscriberConfiguration>();
            subscriptionClientFactory = fixture.Freeze <ISubscriptionClientFactory>();
            logger = fixture.Freeze <ILogger>();

            IList <SubscriptionInfo> subscriptionsConfig = new List <SubscriptionInfo>
            {
                new SubscriptionInfo(
                    typeof(FakeEvent1),
                    typeof(FakeEvent1Handler),
                    TopicName1,
                    Subscriptioname1,
                    RetryPolicyBase.DefaultRetry),
                new SubscriptionInfo(
                    typeof(FakeEvent2),
                    typeof(FakeEvent2Handler),
                    TopicName2,
                    Subscriptioname2,
                    RetryPolicyBase.DefaultRetry)
            };

            configuration.ServiceBusConnectionString.Returns(fixture.Create <string>());
            configuration.Subscriptions.Returns(subscriptionsConfig);

            sut = fixture.Create <EventSubscriber>();
        }
Esempio n. 13
0
    private void NotifySubscribers(AbstractEvent eventData)
    {
        List <EventSubscriber> subscribers = gameEvents[eventData.type];

        for (int cnt = subscribers.Count - 1; cnt >= 0; cnt--)      // Trigger buffs, then argument effects, then debuffs
        // This check is LITERALLY for only one status effect - Resonance.
        // Because Resonance will remove all other Resonance subscribers during its own NotifyOfEvent, and the original notification happens here...
        // If there were 5 resonance listeners, the subscribers.count would go from 5->0 in the first iteration, but the for loop would still iterate 4 more times.
        // This causes an array-out-of-index error. Ideally, this check prevents that.
        // I don't want to have to keep doing hacks like this as it's gonna come back to bite me, but it works.
        // TODO: Rework Resonance implementation to prevent having to use this
        {
            if (cnt >= subscribers.Count)
            {
                continue;
            }
            EventSubscriber subscriber = subscribers[cnt];
            subscriber.NotifyOfEvent(eventData);
        }

        // update ui
        List <ITriggerOnEvent> UISubscribers = UIEvents[eventData.type];

        foreach (ITriggerOnEvent subscriber in UISubscribers)
        {
            subscriber.TriggerOnEvent(eventData);
        }
    }
Esempio n. 14
0
        public void PublishAllEventsSubscribeToNamedEvents()
        {
            IEventRegistry registry = new EventRegistry();
            SimpleClient   client   = new SimpleClient("PublishAllEvents");
            SimpleClient2  client2  = new SimpleClient2();

            registry.PublishEvents(client);
            registry.PublishEvents(client2);

            EventSubscriber sub  = new EventSubscriber();
            EventSubscriber sub2 = new EventSubscriber();

            Assert.IsFalse(sub.EventRaised, "Event raised");
            Assert.IsFalse(sub2.EventRaised, "Event raised");

            client.ClientMethodThatTriggersEvent();
            client2.ClientMethodThatTriggersEvent();
            Assert.IsFalse(sub.EventRaised, "Event raised");
            Assert.IsFalse(sub2.EventRaised, "Event raised");

            registry.Subscribe(sub, typeof(SimpleClient));
            registry.Subscribe(sub2, typeof(SimpleClient2));

            client.ClientMethodThatTriggersEvent();
            Assert.IsTrue(sub.EventRaised, "Event Not Raised");
            Assert.IsFalse(sub2.EventRaised, "Event raised");

            client2.ClientMethodThatTriggersEvent();
            Assert.IsTrue(sub.EventRaised, "Event Not Raised");
            Assert.IsTrue(sub2.EventRaised, "Event Not Raised");
        }
        public void EventSubscriber_WaitForFutureEvents()
        {
            var loopback   = new Loopback();
            var subscriber = new EventSubscriber(loopback);

            Task.Delay(1).ContinueWith(t => loopback.Raise());
            VerifyResults(subscriber);
        }
        public void EventSubscriber_WaitForPastEvents()
        {
            var loopback   = new Loopback();
            var subscriber = new EventSubscriber(loopback);

            loopback.Raise();
            VerifyResults(subscriber);
        }
 public DMonitoCenter(int timeout = 10000)
 {
     Node    = SmartRoute.NodeFactory.Default;
     TimeOut = timeout;
     mLockEventSubscriber = Node.Register <EventSubscriber>(SMART_DLOCKCENTER);
     mLockEventSubscriber.Register <Protocols.EnterKey>(OnEnter);
     mLockEventSubscriber.Register <Protocols.FreeKey>(OnFree);
 }
 public DMonitoCenter(INode node, int timeout = 10000)
 {
     TimeOut = timeout;
     mLockEventSubscriber = node.Register <EventSubscriber>(SMART_DLOCKCENTER);
     mLockEventSubscriber.Register <Protocols.EnterKey>(OnEnter);
     mLockEventSubscriber.Register <Protocols.FreeKey>(OnFree);
     Node = node;
 }
        static void VerifyResults(EventSubscriber subscriber)
        {
            var result = subscriber.WaitForEvent();

            Assert.IsTrue(result.Name == nameof(Loopback.NoParams) && result.Params.Length == 0);
            result = subscriber.WaitForEvent();
            Assert.IsTrue(result.Name == nameof(Loopback.TwoParams) && result.Params.Length == 2 && (string)result.Params[0] == "A" && (int)result.Params[1] == 1);
        }
Esempio n. 20
0
        protected override async Task OnStart()
        {
            _caller = await CreateMethodCaller <Integer, Integer>(":testmethod");

            _sub = await SubscribeEvent <String>(":stringsforfun");

            _sub.OnReceived += _sub_OnReceived;
        }
Esempio n. 21
0
 public void UnsubscribeFromAllEvents(EventSubscriber subscriber)
 {
     foreach (EventType type in subscriber.eventsSubscribedTo)
     {
         EventSystemManager.Instance.UnsubscribeFromEvent(subscriber, type);
     }
     subscriber.eventsSubscribedTo.Clear();
 }
        protected void Subscribe(int id, EventHandler <GameEventArgs> handler)
        {
            if (eventSubscriber == null)
            {
                eventSubscriber = EventSubscriber.Create(this);
            }

            eventSubscriber.Subscribe(id, handler);
        }
Esempio n. 23
0
 private void UnsubscribeFromEvent(EventSubscriber subscriber, EventType type)
 {
     // for (int i = gameEvents[type].Count - 1; i >= 0; i--){
     //     if (gameEvents[type][i].INSTANCE_ID == subscriber.INSTANCE_ID){
     //         gameEvents[type].RemoveAt(i);
     //     }
     // }
     gameEvents[type].RemoveAll(sub => sub.Equals(subscriber));
 }
Esempio n. 24
0
        private void AddEventSubscriber(EventSubscriber eventSubscriber)
        {
            eventSubscriber.EventRaised += EventSubscriberOnEventRaised;

            foreach (var availableEvent in eventSubscriber.AvailableEvents)
            {
                _events.TryAdd(availableEvent.EventId, availableEvent);
            }
        }
Esempio n. 25
0
        protected async Task UnsubscribeEvent <TEvent>(EventSubscriber <TEvent> subscr)
        {
            await CallControlMethod <Deregister, Empty>("events.unsubscribe", new Deregister()
            {
                EndPoint = subscr.Endpoint.ToString()
            });

            _eventHandlers.Remove(subscr);
        }
Esempio n. 26
0
        /// <summary>
        /// Processes the messages received from the event client.
        /// </summary>
        /// <param name="message">Message received from the client.</param>
        private void ProcessMessage(string message)
        {
            // Turn the message into an xml document.
            XmlDocument document = new XmlDocument();

            document.LoadXml(message);

            // Find out what type of request message was sent.
            if (IProcEventRegistration.IsValidRequest(document))
            {
                IProcEventRegistration er = new IProcEventRegistration(document);

                // Make sure that the host address is loopback for now.
                if (!IPAddress.IsLoopback(er.RemoteAddress))
                {
                    log.Error(String.Format("An invalid address was specified in the registration message {0}.", er.RemoteAddress));
                    eventSocket.Shutdown(SocketShutdown.Both);
                    eventSocket.Close();
                    subscriberTable.Remove(port);
                }

                // See if the client is registering or deregistering.
                if (er.Registering)
                {
                    // Create the event subscribers.
                    simiasNodeEventSubscriber   = new EventSubscriber();
                    simiasSyncEventSubscriber   = new SyncEventSubscriber();
                    simiasNotifyEventSubscriber = new NotifyEventSubscriber();
                    log.Debug("Client {0}:{1} has registered for interprocess events", er.RemoteAddress, er.Port);
                }
                else
                {
                    DisposeSubscribers();
                    log.Debug("Client {0}:{1} has deregistered for interprocess events", er.RemoteAddress, er.Port);
                }
            }
            else if (IProcEventListener.IsValidRequest(document))
            {
                // Make sure that registration has occurred.
                if ((simiasNodeEventSubscriber == null) ||
                    (simiasSyncEventSubscriber == null) ||
                    (simiasNodeEventSubscriber == null))
                {
                    log.Error("Client must be registered before subscribing for events.");
                    throw new SimiasException("Client must be registered before subscribing for events.");
                }

                IProcEventListener el = new IProcEventListener(document);
                ProcessEventListener(el);
            }
            else
            {
                log.Debug("{0} : An invalid request message was received.", port);
                throw new SimiasException("An invalid request message was received.");
            }
        }
Esempio n. 27
0
        public override bool Initialize(ref string errMsg)
        {
            InitResult = InitResult.InitFail;

            bool configured = ConfigMgr.Contains(typeof(IPSSetting).FullName);

            Setting = ConfigMgr.GetSetting(typeof(IPSSetting), true) as IPSSetting;
            if (Setting == null)
            {
                Log.Error("IPS Setting can not be instantiated");
                return(false);
            }

            if (!configured)
            {
                Log.Error("IPS subsystem has not been configured");
                return(true);
            }

            InitializeDirectory();

            if (!string.IsNullOrEmpty(Setting.ServerAddr))
            {
                _remoteProc = new IPSRemoteProc(Setting.ServerAddr, Setting.InstructPort);
            }

            if (!InitializeDevices())
            {
                return(false);
            }

            if (!InitializeMaps())
            {
                return(false);
            }

            _eventSubscriber                       = new EventSubscriber();
            _eventSubscriber.ServerAddr            = Setting.ServerAddr;
            _eventSubscriber.ServrtPort            = Setting.EventPort;
            _eventSubscriber.LocationTag           = Setting.EventTag;
            _eventSubscriber.OnLocationChanged    += OnLocationUpdate;
            _eventSubscriber.OnCameraStateChanged += OnCameraStateChanged;
            _eventSubscriber.StartNidsEvent();

            if (Setting.IsLDAPEnabled)
            {
                _ldapClient                      = new LDAPClient(Setting.LDAPServerAddr);
                _ldapClient.Port                 = Setting.LDAPPort;
                _ldapClient.User                 = Setting.LDAPUser;
                _ldapClient.Password             = Setting.LDAPPassowrd;
                _ldapClient.PortraitDir          = PortraitDir;
                _ldapClient.OnPortaitDownloaded += OnPortraitDownloaded;
            }

            return(true);
        }
        public bool IsSubscriber(Event _event, AppUser user)
        {
            EventSubscriber subscription = _event.Subscribers.FirstOrDefault(a => a.Subscriber.Id == user.Id);

            if (subscription != null)
            {
                return(true);
            }
            return(false);
        }
Esempio n. 29
0
        private static void ToKen(object state)
        {
            EventSubscriber henry = (EventSubscriber)state;

            while (true)
            {
                henry.Publish("ken", Employee.GetEmployee());
                System.Threading.Thread.Sleep(1);
            }
        }
Esempio n. 30
0
        /// <summary>
        ///     Register private events with a session id
        /// </summary>
        /// <typeparam name="TEventInterface">
        ///     The event contract interface which defines the events. Please note that all events
        ///     must be an <see cref="EventHandler" /> or <see cref="EventHandler{TEventArgs}" />.
        /// </typeparam>
        /// <param name="eventProvider">The instance of <see cref="TEventInterface" /> which calls the events</param>
        /// <returns>Return the session id</returns>
        public uint RegisterPrivateEvents <TEventInterface>(TEventInterface eventProvider)
        {
            var id = (uint)Interlocked.Increment(ref _eventIdCounter);

            var eventSubscriber = new EventSubscriber(eventProvider, typeof(TEventInterface), id);

            AddEventSubscriber(eventSubscriber);

            return(id);
        }
Esempio n. 31
0
        /// <summary>
        /// Look through and return all models in scope for event publishers with the specified event name.
        /// If eventName is null then all will be returned.
        /// </summary>
        /// <param name="subscriber">The event subscriber to find publishers for</param>
        /// <returns>The list of matching event publishers</returns>
        private static List <EventPublisher> FindEventPublishers(EventSubscriber subscriber)
        {
            List <EventPublisher> publishers = new List <EventPublisher>();

            foreach (Model model in Apsim.FindAll(subscriber.Model))
            {
                publishers.AddRange(FindEventPublishers(subscriber.Name, model));
            }
            return(publishers);
        }
Esempio n. 32
0
        public void WhenSourceEventRaised_ThenSubscriberIsNotified()
        {
            var source = new EventSource();
            var publisher = new EventPublisher(source);

            var subscriber = new EventSubscriber();

            publisher.PropertyChanged.Subscribe(subscriber.OnChanged);

            Assert.Equal(0, EventSubscriber.ChangedProperties.Count);

            source.RaisePropertyChanged("Foo");

            Assert.Equal(1, EventSubscriber.ChangedProperties.Count);
            Assert.Equal("Foo", EventSubscriber.ChangedProperties[0]);
        }
Esempio n. 33
0
		public EventWiringDescriptor(string eventName, EventSubscriber[] subscribers)
		{
			this.eventName = eventName;
			this.subscribers = subscribers;
		}
Esempio n. 34
0
 /// <summary>
 /// Look through and return all models in scope for event publishers with the specified event name.
 /// If eventName is null then all will be returned.
 /// </summary>
 /// <param name="subscriber">The event subscriber to find publishers for</param>
 /// <returns>The list of matching event publishers</returns>
 private static List<EventPublisher> FindEventPublishers(EventSubscriber subscriber)
 {
     List<EventPublisher> publishers = new List<EventPublisher>();
     foreach (Model model in Apsim.FindAll(subscriber.Model))
         publishers.AddRange(FindEventPublishers(subscriber.Name, model));
     return publishers;
 }
 private WeakReference CreateEventSubscriber(EventPublisher publisher)
 {
     var subscriber = new EventSubscriber(publisher);
     Assert.AreEqual(1, publisher.Subscribers);
     return new WeakReference(subscriber);
 }
Esempio n. 36
0
		private string EventHandlerMethodName(EventSubscriber eventSubscriber)
		{
			return eventSubscriber.EventHandler ?? ("On" + eventName);
		}
Esempio n. 37
0
        public void TestUnsubscribe()
        {
            var trace = new List<string>();
            var sender = "Foo";

            var handlers = new EventSubscriber[] {
                (e) => trace.Add("a"),
                (e) => trace.Add("b"),
                (e) => trace.Add("c")
            };

            foreach (var handler in handlers)
                Bus.Subscribe(sender, "Test", handler);

            Bus.Unsubscribe(sender, "Test", handlers[1]);

            Bus.Broadcast(sender, "Test", null);
            Assert.AreEqual(new string[] { "c", "a" }, trace.ToArray());
        }
Esempio n. 38
0
        public void TestDisposeSubscription()
        {
            var trace = new List<string>();
            var sender = "Foo";

            var handlers = new EventSubscriber[] {
                (e) => trace.Add("a"),
                (e) => trace.Add("b"),
                (e) => trace.Add("c")
            };

            var subscriptions = (from handler in handlers select Bus.Subscribe(sender, "Test", handler)).ToArray();

            subscriptions[1].Dispose();

            Bus.Broadcast(sender, "Test", null);
            Assert.AreEqual(new string[] { "c", "a" }, trace.ToArray());
        }
Esempio n. 39
0
		public void PublishAllEventsAndSubscribeToSome()
		{
			IEventRegistry registry = new EventRegistry();
			SimpleClient client = new SimpleClient("PublishAllEventsAndSubscribeToSome");
			registry.PublishEvents(client);
			EventSubscriber sub = new EventSubscriber();
			OtherEventSubscriber sub2 = new OtherEventSubscriber();
			Assert.IsFalse(sub.EventRaised, "Event raised");
			Assert.IsFalse(sub2.EventRaised, "Event raised");

			client.ClientMethodThatTriggersEvent();
			Assert.IsFalse(sub.EventRaised, "Event raised");

			client.ClientMethodThatTriggersEvent3();
			Assert.IsFalse(sub2.EventRaised, "Event raised");

			registry.Subscribe(sub);
			registry.Subscribe(sub2);
			client.ClientMethodThatTriggersEvent();
			client.ClientMethodThatTriggersEvent3();
			Assert.IsTrue(sub.EventRaised, "Event Not Raised");
			Assert.IsTrue(sub2.EventRaised, "Event Not Raised");
		}
Esempio n. 40
0
		public void PublishAllEventsSubscribeToNamedEvents()
		{
			IEventRegistry registry = new EventRegistry();
			SimpleClient client = new SimpleClient("PublishAllEvents");
			SimpleClient2 client2 = new SimpleClient2();

			registry.PublishEvents(client);
			registry.PublishEvents(client2);

			EventSubscriber sub = new EventSubscriber();
			EventSubscriber sub2 = new EventSubscriber();

			Assert.IsFalse(sub.EventRaised, "Event raised");
			Assert.IsFalse(sub2.EventRaised, "Event raised");

			client.ClientMethodThatTriggersEvent();
			client2.ClientMethodThatTriggersEvent();
			Assert.IsFalse(sub.EventRaised, "Event raised");
			Assert.IsFalse(sub2.EventRaised, "Event raised");

			registry.Subscribe(sub, typeof (SimpleClient));
			registry.Subscribe(sub2, typeof (SimpleClient2));

			client.ClientMethodThatTriggersEvent();
			Assert.IsTrue(sub.EventRaised, "Event Not Raised");
			Assert.IsFalse(sub2.EventRaised, "Event raised");

			client2.ClientMethodThatTriggersEvent();
			Assert.IsTrue(sub.EventRaised, "Event Not Raised");
			Assert.IsTrue(sub2.EventRaised, "Event Not Raised");
		}
Esempio n. 41
0
        public void PublishAllEventsMultipleSubscribersAndUnsubscribe()
        {
            IEventRegistry registry = new EventRegistry();
            SimpleClient client = new SimpleClient("PublishAllEvents");
            registry.PublishEvents(client);
            EventSubscriber sub = new EventSubscriber();
            EventSubscriber sub2 = new EventSubscriber();
            registry.Subscribe(sub);
            registry.Subscribe(sub2);
            client.ClientMethodThatTriggersEvent();
            Assert.IsTrue(sub.EventRaised, "Event Not Raised");
            Assert.IsTrue(sub2.EventRaised, "Event Not Raised");
            Assert.AreEqual(1, sub.EventCount);
            Assert.AreEqual(1, sub2.EventCount);

            registry.Unsubscribe(sub2);
            client.ClientMethodThatTriggersEvent();
            Assert.AreEqual(2, sub.EventCount);
            Assert.AreEqual(1, sub2.EventCount);
        }
Esempio n. 42
0
		public void RespectsInheritance()
		{
			SimpleClient source = new SimpleClient("foo");

			IEventRegistry registry = new EventRegistry();
			registry.PublishEvents(source);

			EventSubscriber sub = new EventSubscriber();
			Assert.IsFalse(sub.EventRaised, "Event raised");

			source.ClientMethodThatTriggersEvent();
			Assert.IsFalse(sub.EventRaised, "Event raised");

			registry.Subscribe(sub, typeof(ISimpleClient));
			source.ClientMethodThatTriggersEvent();
			Assert.IsTrue(sub.EventRaised, "Event Not Raised");
		}