Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextStore.cs
- TextChangedEventArgs.cs
- DataKeyCollection.cs
- CompositionAdorner.cs
- XmlSchemaSearchPattern.cs
- CaseStatement.cs
- SrgsRuleRef.cs
- XmlTextReaderImpl.cs
- FormatterServices.cs
- CriticalExceptions.cs
- StdValidatorsAndConverters.cs
- COM2ExtendedUITypeEditor.cs
- ToolStripProgressBar.cs
- ContentIterators.cs
- PageThemeParser.cs
- IsolatedStoragePermission.cs
- EventTrigger.cs
- SamlAuthenticationClaimResource.cs
- MeasureItemEvent.cs
- OleDbWrapper.cs
- WebMethodAttribute.cs
- GridView.cs
- InteropAutomationProvider.cs
- Group.cs
- CodeDirectiveCollection.cs
- HttpResponseInternalWrapper.cs
- ApplicationBuildProvider.cs
- ValueTypeFixupInfo.cs
- ItemsControl.cs
- ReceiveContextCollection.cs
- Timeline.cs
- ListBoxItemWrapperAutomationPeer.cs
- ListViewGroupConverter.cs
- EncoderNLS.cs
- WebConfigurationFileMap.cs
- FixedSOMFixedBlock.cs
- StylusPointPropertyInfo.cs
- DataGridSortCommandEventArgs.cs
- CodeDomDecompiler.cs
- PackagingUtilities.cs
- DefaultEventAttribute.cs
- WinFormsSpinner.cs
- SwitchElementsCollection.cs
- serverconfig.cs
- String.cs
- PopupEventArgs.cs
- SqlDependencyListener.cs
- BaseConfigurationRecord.cs
- SafeSecurityHandles.cs
- PageOrientation.cs
- WCFModelStrings.Designer.cs
- WindowsListViewItemCheckBox.cs
- Stack.cs
- OutputCacheSection.cs
- WebBrowserSiteBase.cs
- HttpRequestBase.cs
- MarshalDirectiveException.cs
- EntityDataSourceChangedEventArgs.cs
- TextWriter.cs
- TableAdapterManagerHelper.cs
- FontFamilyIdentifier.cs
- UnaryOperationBinder.cs
- SelectionEditor.cs
- WorkflowViewService.cs
- HttpContext.cs
- XmlnsPrefixAttribute.cs
- TableHeaderCell.cs
- NetTcpSectionData.cs
- coordinatorfactory.cs
- BaseHashHelper.cs
- TextRenderingModeValidation.cs
- SessionIDManager.cs
- HierarchicalDataBoundControlAdapter.cs
- SafeLibraryHandle.cs
- MsmqTransportBindingElement.cs
- WebEvents.cs
- ProtocolsConfigurationEntry.cs
- ScaleTransform.cs
- ConnectionManagementElement.cs
- EnvelopedPkcs7.cs
- ListItemsPage.cs
- AuthorizationRuleCollection.cs
- TextSimpleMarkerProperties.cs
- XhtmlTextWriter.cs
- Single.cs
- PrintDialog.cs
- PropertyDescriptors.cs
- HttpContextBase.cs
- RadioButtonBaseAdapter.cs
- Binding.cs
- Context.cs
- DataGridColumnHeaderAutomationPeer.cs
- MetadataPropertyvalue.cs
- SqlServices.cs
- CornerRadiusConverter.cs
- RuntimeConfigLKG.cs
- WindowsEditBoxRange.cs
- AsyncResult.cs
- FutureFactory.cs
- WhileDesigner.cs