Exemple #1
0
        internal AddCommand(string key, byte[] value, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, short removeCallback, short updateCallback, Hashtable queryInfo, BitSet flagMap, string cacheId, EventDataFilter updateDataFilter, EventDataFilter removeDataFilter)
        {
            base.name = "AddCommand";
            base.key  = key;


            _addCommand = new Alachisoft.NCache.Common.Protobuf.AddCommand();

            if (absoluteExpiration != Cache.NoAbsoluteExpiration)
            {
                _addCommand.absExpiration = absoluteExpiration.Ticks;
            }

            if (slidingExpiration != Cache.NoSlidingExpiration)
            {
                _addCommand.sldExpiration = slidingExpiration.Ticks;
            }

            Alachisoft.NCache.Caching.UserBinaryObject ubObject = Alachisoft.NCache.Caching.UserBinaryObject.CreateUserBinaryObject(value);

            _addCommand.key = key;
            _addCommand.data.AddRange(ubObject.DataList);
            _addCommand.requestId        = base.RequestId;
            _addCommand.updateCallbackId = updateCallback;
            _addCommand.removeCallbackId = removeCallback;
            _addCommand.priority         = (int)priority;
            _addCommand.flag             = flagMap.Data;
            _addCommand.updateDataFilter = (short)updateDataFilter;
            _addCommand.removeDataFilter = (short)removeDataFilter;

            // Changes made to send Queries, Tags and NamgedTags in a single object
            ObjectQueryInfo objectQueryInfo = new ObjectQueryInfo();

            if (queryInfo["query-info"] != null)
            {
                objectQueryInfo.queryInfo = ProtobufHelper.GetQueryInfoObj(queryInfo["query-info"] as Hashtable);
            }


            _addCommand.objectQueryInfo = objectQueryInfo;
        }
