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
- SerializationBinder.cs
- ListControl.cs
- SineEase.cs
- OutputCacheSettings.cs
- DatagridviewDisplayedBandsData.cs
- MemoryFailPoint.cs
- MonthCalendar.cs
- Visitor.cs
- VirtualDirectoryMapping.cs
- DataGridViewAccessibleObject.cs
- InputLanguageSource.cs
- NativeObjectSecurity.cs
- ICspAsymmetricAlgorithm.cs
- _AutoWebProxyScriptEngine.cs
- ObjectQueryProvider.cs
- AppliedDeviceFiltersDialog.cs
- MaskedTextProvider.cs
- AspNetSynchronizationContext.cs
- WhitespaceRuleLookup.cs
- sqlnorm.cs
- StorageEndPropertyMapping.cs
- serverconfig.cs
- ClientProxyGenerator.cs
- IDReferencePropertyAttribute.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- SimpleFieldTemplateFactory.cs
- InheritanceRules.cs
- TrustSection.cs
- RandomNumberGenerator.cs
- UserControl.cs
- OdbcFactory.cs
- ProtocolViolationException.cs
- TypeReference.cs
- ValidateNames.cs
- AssociationSet.cs
- ReadOnlyAttribute.cs
- WindowVisualStateTracker.cs
- WebServicesDescriptionAttribute.cs
- PolyBezierSegmentFigureLogic.cs
- CacheChildrenQuery.cs
- DbConnectionPoolGroupProviderInfo.cs
- BookmarkOptionsHelper.cs
- ProfileGroupSettingsCollection.cs
- WebUtil.cs
- DynamicActivity.cs
- LinqDataSourceSelectEventArgs.cs
- ThreadAbortException.cs
- ObjectNavigationPropertyMapping.cs
- XsdValidatingReader.cs
- XmlSchemaDatatype.cs
- DataTableMapping.cs
- DataGridViewIntLinkedList.cs
- XMLUtil.cs
- RealProxy.cs
- DecimalAnimationUsingKeyFrames.cs
- ProfileEventArgs.cs
- ElementsClipboardData.cs
- XsltOutput.cs
- ServiceX509SecurityTokenProvider.cs
- XmlWrappingReader.cs
- IPHostEntry.cs
- UserMapPath.cs
- Timer.cs
- NavigatorOutput.cs
- XmlSiteMapProvider.cs
- FileSystemInfo.cs
- ExecutionEngineException.cs
- Soap12FormatExtensions.cs
- DBCommandBuilder.cs
- AlignmentYValidation.cs
- PathFigureCollection.cs
- Int32Storage.cs
- ForeignKeyConstraint.cs
- UInt16Converter.cs
- FixedLineResult.cs
- ProcessModuleCollection.cs
- StringResourceManager.cs
- ObjectPropertyMapping.cs
- Rect3DValueSerializer.cs
- DeferredSelectedIndexReference.cs
- EventHandlersStore.cs
- RelOps.cs
- Paragraph.cs
- SmtpCommands.cs
- CopyNodeSetAction.cs
- WizardSideBarListControlItem.cs
- AuthenticationException.cs
- NativeMethods.cs
- DefaultSection.cs
- EndpointBehaviorElement.cs
- WebPartEditorCancelVerb.cs
- PrefixQName.cs
- CompiledQueryCacheEntry.cs
- DrawingState.cs
- ToolBarButtonClickEvent.cs
- RadioButtonStandardAdapter.cs
- XmlAnyElementAttribute.cs
- DrawingContextWalker.cs
- JsonCollectionDataContract.cs
- COM2PropertyBuilderUITypeEditor.cs