コード例 #1
0
 /// <summary>
 /// Subscribes an observer that observes multiple eventIDs to one callback.
 /// </summary>
 /// <param name="cb"></param>
 /// <param name="eventIDs"></param>
 public void Subscribe(EventSubscriberCB cb, params EventIDType[] eventIDs)
 {
     foreach (EventIDType propertyAlias in eventIDs)
     {
         Subscribe(cb, propertyAlias);
     }
 }
コード例 #2
0
        /// <summary>
        /// Subscribes an observer that observes one eventID to a callback.
        /// </summary>
        /// <param name="eventID"></param>
        /// <param name="cb"></param>
        public void Subscribe(EventSubscriberCB cb, EventIDType eventID)
        {
            HashSet <EventSubscriberCB> subscriberCBSet;

            if (!_registeredSubscriberCBMap.TryGetValue(eventID, out subscriberCBSet))
            {
                subscriberCBSet = new HashSet <EventSubscriberCB>();
            }
            subscriberCBSet.Add(cb);
            _registeredSubscriberCBMap[eventID] = subscriberCBSet;
        }
コード例 #3
0
        /// <summary>
        /// Check if a observer's callback is subscribed with a eventID.
        /// </summary>
        /// <param name="cb"></param>
        /// <returns></returns>
        public bool IsSubscribedCB(EventSubscriberCB cb)
        {
            foreach (KeyValuePair <EventIDType, HashSet <EventSubscriberCB> > entry in _registeredSubscriberCBMap)
            {
                HashSet <EventSubscriberCB> cbSet = entry.Value;
                if (cbSet.Contains(cb))
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #4
0
        /// <summary>
        /// Unsubscribe a observer callback to an eventID. The pair must exist for this to be successful.
        /// </summary>
        /// <param name="eventID"></param>
        /// <param name="cb"></param>
        /// <returns>if the action succeed.</returns>
        public bool Unsubscribe(EventSubscriberCB cb, EventIDType eventID)
        {
            if (_registeredSubscriberCBMap.ContainsKey(eventID))
            {
                HashSet <EventSubscriberCB> subscriberCBSet = _registeredSubscriberCBMap[eventID];
                bool isSuccess = subscriberCBSet.Remove(cb);

                if (subscriberCBSet.Count == 0)
                {
                    _registeredSubscriberCBMap.Remove(eventID);
                }

                return(isSuccess);
            }

            return(false);
        }