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
- ClientSettingsSection.cs
- WebConfigurationHost.cs
- QualificationDataItem.cs
- SourceFileInfo.cs
- NativeMethods.cs
- XmlValueConverter.cs
- UriSectionData.cs
- ScrollChrome.cs
- FacetChecker.cs
- ModelPropertyImpl.cs
- XmlSchemaAttribute.cs
- IProvider.cs
- SoapAttributes.cs
- HScrollBar.cs
- SafeHandles.cs
- AlignmentXValidation.cs
- EventProperty.cs
- SmtpNegotiateAuthenticationModule.cs
- BmpBitmapDecoder.cs
- ValidationException.cs
- NamedObject.cs
- DynamicRouteExpression.cs
- ListViewInsertedEventArgs.cs
- Win32SafeHandles.cs
- ContentDisposition.cs
- WebContext.cs
- DropShadowBitmapEffect.cs
- EntityTransaction.cs
- DataTablePropertyDescriptor.cs
- AttachmentCollection.cs
- QueryableDataSourceEditData.cs
- DllHostedComPlusServiceHost.cs
- MetafileHeaderWmf.cs
- XmlChoiceIdentifierAttribute.cs
- TiffBitmapEncoder.cs
- COM2PropertyBuilderUITypeEditor.cs
- CharAnimationUsingKeyFrames.cs
- SHA512.cs
- GridErrorDlg.cs
- EndpointAddressProcessor.cs
- LOSFormatter.cs
- Clipboard.cs
- Pointer.cs
- PeerFlooder.cs
- DefaultPropertyAttribute.cs
- Compilation.cs
- TriState.cs
- Queue.cs
- TransportContext.cs
- PackagingUtilities.cs
- SqlProviderManifest.cs
- ReturnValue.cs
- OdbcException.cs
- ScrollBar.cs
- ReturnType.cs
- ZipArchive.cs
- XmlnsDictionary.cs
- XmlMtomReader.cs
- SymmetricCryptoHandle.cs
- SqlDataSourceEnumerator.cs
- EdmType.cs
- Condition.cs
- _FtpDataStream.cs
- HtmlHead.cs
- PasswordPropertyTextAttribute.cs
- ConnectionManagementSection.cs
- RepeaterCommandEventArgs.cs
- UnsafeNativeMethods.cs
- LinkedResourceCollection.cs
- InvalidContentTypeException.cs
- DynamicMethod.cs
- DynamicControl.cs
- ToolStripButton.cs
- Error.cs
- SafeRightsManagementEnvironmentHandle.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- HierarchicalDataSourceControl.cs
- SchemaComplexType.cs
- _SingleItemRequestCache.cs
- ValidationSummaryDesigner.cs
- TimeSpanOrInfiniteValidator.cs
- BackStopAuthenticationModule.cs
- Section.cs
- HashCodeCombiner.cs
- HttpTransportBindingElement.cs
- CompModHelpers.cs
- InvalidOleVariantTypeException.cs
- Socket.cs
- TimeSpanValidatorAttribute.cs
- Span.cs
- SmuggledIUnknown.cs
- MultiSelectRootGridEntry.cs
- UnsafeNativeMethodsTablet.cs
- ToolboxItemImageConverter.cs
- Directory.cs
- StylusCaptureWithinProperty.cs
- _LocalDataStore.cs
- RectangleConverter.cs
- HMAC.cs
- PointConverter.cs