Ejemplo n.º 1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="listener"></param>
 /// <param name="data"></param>
 public AsyncCQUpdateCallback(ICacheEventsListener listener, object key, QueryChangeType changeType, List <CQCallbackInfo> queries, OperationContext operationContext, EventContext eventContext)
 {
     _listener         = listener;
     _key              = key;
     _changeType       = changeType;
     _queries          = queries;
     _operationContext = operationContext;
     _eventContext     = eventContext;
 }
Ejemplo n.º 2
0
 internal CQCallbackTask(string queryId, string key, QueryChangeType changeType, string clientId, EventContext eventContext, EventDataFilter datafilter)
 {
     _queryId      = queryId;
     _key          = key;
     _changeType   = changeType;
     _clientID     = clientId;
     _eventContext = eventContext;
     _datafilter   = datafilter;
 }
Ejemplo n.º 3
0
        public EventDataFilter GetDataFilter(string serverUID, string clientID, QueryChangeType type)
        {
            HashVector      clientDF   = null;
            EventDataFilter datafilter = EventDataFilter.None;

            if (type == QueryChangeType.Add)
            {
                if (maxAddDFAgainstCID.ContainsKey(serverUID))
                {
                    clientDF = maxAddDFAgainstCID[serverUID] as HashVector;
                    if (clientDF.ContainsKey(clientID))
                    {
                        datafilter = (EventDataFilter)clientDF[clientID];
                    }
                    return(datafilter);
                }
                else
                {
                    return(EventDataFilter.None);
                }
            }
            else if (type == QueryChangeType.Update)
            {
                if (maxUpdateDFAgainstCID.ContainsKey(serverUID))
                {
                    clientDF = maxUpdateDFAgainstCID[serverUID] as HashVector;

                    if (clientDF.ContainsKey(clientID))
                    {
                        datafilter = (EventDataFilter)clientDF[clientID];
                    }
                    return(datafilter);
                }
                else
                {
                    return(EventDataFilter.None);
                }
            }
            else
            {
                if (maxRemoveDFAgainstCID.ContainsKey(serverUID))
                {
                    clientDF = maxRemoveDFAgainstCID[serverUID] as HashVector;

                    if (clientDF.ContainsKey(clientID))
                    {
                        datafilter = (EventDataFilter)clientDF[clientID];
                    }
                    return(datafilter);
                }
                else
                {
                    return(EventDataFilter.None);
                }
            }
        }
Ejemplo n.º 4
0
        public void Deserialize(Runtime.Serialization.IO.CompactReader reader)
        {
            _eventCounter     = reader.ReadInt32();
            _eventUniqueId    = (string)reader.ReadObject();
            _operationCounter = reader.ReadInt64();
            _eventType        = (EventType)reader.ReadInt32();

            _queryChangeType = (Queries.QueryChangeType)reader.ReadInt32();

            _queryId = (string)reader.ReadObject();
        }
Ejemplo n.º 5
0
 public CQCallBackTask(Broker parent, string key, string queryId, QueryChangeType changeType, bool notifyAsync,
                       EventCacheItem item, EventCacheItem oldItem, BitSet flag, EventDataFilter datafilter)
 {
     this._key         = key;
     this._parent      = parent;
     this._notifyAsync = notifyAsync;
     this._queryId     = queryId;
     this._changeType  = changeType;
     this._item        = item;
     this._oldItem     = oldItem;
     this._flag        = flag;
     this._datafilter  = datafilter;
 }
Ejemplo n.º 6
0
 public void OnActiveQueryChanged(string queryId, QueryChangeType changeType, string key, bool notifyAsync,
                                  EventCacheItem item, EventCacheItem oldItem, BitSet flag, EventDataFilter datafilter)
 {
     try
     {
         if (_listener != null)
         {
             _listener.OnActiveQueryChanged(queryId, changeType, key, notifyAsync, item, oldItem, flag,
                                            datafilter);
         }
     }
     catch
     {
     }
 }
Ejemplo n.º 7
0
        public virtual void OnActiveQueryChanged(string queryId, QueryChangeType changeType, string key,
                                                 bool notifyAsync, EventCacheItem item, EventCacheItem oldItem, BitSet flag, EventDataFilter datafilter)
        {
            if (item != null && item.Value != null)
            {
                item.Value = GetObject(item.Value, flag);
            }
            if (oldItem != null && oldItem.Value != null)
            {
                oldItem.Value = GetObject(oldItem.Value, flag);
            }

            ContinuousQueryManager.Notify(queryId, changeType, key, notifyAsync, item, oldItem, flag,
                                          this._parent.CacheImpl.Name, datafilter);
            if (_parent._perfStatsCollector != null)
            {
                _parent._perfStatsCollector.IncrementEventsProcessedPerSec();
            }
        }
