예제 #1
0
        //PROTOBUF
        private CommandInfo ParseCommand(Alachisoft.NCache.Common.Protobuf.Command command, ClientManager clientManager)
        {
            CommandInfo cmdInfo   = new CommandInfo();
            Hashtable   eventList = new Hashtable();

            Alachisoft.NCache.Common.Protobuf.SyncEventsCommand     syncEventsCommand = command.syncEventsCommand;
            List <Alachisoft.NCache.Common.Protobuf.EventIdCommand> eventIds          = syncEventsCommand.eventIds;

            Alachisoft.NCache.Caching.EventId cacheEventId = null;
            foreach (EventIdCommand eventId in eventIds)
            {
                cacheEventId = new Alachisoft.NCache.Caching.EventId();
                cacheEventId.EventUniqueID    = eventId.eventUniqueId;
                cacheEventId.EventCounter     = eventId.eventCounter;
                cacheEventId.OperationCounter = eventId.operationCounter;
                cacheEventId.EventType        = (Persistence.EventType)eventId.eventType;
                cacheEventId.QueryChangeType  = (Caching.Queries.QueryChangeType)eventId.queryChangeType;
                cacheEventId.QueryId          = eventId.queryId;

                if (String.IsNullOrEmpty(cacheEventId.QueryId))
                {
                    cacheEventId.QueryId = null;
                }
                // Need to assing querychnagetype and query id here

                eventList.Add(cacheEventId, null);
            }
            cmdInfo.EventsList = eventList;
            cmdInfo.RequestId  = syncEventsCommand.requestId.ToString();
            return(cmdInfo);
        }
예제 #2
0
        //PROTOBUF
        private CommandInfo ParseCommand(Alachisoft.NCache.Common.Protobuf.Command command, ClientManager clientManager)
        {
            CommandInfo cmdInfo   = new CommandInfo();
            Hashtable   eventList = new Hashtable();

            Alachisoft.NCache.Common.Protobuf.SyncEventsCommand     syncEventsCommand = command.syncEventsCommand;
            List <Alachisoft.NCache.Common.Protobuf.EventIdCommand> eventIds          = syncEventsCommand.eventIds;

            Alachisoft.NCache.Caching.EventId cacheEventId = null;
            foreach (EventIdCommand eventId in eventIds)
            {
                cacheEventId = new Alachisoft.NCache.Caching.EventId();
                cacheEventId.EventUniqueID    = eventId.eventUniqueId;
                cacheEventId.EventCounter     = eventId.eventCounter;
                cacheEventId.OperationCounter = eventId.operationCounter;
                cacheEventId.EventType        = (Persistence.EventType)eventId.eventType;
                eventList.Add(cacheEventId, null);
            }
            cmdInfo.EventsList = eventList;
            cmdInfo.RequestId  = syncEventsCommand.requestId.ToString();
            return(cmdInfo);
        }
예제 #3
0
        internal static Alachisoft.NCache.Caching.EventId ConvertToEventID(Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse eventItem, NCache.Persistence.EventType eventType)
        {
            Alachisoft.NCache.Caching.EventId eventId = eventId = new Alachisoft.NCache.Caching.EventId();

            switch (eventType)
            {
            case NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK:
                eventId.EventUniqueID    = eventItem.ItemUpdatedCallback.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.ItemUpdatedCallback.eventId.eventCounter;
                eventId.OperationCounter = eventItem.ItemUpdatedCallback.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK;
                break;


            case NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK:
                eventId.EventUniqueID    = eventItem.itemRemoveCallback.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.itemRemoveCallback.eventId.eventCounter;
                eventId.OperationCounter = eventItem.itemRemoveCallback.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK;
                break;
            }
            return(eventId);
        }
예제 #4
0
        internal static Alachisoft.NCache.Caching.EventId ConvertToEventID(Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse eventItem, NCache.Persistence.EventType eventType)
        {
            Alachisoft.NCache.Caching.EventId eventId = eventId = new Alachisoft.NCache.Caching.EventId();

            switch (eventType)
            {
                case NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK:
                    eventId.EventUniqueID = eventItem.ItemUpdatedCallback.eventId.eventUniqueId;
                    eventId.EventCounter = eventItem.ItemUpdatedCallback.eventId.eventCounter;
                    eventId.OperationCounter = eventItem.ItemUpdatedCallback.eventId.operationCounter;
                    eventId.EventType = NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK;
                    break;

                case NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK:
                    eventId.EventUniqueID = eventItem.itemRemoveCallback.eventId.eventUniqueId;
                    eventId.EventCounter = eventItem.itemRemoveCallback.eventId.eventCounter;
                    eventId.OperationCounter = eventItem.itemRemoveCallback.eventId.operationCounter;
                    eventId.EventType = NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK;
                    break;

            }
            return eventId;
        }
