Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / cookiecollection.cs / 1305376 / cookiecollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net { using System.Collections; using System.Globalization; using System.Runtime.Serialization; // // CookieCollection // // A list of cookies maintained in Sorted order. Only one cookie with matching Name/Domain/Path // ////// [Serializable] public class CookieCollection : ICollection { // fields internal enum Stamp { Check = 0, Set = 1, SetToUnused = 2, SetToMaxUsed = 3, } internal int m_version; ArrayList m_list = new ArrayList(); DateTime m_TimeStamp = DateTime.MinValue; bool m_has_other_versions; [OptionalField] bool m_IsReadOnly; // constructors ///[To be supplied.] ////// public CookieCollection() { m_IsReadOnly = true; } internal CookieCollection(bool IsReadOnly) { m_IsReadOnly = IsReadOnly; } // properties ///[To be supplied.] ////// public bool IsReadOnly { get { return m_IsReadOnly; } } ///[To be supplied.] ////// public Cookie this[int index] { get { if (index < 0 || index >= m_list.Count) { throw new ArgumentOutOfRangeException("index"); } return (Cookie)(m_list[index]); } } ///[To be supplied.] ////// public Cookie this[string name] { get { foreach (Cookie c in m_list) { if (string.Compare(c.Name, name, StringComparison.OrdinalIgnoreCase ) == 0) { return c; } } return null; } } // methods ///[To be supplied.] ////// public void Add(Cookie cookie) { if (cookie == null) { throw new ArgumentNullException("cookie"); } ++m_version; int idx = IndexOf(cookie); if (idx == -1) { m_list.Add(cookie); } else { m_list[idx] = cookie; } } ///[To be supplied.] ////// public void Add(CookieCollection cookies) { if (cookies == null) { throw new ArgumentNullException("cookies"); } //if (cookies == this) { // cookies = new CookieCollection(cookies); //} foreach (Cookie cookie in cookies) { Add(cookie); } } // ICollection interface ///[To be supplied.] ////// public int Count { get { return m_list.Count; } } ///[To be supplied.] ////// public bool IsSynchronized { get { return false; } } ///[To be supplied.] ////// public object SyncRoot { get { return this; } } ///[To be supplied.] ////// public void CopyTo(Array array, int index) { m_list.CopyTo(array, index); } ///[To be supplied.] ////// public void CopyTo(Cookie[] array, int index) { m_list.CopyTo(array, index); } internal DateTime TimeStamp(Stamp how) { switch (how) { case Stamp.Set: m_TimeStamp = DateTime.Now; break; case Stamp.SetToMaxUsed: m_TimeStamp = DateTime.MaxValue; break; case Stamp.SetToUnused: m_TimeStamp = DateTime.MinValue; break; case Stamp.Check: default: break; } return m_TimeStamp; } // This is for internal cookie container usage // For others not that m_has_other_versions gets changed ONLY in InternalAdd internal bool IsOtherVersionSeen{ get { return m_has_other_versions; } } // If isStrict == false, assumes that incoming cookie is unique // If isStrict == true, replace the cookie if found same with newest Variant // returns 1 if added, 0 if replaced or rejected internal int InternalAdd(Cookie cookie, bool isStrict) { int ret = 1; if (isStrict) { IComparer comp = Cookie.GetComparer(); int idx = 0; foreach (Cookie c in m_list) { if (comp.Compare(cookie, c) == 0) { ret = 0; //will replace or reject //Cookie2 spec requires that new Variant cookie overwrite the old one if (c.Variant <= cookie.Variant) { m_list[idx] = cookie; } break; } ++idx; } if (idx == m_list.Count) { m_list.Add(cookie); } } else { m_list.Add(cookie); } if (cookie.Version != Cookie.MaxSupportedVersion) { m_has_other_versions = true; } return ret; } internal int IndexOf(Cookie cookie) { IComparer comp = Cookie.GetComparer(); int idx = 0; foreach (Cookie c in m_list) { if (comp.Compare(cookie, c) == 0) { return idx; } ++idx; } return -1; } internal void RemoveAt(int idx) { m_list.RemoveAt(idx); } // IEnumerable interface ///[To be supplied.] ////// public IEnumerator GetEnumerator() { return new CookieCollectionEnumerator(this); } #if DEBUG ///[To be supplied.] ////// internal void Dump() { GlobalLog.Print("CookieCollection:"); foreach (Cookie cookie in this) { cookie.Dump(); } } #endif //Not used anymore delete ? private class CookieCollectionEnumerator : IEnumerator { CookieCollection m_cookies; int m_count; int m_index = -1; int m_version; internal CookieCollectionEnumerator(CookieCollection cookies) { m_cookies = cookies; m_count = cookies.Count; m_version = cookies.m_version; } // IEnumerator interface object IEnumerator.Current { get { if (m_index < 0 || m_index >= m_count) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumOpCantHappen)); } if (m_version != m_cookies.m_version) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumFailedVersion)); } return m_cookies[m_index]; } } bool IEnumerator.MoveNext() { if (m_version != m_cookies.m_version) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumFailedVersion)); } if (++m_index < m_count) { return true; } m_index = m_count; return false; } void IEnumerator.Reset() { m_index = -1; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net { using System.Collections; using System.Globalization; using System.Runtime.Serialization; // // CookieCollection // // A list of cookies maintained in Sorted order. Only one cookie with matching Name/Domain/Path // ////// [Serializable] public class CookieCollection : ICollection { // fields internal enum Stamp { Check = 0, Set = 1, SetToUnused = 2, SetToMaxUsed = 3, } internal int m_version; ArrayList m_list = new ArrayList(); DateTime m_TimeStamp = DateTime.MinValue; bool m_has_other_versions; [OptionalField] bool m_IsReadOnly; // constructors ///[To be supplied.] ////// public CookieCollection() { m_IsReadOnly = true; } internal CookieCollection(bool IsReadOnly) { m_IsReadOnly = IsReadOnly; } // properties ///[To be supplied.] ////// public bool IsReadOnly { get { return m_IsReadOnly; } } ///[To be supplied.] ////// public Cookie this[int index] { get { if (index < 0 || index >= m_list.Count) { throw new ArgumentOutOfRangeException("index"); } return (Cookie)(m_list[index]); } } ///[To be supplied.] ////// public Cookie this[string name] { get { foreach (Cookie c in m_list) { if (string.Compare(c.Name, name, StringComparison.OrdinalIgnoreCase ) == 0) { return c; } } return null; } } // methods ///[To be supplied.] ////// public void Add(Cookie cookie) { if (cookie == null) { throw new ArgumentNullException("cookie"); } ++m_version; int idx = IndexOf(cookie); if (idx == -1) { m_list.Add(cookie); } else { m_list[idx] = cookie; } } ///[To be supplied.] ////// public void Add(CookieCollection cookies) { if (cookies == null) { throw new ArgumentNullException("cookies"); } //if (cookies == this) { // cookies = new CookieCollection(cookies); //} foreach (Cookie cookie in cookies) { Add(cookie); } } // ICollection interface ///[To be supplied.] ////// public int Count { get { return m_list.Count; } } ///[To be supplied.] ////// public bool IsSynchronized { get { return false; } } ///[To be supplied.] ////// public object SyncRoot { get { return this; } } ///[To be supplied.] ////// public void CopyTo(Array array, int index) { m_list.CopyTo(array, index); } ///[To be supplied.] ////// public void CopyTo(Cookie[] array, int index) { m_list.CopyTo(array, index); } internal DateTime TimeStamp(Stamp how) { switch (how) { case Stamp.Set: m_TimeStamp = DateTime.Now; break; case Stamp.SetToMaxUsed: m_TimeStamp = DateTime.MaxValue; break; case Stamp.SetToUnused: m_TimeStamp = DateTime.MinValue; break; case Stamp.Check: default: break; } return m_TimeStamp; } // This is for internal cookie container usage // For others not that m_has_other_versions gets changed ONLY in InternalAdd internal bool IsOtherVersionSeen{ get { return m_has_other_versions; } } // If isStrict == false, assumes that incoming cookie is unique // If isStrict == true, replace the cookie if found same with newest Variant // returns 1 if added, 0 if replaced or rejected internal int InternalAdd(Cookie cookie, bool isStrict) { int ret = 1; if (isStrict) { IComparer comp = Cookie.GetComparer(); int idx = 0; foreach (Cookie c in m_list) { if (comp.Compare(cookie, c) == 0) { ret = 0; //will replace or reject //Cookie2 spec requires that new Variant cookie overwrite the old one if (c.Variant <= cookie.Variant) { m_list[idx] = cookie; } break; } ++idx; } if (idx == m_list.Count) { m_list.Add(cookie); } } else { m_list.Add(cookie); } if (cookie.Version != Cookie.MaxSupportedVersion) { m_has_other_versions = true; } return ret; } internal int IndexOf(Cookie cookie) { IComparer comp = Cookie.GetComparer(); int idx = 0; foreach (Cookie c in m_list) { if (comp.Compare(cookie, c) == 0) { return idx; } ++idx; } return -1; } internal void RemoveAt(int idx) { m_list.RemoveAt(idx); } // IEnumerable interface ///[To be supplied.] ////// public IEnumerator GetEnumerator() { return new CookieCollectionEnumerator(this); } #if DEBUG ///[To be supplied.] ////// internal void Dump() { GlobalLog.Print("CookieCollection:"); foreach (Cookie cookie in this) { cookie.Dump(); } } #endif //Not used anymore delete ? private class CookieCollectionEnumerator : IEnumerator { CookieCollection m_cookies; int m_count; int m_index = -1; int m_version; internal CookieCollectionEnumerator(CookieCollection cookies) { m_cookies = cookies; m_count = cookies.Count; m_version = cookies.m_version; } // IEnumerator interface object IEnumerator.Current { get { if (m_index < 0 || m_index >= m_count) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumOpCantHappen)); } if (m_version != m_cookies.m_version) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumFailedVersion)); } return m_cookies[m_index]; } } bool IEnumerator.MoveNext() { if (m_version != m_cookies.m_version) { throw new InvalidOperationException(SR.GetString(SR.InvalidOperation_EnumFailedVersion)); } if (++m_index < m_count) { return true; } m_index = m_count; return false; } void IEnumerator.Reset() { m_index = -1; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FormsIdentity.cs
- NativeMethods.cs
- dtdvalidator.cs
- InternalBufferManager.cs
- ComponentManagerBroker.cs
- StringWriter.cs
- RewritingSimplifier.cs
- XmlTextAttribute.cs
- WebPartConnectionsConfigureVerb.cs
- TextCompositionManager.cs
- RuntimeUtils.cs
- IndependentlyAnimatedPropertyMetadata.cs
- TraceContextEventArgs.cs
- SchemaSetCompiler.cs
- XmlMemberMapping.cs
- FaultHandlingFilter.cs
- AnchoredBlock.cs
- SafeTimerHandle.cs
- MessageQueueInstaller.cs
- Rotation3DKeyFrameCollection.cs
- SByte.cs
- PageContent.cs
- EventMappingSettingsCollection.cs
- X509Certificate2.cs
- ConsoleKeyInfo.cs
- EntityConnection.cs
- SqlDependency.cs
- XslCompiledTransform.cs
- ImmutableObjectAttribute.cs
- WindowsToolbar.cs
- EncryptedHeader.cs
- Msmq3PoisonHandler.cs
- RtfControls.cs
- ReferentialConstraintRoleElement.cs
- ConnectionProviderAttribute.cs
- OpenCollectionAsyncResult.cs
- ParserExtension.cs
- DebugView.cs
- ImageAnimator.cs
- ReadOnlyCollectionBase.cs
- CurrentTimeZone.cs
- FixedTextView.cs
- RequestSecurityTokenForGetBrowserToken.cs
- DbConnectionPoolOptions.cs
- Html32TextWriter.cs
- CallbackTimeoutsBehavior.cs
- FilteredDataSetHelper.cs
- StaticFileHandler.cs
- DbDataReader.cs
- AsyncCompletedEventArgs.cs
- OuterGlowBitmapEffect.cs
- ProxyAttribute.cs
- WithStatement.cs
- x509store.cs
- XPathExpr.cs
- BitmapEffectGeneralTransform.cs
- MetadataItemCollectionFactory.cs
- remotingproxy.cs
- TextEmbeddedObject.cs
- UdpSocket.cs
- SafeRightsManagementSessionHandle.cs
- DateTimeValueSerializerContext.cs
- Compensate.cs
- ExpandCollapseProviderWrapper.cs
- CacheMemory.cs
- TypeSource.cs
- SqlProviderUtilities.cs
- PointHitTestResult.cs
- TypeHelpers.cs
- X500Name.cs
- DataControlLinkButton.cs
- SectionRecord.cs
- CompositeDispatchFormatter.cs
- BuildDependencySet.cs
- Quaternion.cs
- PropVariant.cs
- FigureHelper.cs
- MarkupExtensionSerializer.cs
- ControlLocalizer.cs
- StylusCaptureWithinProperty.cs
- EdmToObjectNamespaceMap.cs
- X509CertificateCollection.cs
- TraceSource.cs
- DataGridTemplateColumn.cs
- StringFormat.cs
- ContentType.cs
- XmlNamespaceManager.cs
- ToolStripDropDownClosedEventArgs.cs
- BufferedWebEventProvider.cs
- SqlServices.cs
- XmlIlTypeHelper.cs
- ServiceContractViewControl.cs
- ConsumerConnectionPoint.cs
- Matrix3DValueSerializer.cs
- ImmutableCollection.cs
- RawUIStateInputReport.cs
- AssociationTypeEmitter.cs
- DataStreams.cs
- StorageFunctionMapping.cs
- StateDesigner.cs