Code:
/ FX-1434 / FX-1434 / 1.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
- ObjectToken.cs
- AssertSection.cs
- AttachedAnnotationChangedEventArgs.cs
- GPPOINTF.cs
- XmlSchemaSet.cs
- ColumnResizeUndoUnit.cs
- DataSet.cs
- NameValuePair.cs
- XhtmlBasicTextBoxAdapter.cs
- PenThreadPool.cs
- ContextMenuAutomationPeer.cs
- WebResourceUtil.cs
- EventProviderWriter.cs
- COM2ColorConverter.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- MenuItemAutomationPeer.cs
- ResourceIDHelper.cs
- IfAction.cs
- BeginEvent.cs
- ReadOnlyDictionary.cs
- DataDocumentXPathNavigator.cs
- ServerIdentity.cs
- SspiWrapper.cs
- BinaryConverter.cs
- DataGridViewUtilities.cs
- DbExpressionVisitor.cs
- RegexGroupCollection.cs
- SelectionEditor.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- FloaterBaseParaClient.cs
- PenLineJoinValidation.cs
- ThreadExceptionDialog.cs
- OutputCacheModule.cs
- NonDualMessageSecurityOverHttpElement.cs
- WindowsFormsSectionHandler.cs
- DataGridViewLayoutData.cs
- RectAnimationClockResource.cs
- ValidatingPropertiesEventArgs.cs
- UniformGrid.cs
- Panel.cs
- LogPolicy.cs
- ByteAnimation.cs
- OutputCacheModule.cs
- Control.cs
- UdpTransportSettingsElement.cs
- XmlStreamNodeWriter.cs
- WebScriptMetadataMessageEncoderFactory.cs
- PasswordRecoveryDesigner.cs
- WindowAutomationPeer.cs
- RemoteWebConfigurationHostStream.cs
- ProfilePropertySettingsCollection.cs
- CounterSampleCalculator.cs
- RSAProtectedConfigurationProvider.cs
- Button.cs
- TreeNodeStyle.cs
- DefaultWorkflowTransactionService.cs
- TextSchema.cs
- TextBoxDesigner.cs
- updatecommandorderer.cs
- ToolboxDataAttribute.cs
- Screen.cs
- XPathQueryGenerator.cs
- ThreadAttributes.cs
- HttpCacheVaryByContentEncodings.cs
- PropertyManager.cs
- IEnumerable.cs
- ObjectIDGenerator.cs
- Expander.cs
- Classification.cs
- ClaimTypes.cs
- PeerChannelFactory.cs
- ConfigViewGenerator.cs
- InvalidPrinterException.cs
- HandledMouseEvent.cs
- PeerCollaborationPermission.cs
- LocatorPart.cs
- SHA256Managed.cs
- XomlCompilerParameters.cs
- Matrix3DConverter.cs
- AggregationMinMaxHelpers.cs
- MiniConstructorInfo.cs
- ImageFormatConverter.cs
- TemplateColumn.cs
- GeometryHitTestResult.cs
- ViewBase.cs
- XsdBuilder.cs
- SchemaAttDef.cs
- WebZone.cs
- Matrix3DStack.cs
- IncrementalCompileAnalyzer.cs
- KnownColorTable.cs
- AndCondition.cs
- RuleSetDialog.cs
- SQLDateTime.cs
- ColorAnimationBase.cs
- WebPartAddingEventArgs.cs
- CorrelationTokenInvalidatedHandler.cs
- OleDbWrapper.cs
- BasicHttpMessageSecurityElement.cs
- BaseProcessor.cs