_SSPISessionCache.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / _SSPISessionCache.cs / 1305376 / _SSPISessionCache.cs

                            /*++ 
Copyright (c) Microsoft Corporation

Module Name:
 
    _SspiSessionCache.cs
 
Abstract: 
    The file implements trivial SSPI credential caching mechanism based on lru list
 

Author:

    Alexei Vopilov    20-Oct-2004 

Revision History: 
 

--*/ 
namespace System.Net.Security {
using System.Net;
using System.Threading;
using System.Collections; 

 
    // 
    // Implements delayed SSPI handle release, like a finalizable object though the handles are kept alive until being pushed out
    // by the newly incoming ones. 
    //
    internal static class SSPIHandleCache
    {
          private const int                         c_MaxCacheSize = 0x1F;  // must a (power of 2) - 1 
          private static SafeCredentialReference[]  _CacheSlots = new SafeCredentialReference[c_MaxCacheSize+1];
          private static int                        _Current = -1; 
 
          internal static void CacheCredential(SafeFreeCredentials newHandle)
          { 
                try {
                    SafeCredentialReference newRef = SafeCredentialReference.CreateReference(newHandle);
                    if (newRef == null)
                        return; 
                    unchecked
                    { 
                        int index = Interlocked.Increment(ref _Current) & c_MaxCacheSize; 
                        newRef = Interlocked.Exchange(ref _CacheSlots[index], newRef);
                    } 
                    if (newRef != null)
                        newRef.Close();
                }
                catch(Exception e) { 
                    if (!NclUtilities.IsFatal(e)){
                        GlobalLog.Assert("SSPIHandlCache", "Attempted to throw: " + e.ToString()); 
                    } 
                }
          } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK