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
- SchemaNames.cs
- ToolStripItemEventArgs.cs
- CodeNamespaceImport.cs
- RawStylusSystemGestureInputReport.cs
- CodeGenerator.cs
- SpecialNameAttribute.cs
- CancellationTokenSource.cs
- ResolvePPIDRequest.cs
- SerializationSectionGroup.cs
- PostBackOptions.cs
- ConstructorExpr.cs
- CellPartitioner.cs
- ConfigurationValue.cs
- BCryptHashAlgorithm.cs
- CodeObjectCreateExpression.cs
- TextControlDesigner.cs
- HtmlInputImage.cs
- TraceUtility.cs
- MeshGeometry3D.cs
- CodeDirectoryCompiler.cs
- RoutedPropertyChangedEventArgs.cs
- XmlMembersMapping.cs
- PagedDataSource.cs
- PrintingPermissionAttribute.cs
- Errors.cs
- UriWriter.cs
- PackageRelationship.cs
- WebPartAddingEventArgs.cs
- StringCollectionMarkupSerializer.cs
- RelatedImageListAttribute.cs
- StylusPointPropertyId.cs
- X509CertificateTrustedIssuerElementCollection.cs
- SourceFileBuildProvider.cs
- ConditionCollection.cs
- CompilerState.cs
- DecimalConverter.cs
- WindowsEditBoxRange.cs
- InvalidAsynchronousStateException.cs
- OutKeywords.cs
- EmptyReadOnlyDictionaryInternal.cs
- MappingSource.cs
- SafeLocalMemHandle.cs
- ProcessHost.cs
- BuildProviderAppliesToAttribute.cs
- SessionStateUtil.cs
- WindowVisualStateTracker.cs
- TrustLevelCollection.cs
- CodeDOMUtility.cs
- XsltInput.cs
- Brushes.cs
- XmlSignatureManifest.cs
- EpmContentDeSerializer.cs
- URLMembershipCondition.cs
- ProvidersHelper.cs
- safePerfProviderHandle.cs
- WebPart.cs
- CustomCategoryAttribute.cs
- ResourceCollectionInfo.cs
- PageSetupDialog.cs
- DataTemplateSelector.cs
- HwndSubclass.cs
- FieldNameLookup.cs
- SQLConvert.cs
- WebPartEditorCancelVerb.cs
- DataPointer.cs
- ImageAnimator.cs
- ProgressiveCrcCalculatingStream.cs
- HttpListenerPrefixCollection.cs
- HtmlInputReset.cs
- ProfileGroupSettingsCollection.cs
- SafeLocalAllocation.cs
- FrameworkElement.cs
- SoapIncludeAttribute.cs
- FixedSOMContainer.cs
- Keyboard.cs
- PrinterResolution.cs
- EventBuilder.cs
- OperationResponse.cs
- PartialToken.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- TimeSpanConverter.cs
- WindowsClientElement.cs
- SqlCaseSimplifier.cs
- ChtmlMobileTextWriter.cs
- BStrWrapper.cs
- TimeoutException.cs
- TraceSection.cs
- LocatorManager.cs
- ServiceMemoryGates.cs
- GeneralTransform2DTo3DTo2D.cs
- ThrowHelper.cs
- ClickablePoint.cs
- LinqDataSourceUpdateEventArgs.cs
- EventLogTraceListener.cs
- TaiwanLunisolarCalendar.cs
- MobilePage.cs
- UnknownBitmapDecoder.cs
- EmbeddedObject.cs
- KeyConverter.cs
- GroupByQueryOperator.cs