Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Net / System / Net / cookiecollection.cs / 1 / 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
//
///
/// [To be supplied.]
///
[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.
//------------------------------------------------------------------------------
//
// 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
//
///
/// [To be supplied.]
///
[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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ResourceManagerWrapper.cs
- XmlExpressionDumper.cs
- BindingNavigator.cs
- DbBuffer.cs
- RankException.cs
- ContextMenuAutomationPeer.cs
- AutoGeneratedField.cs
- Renderer.cs
- NonVisualControlAttribute.cs
- Int32Animation.cs
- DeferredElementTreeState.cs
- UnsafeNativeMethods.cs
- MarkerProperties.cs
- AdRotator.cs
- ToolStripComboBox.cs
- IconBitmapDecoder.cs
- RowParagraph.cs
- OdbcEnvironmentHandle.cs
- Point3DCollectionValueSerializer.cs
- HtmlPageAdapter.cs
- Timer.cs
- XPathItem.cs
- Aggregates.cs
- ControlPaint.cs
- KeyGestureValueSerializer.cs
- DrawItemEvent.cs
- MobileUITypeEditor.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- MarkupExtensionParser.cs
- BrowserCapabilitiesFactoryBase.cs
- SignedPkcs7.cs
- ViewLoader.cs
- OracleParameter.cs
- JoinSymbol.cs
- DefaultDialogButtons.cs
- PipelineModuleStepContainer.cs
- XmlLinkedNode.cs
- Collection.cs
- HttpApplicationFactory.cs
- DataGridViewCellValueEventArgs.cs
- AssertFilter.cs
- WebHeaderCollection.cs
- CompilerWrapper.cs
- SecUtil.cs
- RectConverter.cs
- PrintDialog.cs
- ChangePasswordAutoFormat.cs
- RefreshEventArgs.cs
- ContentOperations.cs
- InkPresenterAutomationPeer.cs
- DbgCompiler.cs
- SqlFacetAttribute.cs
- ModuleConfigurationInfo.cs
- MediaContextNotificationWindow.cs
- ValidationErrorEventArgs.cs
- WebControlAdapter.cs
- Size.cs
- WebPartConnectVerb.cs
- RuntimeHandles.cs
- DesignBindingEditor.cs
- ClonableStack.cs
- XamlReaderHelper.cs
- WindowsGraphicsCacheManager.cs
- SqlUserDefinedAggregateAttribute.cs
- GeometryConverter.cs
- LinqDataSourceUpdateEventArgs.cs
- ViewPort3D.cs
- IncrementalReadDecoders.cs
- Rotation3D.cs
- TextTrailingCharacterEllipsis.cs
- XmlUnspecifiedAttribute.cs
- ReadContentAsBinaryHelper.cs
- Grammar.cs
- Perspective.cs
- RoutedCommand.cs
- SyndicationDeserializer.cs
- ObjectRef.cs
- DbProviderServices.cs
- BamlBinaryWriter.cs
- HostUtils.cs
- PenLineCapValidation.cs
- DetailsViewRowCollection.cs
- MergePropertyDescriptor.cs
- EntityWithKeyStrategy.cs
- DataGridView.cs
- SequentialOutput.cs
- WindowShowOrOpenTracker.cs
- AssertFilter.cs
- VarRefManager.cs
- DBConnection.cs
- NTAccount.cs
- EmptyReadOnlyDictionaryInternal.cs
- ServiceNameElementCollection.cs
- DocumentSchemaValidator.cs
- WorkItem.cs
- AssemblyResourceLoader.cs
- SmiSettersStream.cs
- LeaseManager.cs
- PageSettings.cs
- Literal.cs