Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowShowOrOpenTracker.cs
- HandleCollector.cs
- NativeMethods.cs
- StringValueConverter.cs
- DynamicValidatorEventArgs.cs
- ReadOnlyDataSourceView.cs
- ElementNotAvailableException.cs
- SetterBaseCollection.cs
- ConnectionManagementElementCollection.cs
- StateMachineHelpers.cs
- WebPartEditorApplyVerb.cs
- DataProtection.cs
- InternalDuplexChannelFactory.cs
- ExceptionAggregator.cs
- DataPointer.cs
- DiscardableAttribute.cs
- DTCTransactionManager.cs
- BindingOperations.cs
- DbBuffer.cs
- TransactionOptions.cs
- UnknownBitmapDecoder.cs
- DateTimeOffsetStorage.cs
- SqlBuffer.cs
- PseudoWebRequest.cs
- SafeBitVector32.cs
- AssociationSetMetadata.cs
- AssemblyAssociatedContentFileAttribute.cs
- XamlReader.cs
- CommentGlyph.cs
- IgnoreFileBuildProvider.cs
- ServiceBuildProvider.cs
- PingReply.cs
- RightsManagementEncryptionTransform.cs
- DependencyPropertyKind.cs
- GeometryHitTestParameters.cs
- DBParameter.cs
- PolicyLevel.cs
- InfoCardListRequest.cs
- BasicHttpBindingElement.cs
- RuntimeCompatibilityAttribute.cs
- PathFigure.cs
- EntityCollectionChangedParams.cs
- BitmapEffectvisualstate.cs
- BitmapDownload.cs
- MemberNameValidator.cs
- ExpressionWriter.cs
- LinkDescriptor.cs
- Timer.cs
- XsltContext.cs
- XPathNodeInfoAtom.cs
- Compilation.cs
- ChannelSettingsElement.cs
- MailDefinitionBodyFileNameEditor.cs
- HelloOperationCD1AsyncResult.cs
- StringStorage.cs
- CompressedStack.cs
- WeakReadOnlyCollection.cs
- WebPartZoneBase.cs
- Process.cs
- CloseSequenceResponse.cs
- IdleTimeoutMonitor.cs
- Model3DGroup.cs
- ManualResetEvent.cs
- ExpandedWrapper.cs
- DtrList.cs
- Exceptions.cs
- BitmapEffectrendercontext.cs
- DocobjHost.cs
- MenuScrollingVisibilityConverter.cs
- ConsumerConnectionPointCollection.cs
- ProfileSettingsCollection.cs
- RegexTree.cs
- Rotation3DAnimation.cs
- RegisteredExpandoAttribute.cs
- SerializationAttributes.cs
- XmlnsCompatibleWithAttribute.cs
- UserControlDocumentDesigner.cs
- ResetableIterator.cs
- ObjectStateFormatter.cs
- CounterCreationData.cs
- SmiEventSink_Default.cs
- MediaContext.cs
- ComboBoxHelper.cs
- GridView.cs
- formatstringdialog.cs
- PersistChildrenAttribute.cs
- TextElement.cs
- CodeAttachEventStatement.cs
- CfgParser.cs
- DefaultCommandConverter.cs
- EmptyControlCollection.cs
- ExpressionNode.cs
- PersistenceTask.cs
- EncryptionUtility.cs
- InstanceDescriptor.cs
- UniformGrid.cs
- SqlDelegatedTransaction.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- MouseDevice.cs
- SimplePropertyEntry.cs