Exemple #2
0
        internal AddCommand(string key, byte[] value, CacheDependency dependency, CacheSyncDependency syncDependency,
                            DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, short removeCallback,
                            short updateCallback, short dsItemAddedCallback, bool isResyncExpiredItems, string group, string subGroup,
                            short itemAdded, bool isAsync, Hashtable queryInfo, BitSet flagMap, string providerName,
                            string resyncProviderName, string cacheId, EventDataFilter updateDataFilter,
                            EventDataFilter removeDataFilter, int methodOverload, string clientId)
        {
            base.name = "AddCommand";
            base.asyncCallbackSpecified = isAsync && itemAdded != -1 ? true : false;
            base.isAsync = isAsync;
            base.key     = key;

            _itemAdded = itemAdded;


            _addCommand = new Alachisoft.NCache.Common.Protobuf.AddCommand();

            if (absoluteExpiration.Equals(Caching.Cache.DefaultAbsolute.ToUniversalTime()))
            {
                _addCommand.absExpiration = 1;
            }
            else if (absoluteExpiration.Equals(Caching.Cache.DefaultAbsoluteLonger.ToUniversalTime()))
            {
                _addCommand.absExpiration = 2;
            }
            else if (absoluteExpiration != Caching.Cache.NoAbsoluteExpiration)
            {
                _addCommand.absExpiration = absoluteExpiration.Ticks;
            }

            if (slidingExpiration.Equals(Caching.Cache.DefaultSliding))
            {
                _addCommand.sldExpiration = 1;
            }
            else if (slidingExpiration.Equals(Caching.Cache.DefaultSlidingLonger))
            {
                _addCommand.sldExpiration = 2;
            }
            else if (slidingExpiration != Caching.Cache.NoSlidingExpiration)
            {
                _addCommand.sldExpiration = slidingExpiration.Ticks;
            }
            Alachisoft.NCache.Caching.UserBinaryObject ubObject =
                Alachisoft.NCache.Caching.UserBinaryObject.CreateUserBinaryObject(value);

            _addCommand.key = key;
            _addCommand.data.AddRange(ubObject.DataList);
            _addCommand.requestId        = base.RequestId;
            _addCommand.updateCallbackId = updateCallback;
            _addCommand.removeCallbackId = removeCallback;
            _addCommand.datasourceItemAddedCallbackId = dsItemAddedCallback;
            _addCommand.isAsync            = isAsync;
            _addCommand.priority           = (int)priority;
            _addCommand.isResync           = isResyncExpiredItems;
            _addCommand.group              = group;
            _addCommand.subGroup           = subGroup;
            _addCommand.flag               = flagMap.Data;
            _addCommand.providerName       = providerName;
            _addCommand.resyncProviderName = resyncProviderName;
            _addCommand.updateDataFilter   = (short)updateDataFilter;
            _addCommand.removeDataFilter   = (short)removeDataFilter;

            _addCommand.clientID = clientId;

            if (syncDependency != null)
            {
                _addCommand.syncDependency         = new SyncDependency();
                _addCommand.syncDependency.cacheId = syncDependency.CacheId;
                _addCommand.syncDependency.key     = syncDependency.Key;
                _addCommand.syncDependency.server  = syncDependency.Server;
                _addCommand.syncDependency.port    = syncDependency.Port;
            }

            ObjectQueryInfo objectQueryInfo = new ObjectQueryInfo();

            if (queryInfo["query-info"] != null)
            {
                objectQueryInfo.queryInfo = ProtobufHelper.GetQueryInfoObj(queryInfo["query-info"] as Hashtable);
            }

            if (queryInfo["tag-info"] != null)
            {
                objectQueryInfo.tagInfo = ProtobufHelper.GetTagInfoObj(queryInfo["tag-info"] as Hashtable);
            }

            if (queryInfo["named-tag-info"] != null)
            {
                objectQueryInfo.namedTagInfo =
                    ProtobufHelper.GetNamedTagInfoObj(queryInfo["named-tag-info"] as Hashtable, true);
            }


            _addCommand.objectQueryInfo = objectQueryInfo;

            if (dependency != null)
            {
                _addCommand.dependency =
                    Alachisoft.NCache.Common.Util.DependencyHelper.GetProtoBufDependency(dependency);
            }
            _methodOverload = methodOverload;
        }
Exemple #3
0
        public BulkAddCommand(string[] keys, CacheItem[] items, Cache parent, string cacheId)
        {
            base.name = "BulkAddCommand";
            _parent   = parent;

            _bulkAddCommand           = new Alachisoft.NCache.Common.Protobuf.BulkAddCommand();
            _bulkAddCommand.requestId = base.RequestId;
            base.BulkKeys             = keys;

            for (int i = 0; i < keys.Length; i++)
            {
                CacheItem item = items[i];

                _addCommand     = new Alachisoft.NCache.Common.Protobuf.AddCommand();
                _addCommand.key = keys[i];

                Alachisoft.NCache.Caching.UserBinaryObject ubObject = Alachisoft.NCache.Caching.UserBinaryObject.CreateUserBinaryObject((byte[])item.Value);
                _addCommand.data.AddRange(ubObject.DataList);

                if (item.AbsoluteExpiration != Cache.NoAbsoluteExpiration)
                {
                    _addCommand.absExpiration = item.AbsoluteExpiration.Ticks;
                }

                if (item.SlidingExpiration != Cache.NoSlidingExpiration)
                {
                    _addCommand.sldExpiration = item.SlidingExpiration.Ticks;
                }

                _addCommand.flag = item.FlagMap.Data;

                _addCommand.priority = (int)item.Priority;

                ObjectQueryInfo objectQueryInfo = new ObjectQueryInfo();

                if (item.QueryInfo["query-info"] != null)
                {
                    objectQueryInfo.queryInfo = ProtobufHelper.GetQueryInfoObj(item.QueryInfo["query-info"] as Hashtable);
                }

                _addCommand.objectQueryInfo = objectQueryInfo;

                short           removeCallbackId      = -1;
                short           updateCallbackId      = -1;
                EventDataFilter itemUpdateDataFilter  = EventDataFilter.None;
                EventDataFilter itemRemovedDataFilter = EventDataFilter.None;

                if (item.CacheItemRemovedCallback != null)
                {
                    itemRemovedDataFilter = item.ItemRemovedCallabackDataFilter;
                    short[] callabackIds = _parent.EventManager.RegisterSelectiveEvent(item.CacheItemRemovedCallback, EventType.ItemRemoved, itemRemovedDataFilter);
                    removeCallbackId = callabackIds[1];
                }


                if (item.CacheItemUpdatedCallback != null)
                {
                    itemUpdateDataFilter = item.ItemUpdatedCallabackDataFilter;
                    short[] callabackIds = _parent.EventManager.RegisterSelectiveEvent(item.CacheItemUpdatedCallback, EventType.ItemUpdated, itemUpdateDataFilter);
                    updateCallbackId = callabackIds[0];
                }


                _addCommand.removeCallbackId = removeCallbackId;
                _addCommand.updateCallbackId = updateCallbackId;
                _addCommand.updateDataFilter = (short)itemUpdateDataFilter;
                _addCommand.removeDataFilter = (short)itemRemovedDataFilter;

                _bulkAddCommand.addCommand.Add(_addCommand);
            }
        }
