Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- SortDescriptionCollection.cs
- SQLDateTimeStorage.cs
- DbConnectionHelper.cs
- DynamicRendererThreadManager.cs
- LazyTextWriterCreator.cs
- DbLambda.cs
- VectorAnimation.cs
- SchemaTableOptionalColumn.cs
- BitmapFrameDecode.cs
- WebPartVerb.cs
- DispatcherObject.cs
- GenericUI.cs
- Timer.cs
- ServiceContractDetailViewControl.cs
- PngBitmapDecoder.cs
- TypedTableBase.cs
- QueryGeneratorBase.cs
- TagPrefixInfo.cs
- Interlocked.cs
- wmiprovider.cs
- ToolStripSplitStackLayout.cs
- BinaryCommonClasses.cs
- BulletedListEventArgs.cs
- TagPrefixInfo.cs
- MediaContextNotificationWindow.cs
- QilLiteral.cs
- DistributedTransactionPermission.cs
- LayoutEngine.cs
- SqlWebEventProvider.cs
- Brush.cs
- Accessible.cs
- BufferedGraphics.cs
- ColorContextHelper.cs
- PageParser.cs
- FormatVersion.cs
- FormsAuthenticationUserCollection.cs
- DataRow.cs
- dataprotectionpermission.cs
- LinkLabelLinkClickedEvent.cs
- DiscriminatorMap.cs
- IArgumentProvider.cs
- RtfNavigator.cs
- BindableTemplateBuilder.cs
- BitmapEditor.cs
- TreeIterator.cs
- ImageMap.cs
- ItemCheckEvent.cs
- InlineObject.cs
- RoutedEventHandlerInfo.cs
- XmlAttributeCache.cs
- TagMapCollection.cs
- FixedDSBuilder.cs
- messageonlyhwndwrapper.cs
- NamespaceDisplay.xaml.cs
- SignatureToken.cs
- CodeVariableDeclarationStatement.cs
- XslCompiledTransform.cs
- ping.cs
- PropertyMapper.cs
- ListenerSessionConnection.cs
- Command.cs
- FontDialog.cs
- WebPartDisplayMode.cs
- Query.cs
- ButtonAutomationPeer.cs
- BitmapData.cs
- SessionStateContainer.cs
- NamedPipeTransportElement.cs
- TreeView.cs
- FlowSwitch.cs
- WebAdminConfigurationHelper.cs
- SQlBooleanStorage.cs
- OutKeywords.cs
- SoapFault.cs
- XmlSchemaNotation.cs
- PagerSettings.cs
- DesignerOptionService.cs
- UnconditionalPolicy.cs
- ModelItemDictionary.cs
- FormattedText.cs
- BindingValueChangedEventArgs.cs
- File.cs
- Activator.cs
- ExpressionConverter.cs
- ToolTipAutomationPeer.cs
- BindingMemberInfo.cs
- CodeStatementCollection.cs
- MarshalByValueComponent.cs
- CompilationUtil.cs
- DrawListViewItemEventArgs.cs
- DependencyPropertyHelper.cs
- TemplateControlParser.cs
- ConfigurationSection.cs
- FunctionParameter.cs
- CharacterString.cs
- PropertySourceInfo.cs
- FreeFormDragDropManager.cs
- EmptyImpersonationContext.cs
- DbSource.cs
- InputQueueChannelAcceptor.cs