/// <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); }
/// <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); }
/// <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); }