Exemple #4
0
        public BulkAddCommand(string[] keys, CacheItem[] items, short onDsItemsAddedCallback,
                              Alachisoft.NCache.Web.Caching.Cache parent, string providerName, string cacheId, int methodOverload,
                              string clientId, short updateCallbackId, short removedCallbackId, EventDataFilter updateCallbackFilter,
                              EventDataFilter removeCallabackFilter, bool returnVersions,
                              CallbackType callbackType = Runtime.Events.CallbackType.PushBasedNotification)
        {
            base.name       = "BulkAddCommand";
            _parent         = parent;
            _methodOverload = methodOverload;
            _bulkAddCommand = new Alachisoft.NCache.Common.Protobuf.BulkAddCommand();
            _bulkAddCommand.datasourceItemAddedCallbackId = onDsItemsAddedCallback;
            _bulkAddCommand.providerName   = providerName;
            _bulkAddCommand.returnVersions = returnVersions;
            _bulkAddCommand.requestId      = base.RequestId;
            base.BulkKeys = keys;

            for (int i = 0; i < keys.Length; i++)
            {
                CacheItem item = items[i];

                _addCommand     = new Alachisoft.NCache.Common.Protobuf.AddCommand();
                _addCommand.key = keys[i];

                Alachisoft.NCache.Caching.UserBinaryObject ubObject =
                    Alachisoft.NCache.Caching.UserBinaryObject.CreateUserBinaryObject((byte[])item.Value);
                _addCommand.data.AddRange(ubObject.DataList);

                if (item.AbsoluteExpiration.Equals(Caching.Cache.DefaultAbsolute.ToUniversalTime()))
                {
                    _addCommand.absExpiration = 1;
                }
                else if (item.AbsoluteExpiration.Equals(Caching.Cache.DefaultAbsoluteLonger.ToUniversalTime()))
                {
                    _addCommand.absExpiration = 2;
                }
                else if (item.AbsoluteExpiration != Caching.Cache.NoAbsoluteExpiration)
                {
                    _addCommand.absExpiration = item.AbsoluteExpiration.Ticks;
                }

                if (item.SlidingExpiration.Equals(Caching.Cache.DefaultSliding))
                {
                    _addCommand.sldExpiration = 1;
                }
                else if (item.SlidingExpiration.Equals(Caching.Cache.DefaultSlidingLonger))
                {
                    _addCommand.sldExpiration = 2;
                }
                else if (item.SlidingExpiration != Caching.Cache.NoSlidingExpiration)
                {
                    _addCommand.sldExpiration = item.SlidingExpiration.Ticks;
                }

                _addCommand.flag       = item.FlagMap.Data;
                _addCommand.group      = item.Group;
                _addCommand.subGroup   = item.SubGroup;
                _addCommand.isResync   = item.IsResyncExpiredItems;
                _addCommand.priority   = (int)item.Priority;
                _addCommand.dependency = item.Dependency == null
                    ? null
                    : Alachisoft.NCache.Common.Util.DependencyHelper.GetProtoBufDependency(item.Dependency);

                _addCommand.clientID     = clientId;
                _addCommand.CallbackType = CallbackType(callbackType);


                ObjectQueryInfo objectQueryInfo = new ObjectQueryInfo();

                if (item.QueryInfo["query-info"] != null)
                {
                    objectQueryInfo.queryInfo =
                        ProtobufHelper.GetQueryInfoObj(item.QueryInfo["query-info"] as Hashtable);
                }

                if (item.QueryInfo["tag-info"] != null)
                {
                    objectQueryInfo.tagInfo = ProtobufHelper.GetTagInfoObj(item.QueryInfo["tag-info"] as Hashtable);
                }

                if (item.QueryInfo["named-tag-info"] != null)
                {
                    objectQueryInfo.namedTagInfo =
                        ProtobufHelper.GetNamedTagInfoObj(item.QueryInfo["named-tag-info"] as Hashtable, true);
                }


                _addCommand.objectQueryInfo = objectQueryInfo;


                EventDataFilter itemUpdateDataFilter  = updateCallbackFilter;
                EventDataFilter itemRemovedDataFilter = removeCallabackFilter;


                if (item.CacheItemRemovedCallback != null)
                {
                    itemRemovedDataFilter = item.ItemRemovedCallabackDataFilter;
                    short[] callabackIds = _parent.EventManager.RegisterSelectiveEvent(item.CacheItemRemovedCallback,
                                                                                       EventType.ItemRemoved, itemRemovedDataFilter);
                    removedCallbackId = callabackIds[1];
                }
                else if (item.ItemRemoveCallback != null)
                {
                    removedCallbackId     = _parent.GetCallbackId(item.ItemRemoveCallback);
                    itemRemovedDataFilter = EventDataFilter.DataWithMetadata;
                }


                if (item.CacheItemUpdatedCallback != null)
                {
                    itemUpdateDataFilter = item.ItemUpdatedCallabackDataFilter;
                    short[] callabackIds = _parent.EventManager.RegisterSelectiveEvent(item.CacheItemUpdatedCallback,
                                                                                       EventType.ItemUpdated, itemUpdateDataFilter);
                    updateCallbackId = callabackIds[0];
                }
                else if (item.ItemUpdateCallback != null)
                {
                    updateCallbackId     = _parent.GetCallbackId(item.ItemUpdateCallback);
                    itemUpdateDataFilter = EventDataFilter.None;
                }


                _addCommand.removeCallbackId = removedCallbackId;
                _addCommand.updateCallbackId = updateCallbackId;
                _addCommand.updateDataFilter = (short)itemUpdateDataFilter;
                _addCommand.removeDataFilter = (short)itemRemovedDataFilter;

                _addCommand.resyncProviderName = item.ResyncProviderName;

                if (item.SyncDependency != null)
                {
                    _addCommand.syncDependency         = new Alachisoft.NCache.Common.Protobuf.SyncDependency();
                    _addCommand.syncDependency.key     = item.SyncDependency.Key;
                    _addCommand.syncDependency.cacheId = item.SyncDependency.CacheId;
                    _addCommand.syncDependency.server  = item.SyncDependency.Server;
                    _addCommand.syncDependency.port    = item.SyncDependency.Port;
                }

                _bulkAddCommand.addCommand.Add(_addCommand);
            }
        }