Exemple #1
0
 /// <summary>
 /// Puts the item.
 /// </summary>
 private void PutItem(string key, IgniteSessionStateStoreData data, ICache <string, IgniteSessionStateStoreData> cache)
 {
     OutOp(Op.Put, w =>
     {
         w.WriteString(key);
         data.WriteBinary(w, false);
     }, cache);
 }
Exemple #2
0
        /// <summary>
        /// Adds a new session-state item to the data store.
        /// </summary>
        /// <param name="context">The <see cref="T:System.Web.HttpContext" /> for the current request.</param>
        /// <param name="id">The <see cref="P:System.Web.SessionState.HttpSessionState.SessionID" />
        /// for the current request.</param>
        /// <param name="timeout">The session <see cref="P:System.Web.SessionState.HttpSessionState.Timeout" />
        /// for the current request.</param>
        public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
        {
            var cache = _expiryCacheHolder.GetCacheWithExpiry((long)timeout * 60);

            var key = GetKey(id);

            var data = new IgniteSessionStateStoreData(SessionStateUtility.GetSessionStaticObjects(context), timeout);

            PutItem(key, data, cache);
        }
        public void TestEmpty()
        {
            var data = new IgniteSessionStateStoreData(null, 0);

            Assert.AreEqual(0, data.LockId);
            Assert.AreEqual(0, data.Items.Count);
            Assert.AreEqual(0, data.Timeout);
            Assert.IsNull(data.LockNodeId);
            Assert.IsNull(data.LockTime);
            Assert.IsNull(data.StaticObjects);
        }
Exemple #4
0
        /// <summary>
        /// Sets and unlocks the item.
        /// </summary>
        private void SetAndUnlockItem(string key, IgniteSessionStateStoreData data)
        {
            var cache = _expiryCacheHolder.GetCacheWithExpiry(data.Timeout * 60);

            OutOp(Op.SetAndUnlock, w =>
            {
                w.WriteString(key);
                w.WriteBoolean(true); // Unlock and update.
                data.WriteBinary(w, true);
            }, cache);
        }
        /// <summary>
        /// Serializes and deserializes back an instance.
        /// </summary>
        private static IgniteSessionStateStoreData SerializeDeserialize(IgniteSessionStateStoreData data)
        {
            var marsh = BinaryUtils.Marshaller;

            using (var stream = new BinaryHeapStream(128))
            {
                var writer = marsh.StartMarshal(stream);

                data.WriteBinary(writer.GetRawWriter(), false);

                stream.Seek(0, SeekOrigin.Begin);

                return(new IgniteSessionStateStoreData(marsh.StartUnmarshal(stream)));
            }
        }
        public void TestData()
        {
            // Modification method is internal.
            var statics = new HttpStaticObjectsCollection();

            statics.GetType().GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic)
            .Invoke(statics, new object[] { "int", typeof(int), false });

            var data = new IgniteSessionStateStoreData(statics, 44);

            data.Items["key"] = "val";

            Assert.AreEqual(44, data.Timeout);
            Assert.AreEqual(1, data.StaticObjects.Count);
            Assert.AreEqual(0, data.StaticObjects["int"]);
            Assert.AreEqual("val", data.Items["key"]);
        }
        public void TestSerialization()
        {
            var data = new IgniteSessionStateStoreData(null, 96)
            {
                Timeout    = 97,
                LockId     = 11,
                LockNodeId = Guid.NewGuid(),
                LockTime   = DateTime.UtcNow.AddHours(-1),
            };

            data.Items["key1"] = 1;
            data.Items["key2"] = 2;

            var data0 = SerializeDeserialize(data);

            Assert.AreEqual(data.Timeout, data0.Timeout);
            Assert.AreEqual(data.LockId, data0.LockId);
            Assert.AreEqual(data.LockNodeId, data0.LockNodeId);
            Assert.AreEqual(data.LockTime, data0.LockTime);
            Assert.AreEqual(data.Items.Keys, data0.Items.Keys);
        }