Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Mail / SevenBitStream.cs / 1305376 / SevenBitStream.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net.Mime { using System; using System.IO; using System.Text; ////// 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, IEncodableStream { ////// 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)); } } public int DecodeBytes(byte[] buffer, int offset, int count) { throw new NotImplementedException(); } //nothing to "encode" here so all we're actually doing is folding public int EncodeBytes(byte[] buffer, int offset, int count) { throw new NotImplementedException(); } public Stream GetStream() { return this; } public string GetEncodedString() { throw new NotImplementedException(); } } } // 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; using System.Text; ////// 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, IEncodableStream { ////// 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)); } } public int DecodeBytes(byte[] buffer, int offset, int count) { throw new NotImplementedException(); } //nothing to "encode" here so all we're actually doing is folding public int EncodeBytes(byte[] buffer, int offset, int count) { throw new NotImplementedException(); } public Stream GetStream() { return this; } public string GetEncodedString() { throw new NotImplementedException(); } } } // 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
- CharStorage.cs
- ColorContext.cs
- BitmapEffectGroup.cs
- TypeReference.cs
- FileLogRecordHeader.cs
- StringReader.cs
- ManagementOptions.cs
- DataGridItem.cs
- EntitySet.cs
- PagePropertiesChangingEventArgs.cs
- _ShellExpression.cs
- DynamicPropertyReader.cs
- XmlValidatingReader.cs
- WebPartDisplayModeCancelEventArgs.cs
- PeoplePickerWrapper.cs
- DefaultPropertiesToSend.cs
- EditingMode.cs
- QuaternionAnimation.cs
- MultiBindingExpression.cs
- Win32SafeHandles.cs
- StatusBarItem.cs
- XmlWrappingReader.cs
- ChtmlCommandAdapter.cs
- TypeElementCollection.cs
- DataBinder.cs
- BuilderPropertyEntry.cs
- SqlDeflator.cs
- TextRangeBase.cs
- XmlNamespaceDeclarationsAttribute.cs
- ObsoleteAttribute.cs
- XmlILAnnotation.cs
- SurrogateSelector.cs
- KeyedHashAlgorithm.cs
- XPathAncestorIterator.cs
- DataGridViewEditingControlShowingEventArgs.cs
- UrlMappingsSection.cs
- ZoneMembershipCondition.cs
- SqlConnection.cs
- ToolboxBitmapAttribute.cs
- FileDialog_Vista_Interop.cs
- RecordManager.cs
- InputDevice.cs
- TakeQueryOptionExpression.cs
- EffectiveValueEntry.cs
- PackagingUtilities.cs
- ActivityDesignerAccessibleObject.cs
- WebPartVerb.cs
- CalendarDay.cs
- ToolboxItemFilterAttribute.cs
- DelegateSerializationHolder.cs
- TimelineCollection.cs
- ObjectDataSourceStatusEventArgs.cs
- AggregateNode.cs
- WebCategoryAttribute.cs
- IDispatchConstantAttribute.cs
- BindingContext.cs
- EntityDataSourceReferenceGroup.cs
- AssemblyNameProxy.cs
- Light.cs
- SimpleTypesSurrogate.cs
- DurableOperationAttribute.cs
- InternalCache.cs
- METAHEADER.cs
- IHttpResponseInternal.cs
- PartialTrustVisibleAssemblyCollection.cs
- ShaderEffect.cs
- StrokeCollection.cs
- ShaperBuffers.cs
- ISSmlParser.cs
- PeerNameRecord.cs
- ProgramPublisher.cs
- InputScope.cs
- SqlRecordBuffer.cs
- BinaryFormatterSinks.cs
- Helper.cs
- IdentifierService.cs
- ValueUnavailableException.cs
- EventSinkHelperWriter.cs
- DataGridViewRowPrePaintEventArgs.cs
- EpmSourcePathSegment.cs
- RouteData.cs
- GiveFeedbackEvent.cs
- DebugHandleTracker.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- SqlNotificationEventArgs.cs
- Polyline.cs
- PropertyMetadata.cs
- HttpRuntime.cs
- InternalTypeHelper.cs
- UnmanagedMarshal.cs
- ToolStripManager.cs
- InfoCardMasterKey.cs
- DBSchemaRow.cs
- BitmapInitialize.cs
- CollectionContainer.cs
- VectorAnimationUsingKeyFrames.cs
- DataObjectFieldAttribute.cs
- InlineObject.cs
- SecurityDescriptor.cs
- ListView.cs