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
- XmlNode.cs
- WorkflowInstanceExtensionCollection.cs
- AuthenticationServiceManager.cs
- StaticFileHandler.cs
- Claim.cs
- TypeUsage.cs
- ArcSegment.cs
- AvtEvent.cs
- OptimizedTemplateContentHelper.cs
- UIElementCollection.cs
- StructureChangedEventArgs.cs
- ConvertersCollection.cs
- ContextMenuService.cs
- DataGridViewLayoutData.cs
- ActivityExecutorOperation.cs
- DbReferenceCollection.cs
- SqlBulkCopyColumnMappingCollection.cs
- QuestionEventArgs.cs
- ModelTreeEnumerator.cs
- SqlProfileProvider.cs
- SkipStoryboardToFill.cs
- TabItemAutomationPeer.cs
- CustomWebEventKey.cs
- QilTypeChecker.cs
- Transform3DGroup.cs
- UserControl.cs
- BlockUIContainer.cs
- ProcessModuleCollection.cs
- TextWriterTraceListener.cs
- XmlSchemaRedefine.cs
- AxImporter.cs
- AppDomainUnloadedException.cs
- SoapIgnoreAttribute.cs
- Helpers.cs
- DesignTimeTemplateParser.cs
- XmlDomTextWriter.cs
- BasicHttpBindingElement.cs
- KeyValueInternalCollection.cs
- CallSiteOps.cs
- SecurityDocument.cs
- HttpPostServerProtocol.cs
- ReadWriteObjectLock.cs
- EndpointDispatcherTable.cs
- TreeNodeConverter.cs
- Win32.cs
- TreeNodeSelectionProcessor.cs
- CopyAction.cs
- SystemFonts.cs
- MetabaseSettingsIis7.cs
- TextServicesContext.cs
- ShortcutKeysEditor.cs
- EventSourceCreationData.cs
- AppDomain.cs
- XmlSchemaRedefine.cs
- AdjustableArrowCap.cs
- PrintPreviewGraphics.cs
- EnvironmentPermission.cs
- CreateUserWizardAutoFormat.cs
- IResourceProvider.cs
- ScopedKnownTypes.cs
- ClientBuildManager.cs
- MD5.cs
- sqlcontext.cs
- UserControlCodeDomTreeGenerator.cs
- SerializationFieldInfo.cs
- Function.cs
- Container.cs
- TreeNodeBinding.cs
- CngKeyCreationParameters.cs
- TextTreeDeleteContentUndoUnit.cs
- PrinterResolution.cs
- ServiceBuildProvider.cs
- ShaperBuffers.cs
- ColumnMapTranslator.cs
- DiscoveryClientElement.cs
- SiteMapHierarchicalDataSourceView.cs
- DispatcherProcessingDisabled.cs
- HotSpotCollection.cs
- TextEffectResolver.cs
- DataGridViewTextBoxEditingControl.cs
- ConfigurationValidatorAttribute.cs
- SqlProviderServices.cs
- WindowsToolbarItemAsMenuItem.cs
- DataFieldConverter.cs
- MultiByteCodec.cs
- TextEditorDragDrop.cs
- ByteArrayHelperWithString.cs
- XamlDesignerSerializationManager.cs
- InputLanguageEventArgs.cs
- Scheduling.cs
- TransformPatternIdentifiers.cs
- MD5HashHelper.cs
- WindowsTab.cs
- ColorPalette.cs
- NavigateEvent.cs
- Renderer.cs
- TypeValidationEventArgs.cs
- ExpressionTable.cs
- SerializationUtility.cs
- DeploymentSection.cs