예제 #5
0
 public object Clone()
 {
     EventId ei = new EventId();
     lock (this)
     {
         ei._eventUniqueId = _eventUniqueId;
         ei._operationCounter = _operationCounter;
         ei._eventCounter = _eventCounter;
         ei._eventType = _eventType;
         ei._queryId = _queryId;
     }
     return ei;
 }
예제 #6
0
 public static EventId CreateEventId(OperationID opId)
 {
     EventId eventId = new EventId();
     if (opId != null)
     {
         eventId._eventUniqueId = opId.OperationId;
         eventId._operationCounter = opId.OpCounter;
     }
     return eventId;
 }
예제 #7
0
        internal static Alachisoft.NCache.Caching.EventId ConvertToEventID(
            Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse eventItem, NCache.Persistence.EventType eventType)
        {
            Alachisoft.NCache.Caching.EventId eventId = eventId = new Alachisoft.NCache.Caching.EventId();

            switch (eventType)
            {
            case NCache.Persistence.EventType.ITEM_ADDED_EVENT:
                eventId.EventUniqueID    = eventItem.itemAddedEvent.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.itemAddedEvent.eventId.eventCounter;
                eventId.OperationCounter = eventItem.itemAddedEvent.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_ADDED_EVENT;
                break;

            case NCache.Persistence.EventType.ITEM_UPDATED_EVENT:
                eventId.EventUniqueID    = eventItem.itemUpdatedEvent.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.itemUpdatedEvent.eventId.eventCounter;
                eventId.OperationCounter = eventItem.itemUpdatedEvent.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_UPDATED_EVENT;
                break;

            case NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK:
                eventId.EventUniqueID    = eventItem.ItemUpdatedCallback.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.ItemUpdatedCallback.eventId.eventCounter;
                eventId.OperationCounter = eventItem.ItemUpdatedCallback.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK;
                break;


            case NCache.Persistence.EventType.CQ_CALLBACK:
                eventId.EventUniqueID    = eventItem.CQCallback.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.CQCallback.eventId.eventCounter;
                eventId.OperationCounter = eventItem.CQCallback.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.CQ_CALLBACK;
                eventId.QueryChangeType  = (NCache.Caching.Queries.QueryChangeType)eventItem.CQCallback.changeType;
                eventId.QueryId          = eventItem.CQCallback.queryId;
                break;


            case NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK:
                eventId.EventUniqueID    = eventItem.itemRemoveCallback.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.itemRemoveCallback.eventId.eventCounter;
                eventId.OperationCounter = eventItem.itemRemoveCallback.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK;
                break;

            case NCache.Persistence.EventType.ITEM_REMOVED_EVENT:
                eventId.EventUniqueID    = eventItem.itemRemovedEvent.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.itemRemovedEvent.eventId.eventCounter;
                eventId.OperationCounter = eventItem.itemRemovedEvent.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.ITEM_REMOVED_EVENT;
                break;

            case NCache.Persistence.EventType.CACHE_CLEARED_EVENT:
                eventId.EventUniqueID    = eventItem.cacheClearedEvent.eventId.eventUniqueId;
                eventId.EventCounter     = eventItem.cacheClearedEvent.eventId.eventCounter;
                eventId.OperationCounter = eventItem.cacheClearedEvent.eventId.operationCounter;
                eventId.EventType        = NCache.Persistence.EventType.CACHE_CLEARED_EVENT;
                break;
            }

            return(eventId);
        }
