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
- TextSelection.cs
- XPathEmptyIterator.cs
- ToggleProviderWrapper.cs
- ViewCellRelation.cs
- XmlSerializationGeneratedCode.cs
- MeasurementDCInfo.cs
- RequestCacheManager.cs
- RouteUrlExpressionBuilder.cs
- wgx_commands.cs
- SplayTreeNode.cs
- Brush.cs
- FormViewInsertEventArgs.cs
- CloudCollection.cs
- ProtocolsSection.cs
- WindowsAuthenticationEventArgs.cs
- HighlightVisual.cs
- GeneratedContractType.cs
- XmlHierarchyData.cs
- IMembershipProvider.cs
- TextViewSelectionProcessor.cs
- ValueProviderWrapper.cs
- SerialReceived.cs
- SymbolMethod.cs
- LoginName.cs
- NameObjectCollectionBase.cs
- CodeParameterDeclarationExpression.cs
- ConnectionsZone.cs
- DiscardableAttribute.cs
- Range.cs
- NotCondition.cs
- SqlFunctionAttribute.cs
- WinEventHandler.cs
- GenericAuthenticationEventArgs.cs
- BookmarkScopeManager.cs
- NativeCompoundFileAPIs.cs
- SQLBinary.cs
- Stacktrace.cs
- Pipe.cs
- SendKeys.cs
- XmlNamespaceMapping.cs
- SafeProcessHandle.cs
- ActiveXContainer.cs
- SecurityHelper.cs
- GenerateScriptTypeAttribute.cs
- DocumentXmlWriter.cs
- FunctionDetailsReader.cs
- DataListItemCollection.cs
- SponsorHelper.cs
- Pool.cs
- QuotedPrintableStream.cs
- Overlapped.cs
- ControlAdapter.cs
- Base64Encoder.cs
- RtfControls.cs
- MimeTypeAttribute.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- GridViewItemAutomationPeer.cs
- HwndSourceParameters.cs
- WindowsRebar.cs
- ChannelCacheDefaults.cs
- ArrangedElementCollection.cs
- PlainXmlWriter.cs
- PropertyValueChangedEvent.cs
- WebPartCollection.cs
- RegexRunnerFactory.cs
- EntityDesignPluralizationHandler.cs
- MailWebEventProvider.cs
- Visual3DCollection.cs
- ResolveNameEventArgs.cs
- OleDbInfoMessageEvent.cs
- ToolStripItemEventArgs.cs
- NotFiniteNumberException.cs
- PageRouteHandler.cs
- DragStartedEventArgs.cs
- WebPartAuthorizationEventArgs.cs
- ObjectListItemCollection.cs
- NameTable.cs
- Int32CAMarshaler.cs
- RefreshPropertiesAttribute.cs
- BinaryCommonClasses.cs
- HttpCookie.cs
- Normalizer.cs
- SortKey.cs
- MenuItemStyleCollection.cs
- WorkBatch.cs
- WebPageTraceListener.cs
- WorkflowDesignerColors.cs
- CodeIdentifier.cs
- XamlToRtfWriter.cs
- XmlDataLoader.cs
- DataPointer.cs
- LocalizeDesigner.cs
- HostingEnvironmentException.cs
- BinaryReader.cs
- ConfigXmlWhitespace.cs
- ToolStripDropDownClosedEventArgs.cs
- XhtmlBasicCommandAdapter.cs
- CommonGetThemePartSize.cs
- BamlRecordWriter.cs
- ValueType.cs