Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Net / System / Net / Mail / SevenBitStream.cs / 1 / SevenBitStream.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.Mime
{
using System;
using System.IO;
///
/// This stream validates outgoing bytes to be within the
/// acceptible range of 0 - 127. Writes will throw if a
/// value > 127 is found.
///
internal class SevenBitStream : DelegatedStream
{
///
/// ctor.
///
/// Underlying stream
internal SevenBitStream(Stream stream) : base(stream)
{
}
///
/// Writes the specified content to the underlying stream
///
/// Buffer to write
/// Offset within buffer to start writing
/// Count of bytes to write
/// Callback to call when write completes
/// State to pass to callback
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
if (buffer == null)
throw new ArgumentNullException("buffer");
if (offset < 0 || offset >= buffer.Length)
throw new ArgumentOutOfRangeException("offset");
if (offset + count > buffer.Length)
throw new ArgumentOutOfRangeException("count");
CheckBytes(buffer, offset, count);
IAsyncResult result = base.BeginWrite(buffer, offset, count, callback, state);
return result;
}
///
/// Writes the specified content to the underlying stream
///
/// Buffer to write
/// Offset within buffer to start writing
/// Count of bytes to write
public override void Write(byte[] buffer, int offset, int count)
{
if (buffer == null)
throw new ArgumentNullException("buffer");
if (offset < 0 || offset >= buffer.Length)
throw new ArgumentOutOfRangeException("offset");
if (offset + count > buffer.Length)
throw new ArgumentOutOfRangeException("count");
CheckBytes(buffer, offset, count);
base.Write(buffer, offset, count);
}
// helper methods
///
/// Checks the data in the buffer for bytes > 127.
///
/// Buffer containing data
/// Offset within buffer to start checking
/// Count of bytes to check
void CheckBytes(byte[] buffer, int offset, int count)
{
for (int i = count; i < offset + count; i++)
{
if (buffer[i] > 127)
throw new FormatException(SR.GetString(SR.Mail7BitStreamInvalidCharacter));
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.Mime
{
using System;
using System.IO;
///
/// This stream validates outgoing bytes to be within the
/// acceptible range of 0 - 127. Writes will throw if a
/// value > 127 is found.
///
internal class SevenBitStream : DelegatedStream
{
///
/// ctor.
///
/// Underlying stream
internal SevenBitStream(Stream stream) : base(stream)
{
}
///
/// Writes the specified content to the underlying stream
///
/// Buffer to write
/// Offset within buffer to start writing
/// Count of bytes to write
/// Callback to call when write completes
/// State to pass to callback
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
if (buffer == null)
throw new ArgumentNullException("buffer");
if (offset < 0 || offset >= buffer.Length)
throw new ArgumentOutOfRangeException("offset");
if (offset + count > buffer.Length)
throw new ArgumentOutOfRangeException("count");
CheckBytes(buffer, offset, count);
IAsyncResult result = base.BeginWrite(buffer, offset, count, callback, state);
return result;
}
///
/// Writes the specified content to the underlying stream
///
/// Buffer to write
/// Offset within buffer to start writing
/// Count of bytes to write
public override void Write(byte[] buffer, int offset, int count)
{
if (buffer == null)
throw new ArgumentNullException("buffer");
if (offset < 0 || offset >= buffer.Length)
throw new ArgumentOutOfRangeException("offset");
if (offset + count > buffer.Length)
throw new ArgumentOutOfRangeException("count");
CheckBytes(buffer, offset, count);
base.Write(buffer, offset, count);
}
// helper methods
///
/// Checks the data in the buffer for bytes > 127.
///
/// Buffer containing data
/// Offset within buffer to start checking
/// Count of bytes to check
void CheckBytes(byte[] buffer, int offset, int count)
{
for (int i = count; i < offset + count; i++)
{
if (buffer[i] > 127)
throw new FormatException(SR.GetString(SR.Mail7BitStreamInvalidCharacter));
}
}
}
}
// 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
- Point4DConverter.cs
- ModelItem.cs
- Decoder.cs
- ImplicitInputBrush.cs
- ImageUrlEditor.cs
- UriExt.cs
- OleDbException.cs
- DesignerObjectListAdapter.cs
- WebPartZoneBase.cs
- SafeHandles.cs
- Rect.cs
- NativeMethodsOther.cs
- BamlLocalizableResourceKey.cs
- ContentElement.cs
- DataGridViewImageCell.cs
- InvalidOperationException.cs
- ExceptionValidationRule.cs
- DiscardableAttribute.cs
- ItemAutomationPeer.cs
- AddInProcess.cs
- CachedRequestParams.cs
- XmlUTF8TextWriter.cs
- SetterBaseCollection.cs
- FragmentQueryKB.cs
- View.cs
- SspiHelper.cs
- PointAnimationClockResource.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- ScriptingRoleServiceSection.cs
- DataObjectAttribute.cs
- OutputCacheProfileCollection.cs
- SharedPersonalizationStateInfo.cs
- SecurityTokenInclusionMode.cs
- StickyNoteContentControl.cs
- RowType.cs
- VerticalAlignConverter.cs
- Compensation.cs
- XmlDataImplementation.cs
- wgx_commands.cs
- SupportsEventValidationAttribute.cs
- CollectionView.cs
- MeshGeometry3D.cs
- StrongNameMembershipCondition.cs
- Hash.cs
- StringUtil.cs
- FormViewDeletedEventArgs.cs
- ObjectNotFoundException.cs
- AudioDeviceOut.cs
- WebPartVerbCollection.cs
- TCPClient.cs
- DataGridColumnCollection.cs
- CookieParameter.cs
- FormViewCommandEventArgs.cs
- Debug.cs
- ETagAttribute.cs
- AppDomain.cs
- BaseUriHelper.cs
- URIFormatException.cs
- TypeResolvingOptionsAttribute.cs
- EntityDataSourceViewSchema.cs
- SecureEnvironment.cs
- ExpressionsCollectionEditor.cs
- HandoffBehavior.cs
- DbDataReader.cs
- CompilationPass2Task.cs
- DocumentGridContextMenu.cs
- TextServicesCompartmentEventSink.cs
- XamlWriter.cs
- SafeNativeMethods.cs
- TripleDES.cs
- HttpProcessUtility.cs
- SqlError.cs
- FullTextState.cs
- FlowLayoutSettings.cs
- HandlerWithFactory.cs
- TabControl.cs
- ZipFileInfoCollection.cs
- OutputCacheProfileCollection.cs
- CodeDOMProvider.cs
- LoadGrammarCompletedEventArgs.cs
- StateChangeEvent.cs
- EditorBrowsableAttribute.cs
- BuildDependencySet.cs
- DocumentViewerConstants.cs
- FullTrustAssembly.cs
- BaseDataList.cs
- CodeDomSerializationProvider.cs
- EditorAttribute.cs
- DataGridViewRowPostPaintEventArgs.cs
- AttributeCollection.cs
- ToolStrip.cs
- backend.cs
- StaticTextPointer.cs
- CommandConverter.cs
- StsCommunicationException.cs
- TemplateManager.cs
- NameSpaceExtractor.cs
- PerfService.cs
- SizeAnimationBase.cs
- DataSvcMapFile.cs