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
- EndpointIdentity.cs
- XmlNodeChangedEventArgs.cs
- TemplateInstanceAttribute.cs
- ClientUtils.cs
- ResourceKey.cs
- Pair.cs
- XPathBuilder.cs
- processwaithandle.cs
- VisualCollection.cs
- AnnouncementService.cs
- BindingValueChangedEventArgs.cs
- CompilerState.cs
- Bidi.cs
- XmlSerializerVersionAttribute.cs
- BinHexDecoder.cs
- PassportPrincipal.cs
- CssTextWriter.cs
- JobCollate.cs
- XmlMembersMapping.cs
- X509CertificateChain.cs
- PackagingUtilities.cs
- DBProviderConfigurationHandler.cs
- SystemIcmpV4Statistics.cs
- SelectionUIService.cs
- TaskSchedulerException.cs
- ReliableRequestSessionChannel.cs
- DataGridLength.cs
- storepermissionattribute.cs
- Knowncolors.cs
- BufferedGraphicsContext.cs
- TraceHwndHost.cs
- HashMembershipCondition.cs
- TakeQueryOptionExpression.cs
- HMACSHA384.cs
- oledbconnectionstring.cs
- PermissionToken.cs
- PeerNameRegistration.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- PrinterUnitConvert.cs
- TimersDescriptionAttribute.cs
- XmlCompatibilityReader.cs
- StylusButtonCollection.cs
- EnumMemberAttribute.cs
- _ConnectStream.cs
- AspNetCompatibilityRequirementsAttribute.cs
- SpellerInterop.cs
- BaseDataBoundControl.cs
- TypedRowGenerator.cs
- ContainerUtilities.cs
- NetStream.cs
- DockingAttribute.cs
- SendReply.cs
- PrintDialog.cs
- PropertyConverter.cs
- CodeMemberEvent.cs
- SignatureDescription.cs
- ServiceBehaviorElement.cs
- WebContext.cs
- DependencyPropertyValueSerializer.cs
- CollectionViewGroupInternal.cs
- StringUtil.cs
- CodeDOMProvider.cs
- MatcherBuilder.cs
- WorkflowTimerService.cs
- DynamicILGenerator.cs
- CompilerGeneratedAttribute.cs
- dsa.cs
- DbProviderFactory.cs
- RayHitTestParameters.cs
- PointLightBase.cs
- XmlWellformedWriter.cs
- MailMessage.cs
- XsdCachingReader.cs
- PropertyDescriptorGridEntry.cs
- DesignerValidationSummaryAdapter.cs
- HttpValueCollection.cs
- ConsoleTraceListener.cs
- ServiceObjectContainer.cs
- SQLGuid.cs
- EntityDataSourceState.cs
- Point3DCollectionConverter.cs
- ConstraintCollection.cs
- ConsumerConnectionPointCollection.cs
- UserControl.cs
- FormViewCommandEventArgs.cs
- GridViewRow.cs
- MetadataArtifactLoaderCompositeResource.cs
- CommandDesigner.cs
- Soap.cs
- CookieParameter.cs
- EditingCommands.cs
- FileDetails.cs
- InternalPermissions.cs
- ProvidePropertyAttribute.cs
- MultiPageTextView.cs
- ListViewItem.cs
- NativeMethods.cs
- Odbc32.cs
- TreeNodeCollection.cs
- Point.cs