EventDescriptor.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Diagnostics / Eventing / EventDescriptor.cs / 1305376 / EventDescriptor.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
using System; 
using System.Runtime.InteropServices; 

namespace System.Diagnostics.Eventing 
{
    [StructLayout(LayoutKind.Explicit, Size = 16)]
    [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
    [System.Runtime.CompilerServices.FriendAccessAllowed] 
    internal struct EventDescriptorInternal
    { 
        # region private 
        [FieldOffset(0)]
        private ushort m_id; 
        [FieldOffset(2)]
        private byte m_version;
        [FieldOffset(3)]
        private byte m_channel; 
        [FieldOffset(4)]
        private byte m_level; 
        [FieldOffset(5)] 
        private byte m_opcode;
        [FieldOffset(6)] 
        private ushort m_task;
        [FieldOffset(8)]
        private long m_keywords;
        #endregion 

        public EventDescriptorInternal( 
                int id, 
                byte version,
                byte channel, 
                byte level,
                byte opcode,
                int task,
                long keywords 
                )
        { 
            if (id < 0) 
            {
                throw new ArgumentOutOfRangeException("id", SRETW.GetString(SRETW.ArgumentOutOfRange_NeedNonNegNum)); 
            }

            if (id > ushort.MaxValue)
            { 
                throw new ArgumentOutOfRangeException("id", SRETW.GetString(SRETW.ArgumentOutOfRange_NeedValidId, 1, ushort.MaxValue));
            } 
 
            m_id = (ushort)id;
            m_version = version; 
            m_channel = channel;
            m_level = level;
            m_opcode = opcode;
            m_keywords = keywords; 

            if (task < 0) 
            { 
                throw new ArgumentOutOfRangeException("task", SRETW.GetString(SRETW.ArgumentOutOfRange_NeedNonNegNum));
            } 

            if (task > ushort.MaxValue)
            {
                throw new ArgumentOutOfRangeException("task", SRETW.GetString(SRETW.ArgumentOutOfRange_NeedValidId, 1, ushort.MaxValue)); 
            }
 
            m_task = (ushort)task; 
        }
 
        public int EventId {
            get {
                return m_id;
            } 
        }
        public byte Version 
        { 
            get
            { 
                return m_version;
            }
        }
        public byte Channel 
        {
            get 
            { 
                return m_channel;
            } 
        }
        public byte Level
        {
            get 
            {
                return m_level; 
            } 
        }
        public byte Opcode 
        {
            get
            {
                return m_opcode; 
            }
        } 
        public int Task 
        {
            get 
            {
                return m_task;
            }
        } 
        public long Keywords
        { 
            get 
            {
                return m_keywords; 
            }
        }

        public override bool Equals(object obj) 
        {
            if (!(obj is EventDescriptorInternal)) 
                return false; 

            return Equals((EventDescriptorInternal) obj); 
        }

        public override int GetHashCode()
        { 
            return m_id ^ m_version ^ m_channel ^ m_level ^ m_opcode ^ m_task ^ (int)m_keywords;
        } 
 
        public bool Equals(EventDescriptorInternal other)
        { 
            if ((m_id != other.m_id) ||
                (m_version != other.m_version) ||
                (m_channel != other.m_channel) ||
                (m_level != other.m_level) || 
                (m_opcode != other.m_opcode) ||
                (m_task != other.m_task) || 
                (m_keywords != other.m_keywords)) 
            {
                return false; 
            }
            return true;
        }
 
        public static bool operator ==(EventDescriptorInternal event1, EventDescriptorInternal event2)
        { 
            return event1.Equals(event2); 
        }
 
        public static bool operator !=(EventDescriptorInternal event1, EventDescriptorInternal event2)
        {
            return !event1.Equals(event2);
        } 
    }
} 

// 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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK