Code:
/ 4.0 / 4.0 / 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. /*++ 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Certificate.cs
- SortExpressionBuilder.cs
- CustomAssemblyResolver.cs
- CacheRequest.cs
- ReadOnlyPermissionSet.cs
- SemanticKeyElement.cs
- SerTrace.cs
- SafeLocalMemHandle.cs
- TextElementCollection.cs
- XmlUtil.cs
- SQLBytesStorage.cs
- RoutedCommand.cs
- EventlogProvider.cs
- WebPartMenuStyle.cs
- MetricEntry.cs
- XmlTextAttribute.cs
- TextRenderer.cs
- AppDomainManager.cs
- ParsedAttributeCollection.cs
- CustomErrorsSection.cs
- XmlILModule.cs
- ListViewCommandEventArgs.cs
- ObjectManager.cs
- ObjectQuery.cs
- GrammarBuilderPhrase.cs
- StatusBarPanelClickEvent.cs
- SettingsPropertyWrongTypeException.cs
- LicenseException.cs
- MappingMetadataHelper.cs
- ReadOnlyPropertyMetadata.cs
- RequestTimeoutManager.cs
- ArithmeticException.cs
- MeasureItemEvent.cs
- HtmlWindow.cs
- MergeLocalizationDirectives.cs
- PointAnimationBase.cs
- RemotingConfiguration.cs
- Scripts.cs
- Calendar.cs
- TypeInitializationException.cs
- StorageBasedPackageProperties.cs
- MissingMemberException.cs
- MetadataPropertyvalue.cs
- TextContainerHelper.cs
- TripleDES.cs
- ServiceNameElementCollection.cs
- PluggableProtocol.cs
- XmlSchemaInferenceException.cs
- LinqDataSource.cs
- RegexGroup.cs
- EnvelopedPkcs7.cs
- ExternalException.cs
- MatrixValueSerializer.cs
- UnknownWrapper.cs
- Funcletizer.cs
- WebHttpBehavior.cs
- XmlResolver.cs
- ConnectionProviderAttribute.cs
- DataGridViewCheckBoxCell.cs
- MissingMemberException.cs
- EmbossBitmapEffect.cs
- selecteditemcollection.cs
- IndexExpression.cs
- InputQueueChannelAcceptor.cs
- Literal.cs
- ColumnReorderedEventArgs.cs
- RotationValidation.cs
- StatusBarPanel.cs
- Clause.cs
- TextParaLineResult.cs
- FileAuthorizationModule.cs
- SqlCacheDependencyDatabase.cs
- TraceProvider.cs
- DLinqTableProvider.cs
- SizeConverter.cs
- PackageRelationshipCollection.cs
- AccessText.cs
- DecimalConstantAttribute.cs
- EnumValidator.cs
- WebHttpSecurityModeHelper.cs
- StorageFunctionMapping.cs
- HandlerFactoryCache.cs
- DropDownButton.cs
- UpdateRecord.cs
- _Win32.cs
- ReflectionUtil.cs
- SqlXmlStorage.cs
- SectionUpdates.cs
- PartialTrustVisibleAssembliesSection.cs
- DateTimeConverter2.cs
- ToolBarTray.cs
- ZoneIdentityPermission.cs
- Translator.cs
- FormViewInsertedEventArgs.cs
- CodeCatchClauseCollection.cs
- Variant.cs
- Bits.cs
- Wrapper.cs
- XmlnsDictionary.cs
- ExpressionConverter.cs