Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Net / System / Net / _SSPISessionCache.cs / 1 / _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
- TableLayoutRowStyleCollection.cs
- TransformDescriptor.cs
- StylusButtonCollection.cs
- Stack.cs
- DockPattern.cs
- CellParagraph.cs
- SQLMembershipProvider.cs
- SchemaElementLookUpTable.cs
- DataBinder.cs
- HGlobalSafeHandle.cs
- MethodBody.cs
- AuthenticateEventArgs.cs
- StorageFunctionMapping.cs
- CheckBoxAutomationPeer.cs
- ParserExtension.cs
- DataObject.cs
- DataSourceProvider.cs
- SqlDataSourceEnumerator.cs
- DoubleLink.cs
- PerformanceCounterPermission.cs
- Model3D.cs
- StateChangeEvent.cs
- datacache.cs
- XPathScanner.cs
- ResXBuildProvider.cs
- PersonalizationStateInfo.cs
- ConfigurationManagerInternalFactory.cs
- EventLogPermissionAttribute.cs
- CodeEventReferenceExpression.cs
- OutputCacheSettingsSection.cs
- ImageClickEventArgs.cs
- Wildcard.cs
- EventHandlingScope.cs
- FormatConvertedBitmap.cs
- ObjectComplexPropertyMapping.cs
- exports.cs
- WhileDesigner.cs
- CodeDirectionExpression.cs
- UriScheme.cs
- ParsedAttributeCollection.cs
- RegisteredDisposeScript.cs
- AssociationType.cs
- DataRelationCollection.cs
- DecoratedNameAttribute.cs
- GeneralTransformGroup.cs
- ConfigurationValidatorAttribute.cs
- DataGridViewCellStyle.cs
- ErrorFormatter.cs
- ObjectHandle.cs
- StronglyTypedResourceBuilder.cs
- FloaterParaClient.cs
- WSHttpBindingBase.cs
- CompositeDataBoundControl.cs
- XPathAncestorIterator.cs
- FlowDocumentPageViewerAutomationPeer.cs
- MediaCommands.cs
- LazyTextWriterCreator.cs
- UrlAuthorizationModule.cs
- NameObjectCollectionBase.cs
- DataGridHelper.cs
- SystemWebExtensionsSectionGroup.cs
- PageRouteHandler.cs
- NativeMethods.cs
- CodeAttributeDeclaration.cs
- SystemMulticastIPAddressInformation.cs
- CompositeActivityMarkupSerializer.cs
- TextureBrush.cs
- InputLangChangeRequestEvent.cs
- LoggedException.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- InputScopeAttribute.cs
- AttributeTableBuilder.cs
- Base64Stream.cs
- SurrogateSelector.cs
- RootBuilder.cs
- SoapHeader.cs
- BaseParagraph.cs
- EnumerationRangeValidationUtil.cs
- MemberRelationshipService.cs
- SQLBytesStorage.cs
- EventEntry.cs
- QilXmlWriter.cs
- StylusEventArgs.cs
- FamilyTypeface.cs
- ParserStack.cs
- TableLayoutRowStyleCollection.cs
- ComNativeDescriptor.cs
- CultureData.cs
- PathGeometry.cs
- DispatcherObject.cs
- UIElementParagraph.cs
- DataGridTable.cs
- TextBox.cs
- UnaryOperationBinder.cs
- EllipseGeometry.cs
- KeyNotFoundException.cs
- DesignTimeVisibleAttribute.cs
- MatrixValueSerializer.cs
- RequestQueue.cs
- BindingBase.cs