86 lines
2.4 KiB
Plaintext
86 lines
2.4 KiB
Plaintext
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name :
|
|
|
|
connstate.cool
|
|
|
|
Abstract:
|
|
|
|
Connection state helper
|
|
|
|
Author:
|
|
|
|
Bilal Alam (BAlam) 2-Aug-99
|
|
|
|
Environment:
|
|
|
|
COM+ - User Mode Managed Run Time
|
|
|
|
Project:
|
|
|
|
Web Server
|
|
--*/
|
|
|
|
using System;
|
|
using System.ASP;
|
|
using System.ASP.Cache;
|
|
using System.ASP.Util;
|
|
|
|
namespace System.IIS
|
|
{
|
|
internal abstract class ConnectionStateItem
|
|
{
|
|
public void OnCacheItemRemoved( Object sender, CacheItemRemovedEvent e )
|
|
{
|
|
Dispose();
|
|
}
|
|
|
|
public abstract void Dispose();
|
|
};
|
|
|
|
internal class ConnectionState
|
|
{
|
|
private const int CONNECTION_STATE_LIFE = 1000 * 60;
|
|
|
|
static public ConnectionStateItem GetState( HttpContext context,
|
|
string strMod )
|
|
{
|
|
CacheKey cacheKey = new CacheKey( strMod,
|
|
context.Request.ConnectionID.ToString(),
|
|
null );
|
|
|
|
return (ConnectionStateItem) HttpRuntime.Cache.Get( cacheKey );
|
|
}
|
|
|
|
static public void SetState( HttpContext context,
|
|
string strMod,
|
|
ConnectionStateItem value )
|
|
{
|
|
CacheKey cacheKey = new CacheKey( strMod,
|
|
context.Request.ConnectionID.ToString(),
|
|
null );
|
|
|
|
CacheItemOptions cacheOptions = new CacheItemOptions();
|
|
|
|
cacheOptions.ExpiresInterval = CONNECTION_STATE_LIFE;
|
|
|
|
cacheOptions.OnRemoveHandler = new CacheItemRemovedHandler(
|
|
value.OnCacheItemRemoved );
|
|
|
|
HttpRuntime.Cache.Add( cacheKey, value, cacheOptions );
|
|
}
|
|
|
|
static public void RemoveState( HttpContext context,
|
|
string strMod )
|
|
{
|
|
CacheKey cacheKey = new CacheKey( strMod,
|
|
context.Request.ConnectionID.ToString(),
|
|
null );
|
|
|
|
HttpRuntime.Cache.Remove( cacheKey );
|
|
}
|
|
};
|
|
}
|