Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- LayoutTable.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- UriTemplateMatch.cs
- ManagementObjectSearcher.cs
- XPathNodeHelper.cs
- PointCollection.cs
- StandardOleMarshalObject.cs
- Parsers.cs
- DurableInstanceManager.cs
- AndCondition.cs
- BitmapMetadataEnumerator.cs
- BCLDebug.cs
- DATA_BLOB.cs
- NativeWindow.cs
- ValidationUtility.cs
- EventLogTraceListener.cs
- HwndSource.cs
- RemoteCryptoTokenProvider.cs
- HtmlMeta.cs
- EmissiveMaterial.cs
- WebPartMenuStyle.cs
- SoundPlayerAction.cs
- StrokeCollectionDefaultValueFactory.cs
- __Filters.cs
- DataGrid.cs
- JsonDataContract.cs
- AuthenticationConfig.cs
- InteropDesigner.xaml.cs
- BindingCollection.cs
- EdmEntityTypeAttribute.cs
- DirectionalLight.cs
- WsatConfiguration.cs
- TabControlEvent.cs
- EmbeddedMailObject.cs
- AliasGenerator.cs
- SettingsContext.cs
- DropShadowBitmapEffect.cs
- CollectionsUtil.cs
- SerializationHelper.cs
- DecimalKeyFrameCollection.cs
- HwndAppCommandInputProvider.cs
- FileLogRecordEnumerator.cs
- CopyAttributesAction.cs
- PersistChildrenAttribute.cs
- IDispatchConstantAttribute.cs
- SymbolType.cs
- DataGrid.cs
- XPathNodeIterator.cs
- SplashScreen.cs
- GridViewAutoFormat.cs
- XmlChildNodes.cs
- AttributeEmitter.cs
- XmlAnyElementAttribute.cs
- SqlProvider.cs
- QilInvokeEarlyBound.cs
- EventDescriptorCollection.cs
- ProfessionalColorTable.cs
- HashAlgorithm.cs
- VersionedStream.cs
- BinHexEncoder.cs
- MetadataArtifactLoaderFile.cs
- AutomationElementIdentifiers.cs
- OletxVolatileEnlistment.cs
- Assert.cs
- RunInstallerAttribute.cs
- PropertyDescriptorGridEntry.cs
- BinaryExpression.cs
- SqlTransaction.cs
- SqlDataReader.cs
- Processor.cs
- DefaultValueTypeConverter.cs
- ProcessHostMapPath.cs
- AppModelKnownContentFactory.cs
- DescendantBaseQuery.cs
- DataGridItemAutomationPeer.cs
- ConstNode.cs
- NeutralResourcesLanguageAttribute.cs
- ProjectionCamera.cs
- RoutedEvent.cs
- IxmlLineInfo.cs
- IntermediatePolicyValidator.cs
- GradientPanel.cs
- WorkflowMarkupSerializationProvider.cs
- KoreanLunisolarCalendar.cs
- TreeViewItem.cs
- RegisterInfo.cs
- PointLightBase.cs
- TemplateNodeContextMenu.cs
- XmlDocumentSerializer.cs
- TypedServiceChannelBuilder.cs
- TextDecorationCollectionConverter.cs
- DesigntimeLicenseContextSerializer.cs
- AttachedAnnotation.cs
- BindingMemberInfo.cs
- ExeContext.cs
- ProfilePropertyNameValidator.cs
- TreeViewItem.cs
- DesignerView.cs
- DelayDesigner.cs
- ProxyWebPartConnectionCollection.cs