Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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));
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlUrlResolver.cs
- OutputCacheSection.cs
- ObjectIDGenerator.cs
- ToolStripOverflowButton.cs
- MILUtilities.cs
- ItemCollection.cs
- ResourceDefaultValueAttribute.cs
- WindowsScroll.cs
- MessagingActivityHelper.cs
- AccessDataSourceView.cs
- ChannelTokenTypeConverter.cs
- MediaEntryAttribute.cs
- ValidatorAttribute.cs
- WebEventCodes.cs
- StringBuilder.cs
- ColumnMapProcessor.cs
- UxThemeWrapper.cs
- MetafileHeader.cs
- FormatControl.cs
- Image.cs
- RectIndependentAnimationStorage.cs
- RootProfilePropertySettingsCollection.cs
- ExpressionWriter.cs
- EditingCoordinator.cs
- CodeAttributeDeclaration.cs
- DBCSCodePageEncoding.cs
- XmlBinaryWriter.cs
- SizeIndependentAnimationStorage.cs
- GridViewItemAutomationPeer.cs
- GiveFeedbackEventArgs.cs
- XmlSchemaDatatype.cs
- Panel.cs
- FileLoadException.cs
- CommonRemoteMemoryBlock.cs
- TypeElement.cs
- EtwTrace.cs
- FamilyTypeface.cs
- Content.cs
- MissingSatelliteAssemblyException.cs
- UInt16Converter.cs
- GridItemPattern.cs
- Int16AnimationBase.cs
- PartialCachingControl.cs
- _SSPISessionCache.cs
- DataGridCommandEventArgs.cs
- ISFTagAndGuidCache.cs
- WeakReference.cs
- RawTextInputReport.cs
- ResourceProperty.cs
- DataGridViewRowEventArgs.cs
- ReadWriteSpinLock.cs
- DesignerForm.cs
- Vector3DAnimationBase.cs
- CollectionConverter.cs
- DictionaryBase.cs
- ObjectDataSourceSelectingEventArgs.cs
- MessageEventSubscriptionService.cs
- ManagedIStream.cs
- CheckBoxPopupAdapter.cs
- NameValueFileSectionHandler.cs
- ActivityMarkupSerializationProvider.cs
- Walker.cs
- ClipboardProcessor.cs
- KnownTypeAttribute.cs
- CookieHandler.cs
- DefaultCompensation.cs
- Shape.cs
- Paragraph.cs
- GenerateHelper.cs
- DbParameterCollectionHelper.cs
- VisualStyleRenderer.cs
- HorizontalAlignConverter.cs
- DescendentsWalkerBase.cs
- SafeWaitHandle.cs
- MetadataFile.cs
- DictionarySectionHandler.cs
- UserControlParser.cs
- DataGridViewTopLeftHeaderCell.cs
- XhtmlConformanceSection.cs
- TimerEventSubscriptionCollection.cs
- Int64AnimationUsingKeyFrames.cs
- WorkerRequest.cs
- FlowDocumentReader.cs
- ReadOnlyHierarchicalDataSourceView.cs
- FormatPage.cs
- ToolboxItemFilterAttribute.cs
- Unit.cs
- XPathItem.cs
- NonParentingControl.cs
- IndexOutOfRangeException.cs
- DecoratedNameAttribute.cs
- LiteralText.cs
- XPathItem.cs
- ReferenceSchema.cs
- MergeLocalizationDirectives.cs
- FunctionDetailsReader.cs
- XmlLinkedNode.cs
- UriSection.cs
- SQLRoleProvider.cs
- NativeMethods.cs