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
- ZoneButton.cs
- NativeObjectSecurity.cs
- MatchAttribute.cs
- AppDomainUnloadedException.cs
- ReadOnlyDataSourceView.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- TypeUtil.cs
- NetworkInterface.cs
- SelectedDatesCollection.cs
- ConfigXmlCDataSection.cs
- BitConverter.cs
- CalendarItem.cs
- Annotation.cs
- ISAPIWorkerRequest.cs
- PerformanceCounterPermissionEntryCollection.cs
- LoginView.cs
- ForAllOperator.cs
- FtpWebResponse.cs
- ConfigurationManagerInternal.cs
- DiagnosticsConfiguration.cs
- GraphicsPathIterator.cs
- Utils.cs
- QueueProcessor.cs
- PropertiesTab.cs
- SqlDataSourceCommandEventArgs.cs
- CapabilitiesSection.cs
- PopupRootAutomationPeer.cs
- XmlBinaryWriter.cs
- BatchServiceHost.cs
- HScrollBar.cs
- SimpleApplicationHost.cs
- Timer.cs
- BaseParagraph.cs
- SetterBaseCollection.cs
- RoutedUICommand.cs
- DES.cs
- Models.cs
- CollectionExtensions.cs
- WriteFileContext.cs
- TreeWalkHelper.cs
- DesignerProperties.cs
- MemberJoinTreeNode.cs
- FormDesigner.cs
- XmlDataSourceView.cs
- Compiler.cs
- DictionarySectionHandler.cs
- WriteStateInfoBase.cs
- Processor.cs
- ManipulationLogic.cs
- CqlParser.cs
- XmlDesigner.cs
- Pair.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- HttpProcessUtility.cs
- WebBaseEventKeyComparer.cs
- PeoplePickerWrapper.cs
- EmptyElement.cs
- PrtTicket_Public.cs
- TypeToken.cs
- TextElementCollection.cs
- NamespaceTable.cs
- AnnotationResourceCollection.cs
- SiteMapDesignerDataSourceView.cs
- VersionConverter.cs
- Stroke2.cs
- PreviewPageInfo.cs
- Propagator.JoinPropagator.cs
- InvalidCommandTreeException.cs
- CryptoKeySecurity.cs
- DebuggerAttributes.cs
- EmptyTextWriter.cs
- GridViewSortEventArgs.cs
- SmiXetterAccessMap.cs
- HttpContext.cs
- XmlDataSourceNodeDescriptor.cs
- ThrowHelper.cs
- RestHandlerFactory.cs
- SourceLineInfo.cs
- TextChange.cs
- EntitySqlQueryCacheKey.cs
- EncodingNLS.cs
- GlyphInfoList.cs
- ExpressionCopier.cs
- VariableQuery.cs
- ZipIOCentralDirectoryBlock.cs
- Monitor.cs
- BamlRecordReader.cs
- MetadataArtifactLoaderCompositeFile.cs
- RawStylusInputReport.cs
- IgnoreSectionHandler.cs
- WindowsProgressbar.cs
- OAVariantLib.cs
- UpdatePanelControlTrigger.cs
- WrappedKeySecurityTokenParameters.cs
- DataViewListener.cs
- ToolStripTextBox.cs
- ErrorWrapper.cs
- OracleDateTime.cs
- BitmapEffectDrawing.cs
- Size3DConverter.cs