public override void CreateUninitializedItem(System.Web.HttpContext context, string id, int timeout) { DateTime dSetTime = DateTime.Now; if (this._bIsDbNone == false) { #region Setting it in Db using (IDbOperations objDb = DbFactory.CreateDbOperations(_strDbType, _strConn)) { objDb.Add(id, ApplicationName, dSetTime, dSetTime.AddMinutes((double)timeout), dSetTime, 0, timeout, false, null, 1); } #endregion } #region Updating item in memcached MemcachedHolder objHolder = new MemcachedHolder( null, false, dSetTime, 0, 1); this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, timeout, 0)); #endregion }
public override void ReleaseItemExclusive(System.Web.HttpContext context, string id, object lockId) { counters.IncrementTotalOperPc(); #region Updating item in memcached counters.IncrementMemcachedPc(); MemcachedHolder objHolder = this._client.Get <MemcachedHolder>(id); if (objHolder != null) { objHolder.Locked = false; objHolder.LockId = (int)lockId; counters.IncrementMemcachedPc(); this._client.Store(StoreMode.Set, id, objHolder); } #endregion if (this._bIsDbNone == false) { #region Updating Database counters.IncrementDbPc(); using (IDbOperations objDb = DbFactory.CreateDbOperations(_strDbType, _strConn)) { objDb.ReleaseItem(id, ApplicationName, (int)lockId, _objConfig.Timeout.Minutes); } #endregion } }
public override void SetAndReleaseItemExclusive(System.Web.HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem) { if (this._bIsDbNone == false) { #region Db option using (IDbOperations objDb = DbFactory.CreateDbOperations(_strDbType, _strConn)) { byte[] objContent = null; DateTime dSetTime = DateTime.Now; objContent = Common.Serialize((SessionStateItemCollection)item.Items); if (newItem == true) { objDb.Add(id, ApplicationName, dSetTime, dSetTime.AddMinutes((Double)item.Timeout), dSetTime, 0, item.Timeout, false, objContent, 0); // Setting it up in memcached MemcachedHolder objHolder = new MemcachedHolder( objContent, false, dSetTime, 0, 0); this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, item.Timeout, 0)); } else { objDb.Update(id, ApplicationName, (int)lockId, dSetTime.AddMinutes((Double)item.Timeout), objContent, false); // Setting it up in memcached MemcachedHolder objHolder = new MemcachedHolder( objContent, false, dSetTime, 0, 0); this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, item.Timeout, 0)); } } #endregion } else // Just memcached version { byte[] objContent = null; DateTime dSetTime = DateTime.Now; objContent = Common.Serialize((SessionStateItemCollection)item.Items); if (newItem == true) { // Setting it up in memcached MemcachedHolder objHolder = new MemcachedHolder( objContent, false, dSetTime, 0, 0); this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, item.Timeout, 0)); } else { // Setting it up in memcached MemcachedHolder objHolder = new MemcachedHolder( objContent, false, dSetTime, 0, 0); this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, item.Timeout, 0)); } } }
public override SessionStateStoreData GetItemExclusive(System.Web.HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { SessionStateStoreData objItem = null; MemcachedHolder objHolder = this._client.Get <MemcachedHolder>(id); DateTime dSetTime = DateTime.Now; #region Initialized lockAge = TimeSpan.Zero; lockId = null; locked = false; actions = 0; #endregion if (objHolder != null) { if (objHolder.Locked == false) { #region objHolder.LockId++; objHolder.SetTime = dSetTime; // Locking Item for memcached objHolder.Locked = true; this._client.Store(StoreMode.Set, id, objHolder, new TimeSpan(0, 0, 0, 0, _objConfig.Timeout.Milliseconds)); actions = (SessionStateActions)objHolder.ActionFlag; lockId = objHolder.LockId; lockAge = objHolder.LockAge; if (this._bIsDbNone == false) // Saving to Db { using (IDbOperations objDb = DbFactory.CreateDbOperations(_strDbType, _strConn)) { locked = objDb.LockItemWithoutLockId(id, ApplicationName); objDb.LockItem(id, ApplicationName, objHolder.LockId); } } if (actions == SessionStateActions.InitializeItem) { objItem = Common.CreateNewStoreData(context, _objConfig.Timeout.Minutes); } else { objItem = Common.Deserialize(context, objHolder.Content, _objConfig.Timeout.Minutes); } return(objItem); #endregion } else { lockAge = objHolder.LockAge; locked = true; lockId = objHolder.LockId; actions = (SessionStateActions)objHolder.ActionFlag; return(objItem); } } else { if (this._bIsDbNone == false) // Saving to Db { using (IDbOperations objDb = DbFactory.CreateDbOperations(_strDbType, _strConn)) { return(objDb.GetItem(id, ApplicationName, _objConfig.Timeout.Minutes, context, true, out locked, out lockAge, out lockId, out actions)); } } else { return(objItem); } } }