Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / SequenceNumber.cs / 1305376 / SequenceNumber.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { // Add property for sequence number size using System; using System.Collections.Generic; [Serializable] public struct SequenceNumber : IComparable{ ulong sequenceNumberHigh; ulong sequenceNumberLow; public SequenceNumber(byte[] sequenceNumber) { if(sequenceNumber == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentNull("sequenceNumber")); } if ((sequenceNumber.Length != 8) && (sequenceNumber.Length != 16)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentInvalid(SR.Argument_SequenceNumberLength)); } this.sequenceNumberHigh = BitConverter.ToUInt64(sequenceNumber, 0); if (sequenceNumber.Length > 8) { this.sequenceNumberLow = BitConverter.ToUInt64(sequenceNumber, 8); } else { this.sequenceNumberLow = 0; } } internal SequenceNumber(ulong value) { this.sequenceNumberHigh = value; // Ensure that SequenceNumber.Invalid round-trips. // if (value == UInt64.MaxValue) { this.sequenceNumberLow = UInt64.MaxValue; } else { this.sequenceNumberLow = 0; } } internal SequenceNumber(ulong high, ulong low) { this.sequenceNumberHigh = high; this.sequenceNumberLow = low; } internal ulong High { get { return this.sequenceNumberHigh; } } internal ulong Low { get { return this.sequenceNumberLow; } } public static SequenceNumber Invalid { get { return new SequenceNumber(UInt64.MaxValue, UInt64.MaxValue); } } public static bool operator !=( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) != 0); } public static bool operator <( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) < 0); } public static bool operator <=(SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) <= 0); } public static bool operator ==( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) == 0); } public static bool operator >( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) > 0); } public static bool operator >=( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) >= 0); } public int CompareTo(SequenceNumber other) { int result = this.sequenceNumberHigh.CompareTo(other.sequenceNumberHigh); if (result == 0) result = this.sequenceNumberLow.CompareTo(other.sequenceNumberLow); return result; } public bool Equals(SequenceNumber other) { return (this.CompareTo(other) == 0); } public override bool Equals(object other) { if (!(other is SequenceNumber)) return false; SequenceNumber otherSeq = (SequenceNumber)(other); return this.Equals(otherSeq); } public byte[] GetBytes() { byte[] bytes; if (this.sequenceNumberLow == 0) { bytes = new byte[8]; WriteUInt64(this.sequenceNumberHigh, bytes, 0); } else { bytes = new byte[16]; WriteUInt64(this.sequenceNumberHigh, bytes, 0); WriteUInt64(this.sequenceNumberLow, bytes, 8); } return bytes; } public override int GetHashCode() { return this.sequenceNumberHigh.GetHashCode() ^ this.sequenceNumberLow.GetHashCode(); } internal static void WriteUInt64(ulong value, byte[] bits, int offset) { bits[offset + 0] = (byte)((value >> 0) & 0xFF); bits[offset + 1] = (byte)((value >> 8) & 0xFF); bits[offset + 2] = (byte)((value >> 16) & 0xFF); bits[offset + 3] = (byte)((value >> 24) & 0xFF); bits[offset + 4] = (byte)((value >> 32) & 0xFF); bits[offset + 5] = (byte)((value >> 40) & 0xFF); bits[offset + 6] = (byte)((value >> 48) & 0xFF); bits[offset + 7] = (byte)((value >> 56) & 0xFF); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IO.Log { // Add property for sequence number size using System; using System.Collections.Generic; [Serializable] public struct SequenceNumber : IComparable { ulong sequenceNumberHigh; ulong sequenceNumberLow; public SequenceNumber(byte[] sequenceNumber) { if(sequenceNumber == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentNull("sequenceNumber")); } if ((sequenceNumber.Length != 8) && (sequenceNumber.Length != 16)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ArgumentInvalid(SR.Argument_SequenceNumberLength)); } this.sequenceNumberHigh = BitConverter.ToUInt64(sequenceNumber, 0); if (sequenceNumber.Length > 8) { this.sequenceNumberLow = BitConverter.ToUInt64(sequenceNumber, 8); } else { this.sequenceNumberLow = 0; } } internal SequenceNumber(ulong value) { this.sequenceNumberHigh = value; // Ensure that SequenceNumber.Invalid round-trips. // if (value == UInt64.MaxValue) { this.sequenceNumberLow = UInt64.MaxValue; } else { this.sequenceNumberLow = 0; } } internal SequenceNumber(ulong high, ulong low) { this.sequenceNumberHigh = high; this.sequenceNumberLow = low; } internal ulong High { get { return this.sequenceNumberHigh; } } internal ulong Low { get { return this.sequenceNumberLow; } } public static SequenceNumber Invalid { get { return new SequenceNumber(UInt64.MaxValue, UInt64.MaxValue); } } public static bool operator !=( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) != 0); } public static bool operator <( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) < 0); } public static bool operator <=(SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) <= 0); } public static bool operator ==( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) == 0); } public static bool operator >( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) > 0); } public static bool operator >=( SequenceNumber c1, SequenceNumber c2) { return (c1.CompareTo(c2) >= 0); } public int CompareTo(SequenceNumber other) { int result = this.sequenceNumberHigh.CompareTo(other.sequenceNumberHigh); if (result == 0) result = this.sequenceNumberLow.CompareTo(other.sequenceNumberLow); return result; } public bool Equals(SequenceNumber other) { return (this.CompareTo(other) == 0); } public override bool Equals(object other) { if (!(other is SequenceNumber)) return false; SequenceNumber otherSeq = (SequenceNumber)(other); return this.Equals(otherSeq); } public byte[] GetBytes() { byte[] bytes; if (this.sequenceNumberLow == 0) { bytes = new byte[8]; WriteUInt64(this.sequenceNumberHigh, bytes, 0); } else { bytes = new byte[16]; WriteUInt64(this.sequenceNumberHigh, bytes, 0); WriteUInt64(this.sequenceNumberLow, bytes, 8); } return bytes; } public override int GetHashCode() { return this.sequenceNumberHigh.GetHashCode() ^ this.sequenceNumberLow.GetHashCode(); } internal static void WriteUInt64(ulong value, byte[] bits, int offset) { bits[offset + 0] = (byte)((value >> 0) & 0xFF); bits[offset + 1] = (byte)((value >> 8) & 0xFF); bits[offset + 2] = (byte)((value >> 16) & 0xFF); bits[offset + 3] = (byte)((value >> 24) & 0xFF); bits[offset + 4] = (byte)((value >> 32) & 0xFF); bits[offset + 5] = (byte)((value >> 40) & 0xFF); bits[offset + 6] = (byte)((value >> 48) & 0xFF); bits[offset + 7] = (byte)((value >> 56) & 0xFF); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PkcsUtils.cs
- Rotation3DKeyFrameCollection.cs
- Process.cs
- DbModificationClause.cs
- Events.cs
- ISAPIRuntime.cs
- SystemTcpStatistics.cs
- StreamInfo.cs
- WebBrowserDocumentCompletedEventHandler.cs
- WebPart.cs
- Encoding.cs
- SqlDataSourceQueryConverter.cs
- ValueType.cs
- ConfigurationSettings.cs
- Trace.cs
- ErasingStroke.cs
- DataSourceExpression.cs
- Stackframe.cs
- TabControlEvent.cs
- TransformValueSerializer.cs
- ToolStripDesignerAvailabilityAttribute.cs
- SchemaDeclBase.cs
- SQLDoubleStorage.cs
- RectAnimationUsingKeyFrames.cs
- SupportedAddressingMode.cs
- TemplateBamlRecordReader.cs
- InternalUserCancelledException.cs
- Compiler.cs
- DbDataSourceEnumerator.cs
- StrokeNode.cs
- TrackBar.cs
- SelfIssuedSamlTokenFactory.cs
- GetIndexBinder.cs
- UntypedNullExpression.cs
- DeclarativeCatalogPart.cs
- DeferredTextReference.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- CompiledRegexRunnerFactory.cs
- XPathParser.cs
- ContainerParagraph.cs
- ExpressionBuilder.cs
- BatchParser.cs
- FixedSOMPage.cs
- DataRecordObjectView.cs
- ProxyHelper.cs
- Internal.cs
- QueryReaderSettings.cs
- RelationshipManager.cs
- HttpBufferlessInputStream.cs
- ServiceDesigner.cs
- AffineTransform3D.cs
- Shape.cs
- Visual3D.cs
- ToolStripGrip.cs
- FormsAuthenticationModule.cs
- followingquery.cs
- DesigntimeLicenseContextSerializer.cs
- _SpnDictionary.cs
- GridViewColumnHeader.cs
- CharEntityEncoderFallback.cs
- XPathChildIterator.cs
- BuiltInPermissionSets.cs
- CatalogPartChrome.cs
- ELinqQueryState.cs
- SurrogateEncoder.cs
- MemoryStream.cs
- Part.cs
- NamespaceList.cs
- DataGridBeginningEditEventArgs.cs
- ButtonAutomationPeer.cs
- TemplateBindingExtension.cs
- LexicalChunk.cs
- BuildProvider.cs
- TimeoutException.cs
- HttpModuleActionCollection.cs
- CustomValidator.cs
- XmlDeclaration.cs
- CheckoutException.cs
- FirstMatchCodeGroup.cs
- SqlNotificationEventArgs.cs
- TextBoxDesigner.cs
- ToolStripControlHost.cs
- DataTableClearEvent.cs
- Vector3DCollection.cs
- ChtmlCommandAdapter.cs
- ViewBase.cs
- AssemblyCollection.cs
- KeyTimeConverter.cs
- ServiceEndpointAssociationProvider.cs
- QueryAccessibilityHelpEvent.cs
- DataGridViewCheckBoxCell.cs
- CssClassPropertyAttribute.cs
- ItemChangedEventArgs.cs
- XmlChildEnumerator.cs
- SessionIDManager.cs
- ConstraintCollection.cs
- EncoderBestFitFallback.cs
- SerializationHelper.cs
- SystemMulticastIPAddressInformation.cs
- StorageConditionPropertyMapping.cs