예제 #8
0
        private void RaiseBulkEvent(object arg)
        {
            try
            {
                Alachisoft.NCache.Caching.EventId eventId;
                Address remoteServerAddress = null;
                if (arg == null || ((object[]) arg).Length != 2) return;
                remoteServerAddress = ((object[]) arg)[0] as Address;
                List<Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse> bulkEvents =
                    ((object[]) arg)[1] as List<Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse>;

                if (bulkEvents == null) return;

                foreach (Alachisoft.NCache.Common.Protobuf.BulkEventItemResponse eventItem in bulkEvents)
                {
                    try
                    {
                        if (_perfStatsColl2 != null)
                        {
                            _perfStatsColl2.IncrementEventsTriggeredPerSeconds();
                        }

                        eventId = new Alachisoft.NCache.Caching.EventId();

                        switch (eventItem.eventType)
                        {

                            case Common.Protobuf.BulkEventItemResponse.EventType.ITEM_UPDATED_CALLBACK:
                            {
                                eventId.EventUniqueID = eventItem.ItemUpdatedCallback.eventId.eventUniqueId;
                                eventId.EventCounter = eventItem.ItemUpdatedCallback.eventId.eventCounter;
                                eventId.OperationCounter = eventItem.ItemUpdatedCallback.eventId.operationCounter;
                                eventId.EventType = NCache.Persistence.EventType.ITEM_UPDATED_CALLBACK;

                                BitSet flag = new BitSet((byte) eventItem.ItemUpdatedCallback.flag);

                                EventCacheItem item =
                                    EventUtil.ConvertToEventEntry(eventItem.ItemUpdatedCallback.eventId.item);
                                EventCacheItem oldItem =
                                    EventUtil.ConvertToEventEntry(eventItem.ItemUpdatedCallback.eventId.oldItem);

                                if (_notifyAsync)
                                {
                                    if (_cache != null && _cache.AsyncEventHandler != null)
                                    {
                                        _cache.EventListener.OnCustomUpdateCallback(
                                            (Int16) eventItem.ItemUpdatedCallback.callbackId,
                                            eventItem.ItemUpdatedCallback.key, _notifyAsync, item, oldItem, flag,
                                            (EventDataFilter) eventItem.ItemUpdatedCallback.dataFilter);
                                    }
                                }
                                else
                                    _eventProcessor.Enqueue(new ItemUpdateCallbackTask(this,
                                        eventItem.ItemUpdatedCallback.key,
                                        (Int16) eventItem.ItemUpdatedCallback.callbackId, _notifyAsync, item, oldItem,
                                        flag, (EventDataFilter) eventItem.ItemUpdatedCallback.dataFilter));
                            }
                                break;

                            case Common.Protobuf.BulkEventItemResponse.EventType.ITEM_REMOVED_CALLBACK:
                            {
                                CompressedValueEntry flagValueEntry = new CompressedValueEntry();
                                flagValueEntry.Flag = new BitSet((byte) eventItem.itemRemoveCallback.flag);

                                EventCacheItem item =
                                    EventUtil.ConvertToEventEntry(eventItem.itemRemoveCallback.eventId.item);
                                byte[] value = null;
                                if (item != null && eventItem.itemRemoveCallback.value != null &&
                                    eventItem.itemRemoveCallback.value.Count > 0)
                                {
                                    UserBinaryObject ubObject =
                                        UserBinaryObject.CreateUserBinaryObject(
                                            eventItem.itemRemoveCallback.value.ToArray());
                                    value = ubObject.GetFullObject();
                                    if (item != null)
                                    {
                                        item.Value = value;
                                    }
                                }

                                eventId.EventUniqueID = eventItem.itemRemoveCallback.eventId.eventUniqueId;
                                eventId.EventCounter = eventItem.itemRemoveCallback.eventId.eventCounter;
                                eventId.OperationCounter = eventItem.itemRemoveCallback.eventId.operationCounter;
                                eventId.EventType = NCache.Persistence.EventType.ITEM_REMOVED_CALLBACK;

                                if (_notifyAsync)
                                {
                                    if (_cache != null && _cache.AsyncEventHandler != null)
                                        _cache.EventListener.OnCustomRemoveCallback(
                                            (Int16) eventItem.itemRemoveCallback.callbackId,
                                            eventItem.itemRemoveCallback.key, value,
                                            (CacheItemRemovedReason) eventItem.itemRemoveCallback.itemRemoveReason,
                                            flagValueEntry.Flag, _notifyAsync, item,
                                            (EventDataFilter) eventItem.itemRemoveCallback.dataFilter);
                                }
                                else
                                    _eventProcessor.Enqueue(new ItemRemoveCallBackTask(this,
                                        eventItem.itemRemoveCallback.key,
                                        (Int16) eventItem.itemRemoveCallback.callbackId, value,
                                        (CacheItemRemovedReason) eventItem.itemRemoveCallback.itemRemoveReason,
                                        flagValueEntry.Flag, _notifyAsync, item,
                                        (EventDataFilter) eventItem.itemRemoveCallback.dataFilter));
                            }
                                break;

                        }
                    }
                    catch (Exception ex)
                    {
                        if (_logger.IsErrorLogsEnabled)
                            _logger.NCacheLog.Error("Broker.RaiseBulkEvent",
                                "An error occurred while raising bulk event of type : " + eventItem.eventType +
                                ". Error :" + ex.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }