Esempio n. 1
0
        public void AppendRemoveItemsInList_NothingDeleted()
        {
            ChangeTrackingSessionStateItemCollection sessionItems = new ChangeTrackingSessionStateItemCollection();

            sessionItems["key"] = "val";
            Assert.Equal(0, RedisUtility.AppendRemoveItemsInList(sessionItems, null));
        }
        private bool TryUpdateIfLockIdMatchPrepare(object lockId, ISessionStateItemCollection data, int sessionTimeout, out string[] keyArgs, out object[] valueArgs)
        {
            keyArgs   = null;
            valueArgs = null;
            if (data != null)
            {
                List <object> list = new List <object>();
                ChangeTrackingSessionStateItemCollection sessionItems = (ChangeTrackingSessionStateItemCollection)data;
                int noOfItemsRemoved = redisUtility.AppendRemoveItemsInList(sessionItems, list);
                int noOfItemsUpdated = redisUtility.AppendUpdatedOrNewItemsInList(sessionItems, list);

                keyArgs      = new string[] { Keys.LockKey, Keys.DataKey, Keys.InternalKey };
                valueArgs    = new object[list.Count + 8]; // this +8 is for first wight values in ARGV that we will add now
                valueArgs[0] = lockId;
                valueArgs[1] = sessionTimeout;
                valueArgs[2] = noOfItemsRemoved;
                valueArgs[3] = 9;                    // In Lua index starts from 1 so first item deleted will be 9th.
                valueArgs[4] = noOfItemsRemoved + 8; // index for last removed item
                valueArgs[5] = noOfItemsUpdated;
                valueArgs[6] = noOfItemsRemoved + 9; // first item updated will be next to last item removed
                valueArgs[7] = list.Count + 8;       // index for last item in list in LUA

                // if nothing is changed in session then also execute update script to update session timeout
                if (list.Count != 0)
                {
                    list.CopyTo(valueArgs, 8);
                }
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        public void AppendRemoveItemsInList_SuccessfulDeleted()
        {
            ChangeTrackingSessionStateItemCollection sessionItems = new ChangeTrackingSessionStateItemCollection();
            List <object> list = new List <object>();

            sessionItems["key"] = "val";
            sessionItems.Remove("key");
            Assert.Equal(1, RedisUtility.AppendRemoveItemsInList(sessionItems, list));
            Assert.Equal(1, list.Count);
        }
Esempio n. 4
0
        public void AppendRemoveItemsInList_EmptySessionItems()
        {
            ChangeTrackingSessionStateItemCollection sessionItems = new ChangeTrackingSessionStateItemCollection();

            Assert.Equal(0, RedisUtility.AppendRemoveItemsInList(sessionItems, null));
        }