You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
163
mcs/class/referencesource/System.Web/State/ISessionStateStore.cs
Normal file
163
mcs/class/referencesource/System.Web/State/ISessionStateStore.cs
Normal file
@@ -0,0 +1,163 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="SessionStateStore.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
* SessionStateStoreProviderBase
|
||||
*
|
||||
*/
|
||||
namespace System.Web.SessionState {
|
||||
using System.Xml;
|
||||
using System.Security.Permissions;
|
||||
using System.Configuration.Provider;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
[FlagsAttribute()]
|
||||
internal enum SessionStateItemFlags : int {
|
||||
None = 0x00000000,
|
||||
Uninitialized = 0x00000001,
|
||||
IgnoreCacheItemRemoved = 0x00000002
|
||||
}
|
||||
|
||||
[FlagsAttribute()]
|
||||
public enum SessionStateActions : int {
|
||||
None = 0x00000000,
|
||||
InitializeItem = 0x00000001
|
||||
}
|
||||
|
||||
// This interface is used by SessionStateModule to read/write the session state data
|
||||
public abstract class SessionStateStoreProviderBase : ProviderBase {
|
||||
public abstract void Dispose();
|
||||
|
||||
// Called by SessionStateModule to notify the provider that Session_End is defined
|
||||
// in global.asax, and so when an item expires, it should call the expireCallback
|
||||
// If the provider does not support session expiry, it should return false.
|
||||
public abstract bool SetItemExpireCallback(SessionStateItemExpireCallback expireCallback);
|
||||
|
||||
// Called at the beginning of the AcquireRequestState event
|
||||
public abstract void InitializeRequest(HttpContext context);
|
||||
|
||||
// Get and return a SessionStateStoreData.
|
||||
// Please note that we are implementing a reader/writer lock mechanism.
|
||||
//
|
||||
// If successful:
|
||||
// - returns the item
|
||||
//
|
||||
// If not found:
|
||||
// - set 'locked' to false
|
||||
// - returns null
|
||||
//
|
||||
// If the item is already locked by another request:
|
||||
// - set 'locked' to true
|
||||
// - set 'lockAge' to how long has the item been locked
|
||||
// - set 'lockId' to the context of the lock
|
||||
// - returns null
|
||||
public abstract SessionStateStoreData GetItem(HttpContext context,
|
||||
String id,
|
||||
out bool locked,
|
||||
out TimeSpan lockAge,
|
||||
out object lockId,
|
||||
out SessionStateActions actions);
|
||||
|
||||
// Get and lock a SessionStateStoreData.
|
||||
// Please note that we are implementing a reader/writer lock mechanism.
|
||||
//
|
||||
// If successful:
|
||||
// - set 'lockId' to the context of the lock
|
||||
// - returns the item
|
||||
//
|
||||
// If not found:
|
||||
// - set 'locked' to false
|
||||
// - returns null
|
||||
//
|
||||
// If the item is already locked by another request:
|
||||
// - set 'locked' to true
|
||||
// - set 'lockAge' to how long has the item been locked
|
||||
// - set 'lockId' to the context of the lock
|
||||
// - returns null
|
||||
public abstract SessionStateStoreData GetItemExclusive(HttpContext context,
|
||||
String id,
|
||||
out bool locked,
|
||||
out TimeSpan lockAge,
|
||||
out object lockId,
|
||||
out SessionStateActions actions);
|
||||
|
||||
// Unlock an item locked by GetExclusive
|
||||
// 'lockId' is the lock context returned by previous call to GetExclusive
|
||||
public abstract void ReleaseItemExclusive(HttpContext context,
|
||||
String id,
|
||||
object lockId);
|
||||
|
||||
// Write an item.
|
||||
// Note: The item is originally obtained by GetExclusive
|
||||
// Because SessionStateModule will release (by ReleaseExclusive) am item if
|
||||
// it has been locked for too long, so it is possible that the request calling
|
||||
// Set() may have lost the lock to someone else already. This can be
|
||||
// discovered by comparing the supplied lockId with the lockId value
|
||||
// stored with the state item.
|
||||
public abstract void SetAndReleaseItemExclusive(HttpContext context,
|
||||
String id,
|
||||
SessionStateStoreData item,
|
||||
object lockId,
|
||||
bool newItem);
|
||||
|
||||
// Remove an item. See the note in Set.
|
||||
public abstract void RemoveItem(HttpContext context,
|
||||
String id,
|
||||
object lockId,
|
||||
SessionStateStoreData item);
|
||||
|
||||
// Reset the expire time of an item based on its timeout value
|
||||
public abstract void ResetItemTimeout(HttpContext context, String id);
|
||||
|
||||
// Create a brand new SessionStateStoreData. The created SessionStateStoreData must have
|
||||
// a non-null ISessionStateItemCollection.
|
||||
public abstract SessionStateStoreData CreateNewStoreData(HttpContext context, int timeout);
|
||||
|
||||
public abstract void CreateUninitializedItem(HttpContext context, String id, int timeout);
|
||||
|
||||
// Called during EndRequest event
|
||||
public abstract void EndRequest(HttpContext context);
|
||||
|
||||
internal virtual void Initialize(string name, NameValueCollection config, IPartitionResolver partitionResolver) {
|
||||
}
|
||||
}
|
||||
|
||||
public class SessionStateStoreData {
|
||||
ISessionStateItemCollection _sessionItems;
|
||||
HttpStaticObjectsCollection _staticObjects;
|
||||
int _timeout;
|
||||
|
||||
public SessionStateStoreData(ISessionStateItemCollection sessionItems,
|
||||
HttpStaticObjectsCollection staticObjects,
|
||||
int timeout) {
|
||||
_sessionItems = sessionItems;
|
||||
_staticObjects = staticObjects;
|
||||
_timeout = timeout;
|
||||
}
|
||||
|
||||
virtual public ISessionStateItemCollection Items {
|
||||
get {
|
||||
return _sessionItems;
|
||||
}
|
||||
}
|
||||
|
||||
virtual public HttpStaticObjectsCollection StaticObjects {
|
||||
get {
|
||||
return _staticObjects;
|
||||
}
|
||||
}
|
||||
|
||||
virtual public int Timeout {
|
||||
get {
|
||||
return _timeout;
|
||||
}
|
||||
|
||||
set {
|
||||
_timeout = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user