Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1 / LeaseManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //+---------------------------------------------------------------------------- // // Microsoft Windows // File: LeaseManager.cs // // Contents: Administers the leases in an appdomain // // History: 1/5/00[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HtmlElementErrorEventArgs.cs
- SamlSubjectStatement.cs
- LinkTarget.cs
- ModuleBuilderData.cs
- GAC.cs
- Sql8ConformanceChecker.cs
- CodeTypeOfExpression.cs
- EntityKey.cs
- ToolboxControl.cs
- DesignerImageAdapter.cs
- DataTemplateSelector.cs
- Column.cs
- Int32RectValueSerializer.cs
- MergeFilterQuery.cs
- TextTrailingWordEllipsis.cs
- BuildProvider.cs
- EpmSyndicationContentSerializer.cs
- CodeTypeDelegate.cs
- AssemblyResolver.cs
- CodeDomDesignerLoader.cs
- WorkflowRuntimeServiceElement.cs
- SecureStringHasher.cs
- AttachmentCollection.cs
- BitmapData.cs
- Context.cs
- SvcMapFileLoader.cs
- ClientUrlResolverWrapper.cs
- UnsafePeerToPeerMethods.cs
- DynamicQueryableWrapper.cs
- TrustSection.cs
- SecurityTokenException.cs
- GeometryConverter.cs
- ExternalFile.cs
- ProcessStartInfo.cs
- CookieParameter.cs
- EventSchemaTraceListener.cs
- VerificationException.cs
- LateBoundBitmapDecoder.cs
- ToolboxComponentsCreatedEventArgs.cs
- WindowsMenu.cs
- WrappedReader.cs
- RemoteWebConfigurationHostServer.cs
- TabItemAutomationPeer.cs
- SoapMessage.cs
- ValueTypeFixupInfo.cs
- SelfIssuedSamlTokenFactory.cs
- SchemaImporter.cs
- DataControlPagerLinkButton.cs
- BrowserDefinition.cs
- PageStatePersister.cs
- HtmlTableCellCollection.cs
- PrimitiveType.cs
- XhtmlBasicCalendarAdapter.cs
- FormattedText.cs
- JsonFaultDetail.cs
- TraceHandlerErrorFormatter.cs
- DataGridViewCellPaintingEventArgs.cs
- DataListAutoFormat.cs
- WebDescriptionAttribute.cs
- ToolStripDropTargetManager.cs
- Triplet.cs
- ServiceProviders.cs
- IdentitySection.cs
- X509ThumbprintKeyIdentifierClause.cs
- CachedRequestParams.cs
- DebugInfoExpression.cs
- AttributedMetaModel.cs
- StateMachineWorkflowDesigner.cs
- AvTraceDetails.cs
- WebPageTraceListener.cs
- ProfilePropertyNameValidator.cs
- NativeCppClassAttribute.cs
- ImpersonateTokenRef.cs
- DuplicateMessageDetector.cs
- TextBoxBase.cs
- EUCJPEncoding.cs
- ScrollItemPatternIdentifiers.cs
- XmlSchemaSimpleTypeUnion.cs
- ClientBuildManager.cs
- CommonXSendMessage.cs
- DomainLiteralReader.cs
- ValueChangedEventManager.cs
- TextSegment.cs
- FilterQuery.cs
- ContextQuery.cs
- WindowsBrush.cs
- TreeView.cs
- XslAst.cs
- RelationshipType.cs
- Relationship.cs
- ReflectionUtil.cs
- InterleavedZipPartStream.cs
- AffineTransform3D.cs
- OutOfMemoryException.cs
- SoapInteropTypes.cs
- UnsafeNativeMethods.cs
- CipherData.cs
- HtmlButton.cs
- SchemaNamespaceManager.cs
- SizeChangedEventArgs.cs