Ejemplo n.º 8
0
        public static void Notify(string queryId, QueryChangeType changeType, string key, bool notifyAsync,
                                  EventCacheItem item, EventCacheItem oldItem, BitSet flag, string cacheName, EventDataFilter datafilter)
        {
            ContinuousQuery[] registeredQueries = null;
            lock (sync)
            {
                if (queries.Count == 0)
                {
                    return;
                }
                registeredQueries = new ContinuousQuery[queries.Count];
                queries.CopyTo(registeredQueries);
            }

            foreach (ContinuousQuery query in registeredQueries)
            {
                try
                {
                    if (query.ServerUniqueID.Equals(queryId))
                    {
                        if (changeType == QueryChangeType.Add)
                        {
                            query.FireCQEvents(key, Runtime.Events.EventType.ItemAdded, item, oldItem, notifyAsync,
                                               cacheName, flag, datafilter);
                        }
                        else if (changeType == QueryChangeType.Remove)
                        {
                            query.FireCQEvents(key, Runtime.Events.EventType.ItemRemoved, item, oldItem, notifyAsync,
                                               cacheName, flag, datafilter);
                        }
                        else
                        {
                            query.FireCQEvents(key, Runtime.Events.EventType.ItemUpdated, item, oldItem, notifyAsync,
                                               cacheName, flag, datafilter);
                        }
                    }
                }
                catch (Exception e)
                {
                }
            }
        }
Ejemplo n.º 9
0
 public bool AllowNotification(string queryId, string clientId, QueryChangeType changeType)
 {
     lock (this)
     {
         if (changeType == QueryChangeType.Add)
         {
             if (addNotifications.ContainsKey(queryId))
             {
                 HashVector clients = (HashVector)addNotifications[queryId];
                 if (clients != null && clients.ContainsKey(clientId))
                 {
                     return(true);
                 }
             }
         }
         else if (changeType == QueryChangeType.Update)
         {
             if (updateNotifications.ContainsKey(queryId))
             {
                 HashVector clients = updateNotifications[queryId] as HashVector;
                 if (clients != null && clients.ContainsKey(clientId))
                 {
                     return(true);
                 }
             }
         }
         else
         {
             if (removeNotifications.ContainsKey(queryId))
             {
                 HashVector clients = removeNotifications[queryId] as HashVector;
                 if (clients != null && clients.ContainsKey(clientId))
                 {
                     return(true);
                 }
             }
         }
         return(false);
     }
 }
Ejemplo n.º 10
0
 public void OnActiveQueryChanged(object key, QueryChangeType changeType, System.Collections.Generic.List <CQCallbackInfo> activeQueries, OperationContext operationContext, EventContext eventContext)
 {
 }
Ejemplo n.º 11
0
        internal static CQCallbackResponse GetCQCallbackResponse(EventContext eventContext, string key, string queryId, QueryChangeType changeType, EventDataFilter datafilter)
        {
            Alachisoft.NCache.Common.Protobuf.CQCallbackResponse CQCallbackResponse = new Alachisoft.NCache.Common.Protobuf.CQCallbackResponse();

            CQCallbackResponse.key        = key;
            CQCallbackResponse.queryId    = queryId;
            CQCallbackResponse.changeType = Convert.ToInt32(changeType);
            CQCallbackResponse.eventId    = new Common.Protobuf.EventId();
            if (eventContext != null)
            {
                CQCallbackResponse.eventId.eventUniqueId    = eventContext.EventID.EventUniqueID;
                CQCallbackResponse.eventId.operationCounter = eventContext.EventID.OperationCounter;
                CQCallbackResponse.eventId.eventCounter     = eventContext.EventID.EventCounter;

                CQCallbackResponse.eventId.item    = ConvertToEventItem(eventContext.Item, datafilter);
                CQCallbackResponse.eventId.oldItem = ConvertToEventItem(eventContext.OldItem, datafilter);
                CQCallbackResponse.datafilter      = (int)datafilter;
            }
            return(CQCallbackResponse);
        }