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
- XmlILOptimizerVisitor.cs
- SkewTransform.cs
- Material.cs
- WindowsFormsLinkLabel.cs
- SrgsOneOf.cs
- NamespaceEmitter.cs
- AnonymousIdentificationSection.cs
- SoapEnumAttribute.cs
- AssociationTypeEmitter.cs
- HtmlLiteralTextAdapter.cs
- QueryGeneratorBase.cs
- KeyedHashAlgorithm.cs
- Label.cs
- ContentPlaceHolder.cs
- HwndAppCommandInputProvider.cs
- ErrorTableItemStyle.cs
- DependencyPropertyKey.cs
- SqlDataSourceWizardForm.cs
- CngAlgorithmGroup.cs
- DirtyTextRange.cs
- HttpAsyncResult.cs
- MemoryMappedViewAccessor.cs
- FlatButtonAppearance.cs
- XmlDesignerDataSourceView.cs
- RegexCompiler.cs
- DateRangeEvent.cs
- ConfigurationPropertyCollection.cs
- XmlExtensionFunction.cs
- Sql8ConformanceChecker.cs
- RadioButtonBaseAdapter.cs
- ContextMarshalException.cs
- ArrangedElement.cs
- TargetInvocationException.cs
- _AutoWebProxyScriptWrapper.cs
- ByteStorage.cs
- HScrollBar.cs
- OleDbTransaction.cs
- DataControlCommands.cs
- CodeDomDecompiler.cs
- EntityClassGenerator.cs
- DataGridViewCellStyleConverter.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- CompositeKey.cs
- ComContractElement.cs
- SyntaxCheck.cs
- UnsafeNativeMethods.cs
- DetailsViewModeEventArgs.cs
- WinFormsUtils.cs
- WindowsProgressbar.cs
- TemplateBuilder.cs
- CLRBindingWorker.cs
- MonitoringDescriptionAttribute.cs
- GraphicsContext.cs
- Permission.cs
- WindowsTreeView.cs
- EventManager.cs
- ImageDrawing.cs
- HMAC.cs
- ProcessThreadCollection.cs
- AppManager.cs
- TreeViewCancelEvent.cs
- FixedBufferAttribute.cs
- EntityExpressionVisitor.cs
- LineProperties.cs
- HttpCapabilitiesBase.cs
- UriSectionReader.cs
- IIS7UserPrincipal.cs
- CompareValidator.cs
- ConstrainedGroup.cs
- WebPartMinimizeVerb.cs
- SpeechAudioFormatInfo.cs
- DuplicateWaitObjectException.cs
- BuildProvider.cs
- ObjectSet.cs
- DataPagerFieldItem.cs
- BaseCollection.cs
- BaseProcessor.cs
- DesignerListAdapter.cs
- NamedObject.cs
- BaseCodePageEncoding.cs
- XmlTextReader.cs
- InvalidPrinterException.cs
- DictationGrammar.cs
- TransactionFlowBindingElementImporter.cs
- TreeNodeCollectionEditorDialog.cs
- DataGridViewRow.cs
- InteropEnvironment.cs
- MethodImplAttribute.cs
- NativeActivityFaultContext.cs
- AliasedSlot.cs
- Variant.cs
- ComponentDispatcher.cs
- CanExecuteRoutedEventArgs.cs
- ChannelCredentials.cs
- ConfigurationValidatorBase.cs
- TableFieldsEditor.cs
- RelAssertionDirectKeyIdentifierClause.cs
- GradientStop.cs
- SystemBrushes.cs
- _BaseOverlappedAsyncResult.cs