internal static RefState ReadReferenceForObject(
     BinaryConverter binaryConverter,
     ref ReadStack state,
     ref BinaryReader reader,
     out object value)
 {
     if (reader.TokenType == BinaryTokenType.StartObject)
     {
         uint refSeq = BitConverter.ToUInt32(reader.ValueSpan);
         state.ReferenceResolver.AddReference(refSeq);
         value = default;
         state.Current.RefId = refSeq;
         return(RefState.None);
     }
     else if (reader.TokenType == BinaryTokenType.ObjectRef)
     {
         uint refSeq = BitConverter.ToUInt32(reader.ValueSpan);
         state.Current.RefId = refSeq;
         var refState = state.ReferenceResolver.TryGetReference(refSeq, out value);
         if (refState == RefState.Start)
         {
             value = new ReferenceID()
             {
                 RefSeq = refSeq
             };
         }
         return(refState);
     }
     else
     {
         ThrowHelper.ThrowBinaryReaderException(ref reader, ExceptionResource.InvalidByte);
     }
     value = default;
     return(RefState.None);
 }
Ejemplo n.º 2
0
        private int GetPartitionIndex(ReferenceID id)
        {
            int partitionID = id.PartitionID;

            Global.Tracer.Assert(partitionID >= 0, "Invalid tree partition id: {0}", partitionID);
            Global.Tracer.Assert(this.m_treePartitionOffsets != null && partitionID < this.m_treePartitionOffsets.Count, "Cannot update Tree partition: {0} without first allocating it", partitionID);
            return(partitionID);
        }
Ejemplo n.º 3
0
    public void RebuildReferences(GenericCollection in_Root)
    {
        if (!ReferenceID.Equals(Guid.Empty))
        {
            Reference = in_Root.FindMember(ReferenceID);
        }

        FamilyTree.RebuildReferences(in_Root);
    }
 public override bool Equals(object obj)
 {
     if (obj is ReferenceID)
     {
         ReferenceID rhs = (ReferenceID)obj;
         return(serverID == rhs.serverID && clientID == rhs.clientID);
     }
     return(false);
 }
        public bool Equals(DiscrepancyResponse other)
        {
            if (string.IsNullOrEmpty(ReferenceID))
            {
                return(false);
            }

            return(ReferenceID.Equals(other.ReferenceID));
        }
Ejemplo n.º 6
0
        public void UpdateTreePartitionOffset(ReferenceID id, long offset)
        {
            int partitionIndex = this.GetPartitionIndex(id);

            Global.Tracer.Assert(offset >= 0, "Invalid offset for Tree partition. ID: {0} Offset: {1}", id, offset);
            Global.Tracer.Assert(this.m_treePartitionOffsets[partitionIndex] == TreePartitionManager.EmptyTreePartitionOffset, "Cannot update offset for already persisted tree partition");
            this.m_treeChanged = true;
            this.m_treePartitionOffsets[partitionIndex] = offset;
        }
        public void HandleConnect(string serverID, int clientID, string remoteAddress, int remotePort)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);

            lock (connectedClients)
            {
                connectedClients.Add(thisReference, null);
            }
        }
        public override int GetHashCode()
        {
            if (string.IsNullOrEmpty(ReferenceID))
            {
                return(base.GetHashCode());
            }

            return(ReferenceID.GetHashCode());
        }
Ejemplo n.º 9
0
        public void HandleReport(string serverID, int clientID, ReportingMessage reportMessage)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);
            int         trackNumber   = trackID[thisReference];

            lock (connectedClients)
            {
                connectedClients[thisReference] = reportMessage;
            }
            SQLReport(trackNumber, reportMessage);
        }
Ejemplo n.º 10
0
        public void HandleConnect(string serverID, int clientID, string remoteAddress, int remotePort)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);

            trackID.Add(thisReference, Interlocked.Increment(ref freeID));
            int trackNumber = trackID[thisReference];

            lock (connectedClients)
            {
                connectedClients.Add(thisReference, null);
            }
            SQLConnect(trackNumber, remoteAddress);
        }
Ejemplo n.º 11
0
        public void TransferToLookupCache(OnDemandProcessingContext odpContext)
        {
            Global.Tracer.Assert(this.m_lookupTable != null, "Can't transfer a missing LookupTable");
            Global.Tracer.Assert(!this.HasBeenTransferred, "Can't transfer a LookupTable twice");
            OnDemandMetadata odpMetadata = odpContext.OdpMetadata;

            odpMetadata.EnsureLookupScalabilitySetup(odpContext.ChunkFactory, odpContext.GetActiveCompatibilityVersion(), odpContext.ProhibitSerializableValues);
            LookupScalabilityCache   lookupScalabilityCache = odpMetadata.LookupScalabilityCache;
            IReference <LookupTable> reference = lookupScalabilityCache.AllocateEmptyTreePartition <LookupTable>(AspNetCore.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType.LookupTableReference);

            this.m_lookupTable.TransferTo(lookupScalabilityCache);
            lookupScalabilityCache.SetTreePartitionContentsAndPin(reference, this.m_lookupTable);
            this.m_lookupTablePartitionId = reference.Id;
            reference.UnPinValue();
        }
Ejemplo n.º 12
0
        public void HandleDisconnect(string serverID, int clientID)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);
            int         trackNumber   = trackID[thisReference];

            lock (connectedClients)
            {
                if (connectedClients.ContainsKey(thisReference))
                {
                    connectedClients.Remove(thisReference);
                }
            }
            SQLDisconnect(trackNumber);
            trackID.Remove(thisReference);
        }
Ejemplo n.º 13
0
        public ReferenceID AllocateNewTreePartition()
        {
            this.m_treeChanged = true;
            if (this.m_treePartitionOffsets == null)
            {
                this.m_treePartitionOffsets = new List <long>();
            }
            int count = this.m_treePartitionOffsets.Count;

            this.m_treePartitionOffsets.Add(TreePartitionManager.EmptyTreePartitionOffset);
            ReferenceID result = default(ReferenceID);

            result.HasMultiPart = true;
            result.IsTemporary  = false;
            result.PartitionID  = count;
            return(result);
        }
Ejemplo n.º 14
0
        internal ReferenceID AllocateNewTreePartition()
        {
            m_treeChanged = true;
            if (m_treePartitionOffsets == null)
            {
                m_treePartitionOffsets = new List <long>();
            }
            int count = m_treePartitionOffsets.Count;

            m_treePartitionOffsets.Add(EmptyTreePartitionOffset);
            ReferenceID result = default(ReferenceID);

            result.HasMultiPart = true;
            result.IsTemporary  = false;
            result.PartitionID  = count;
            return(result);
        }
        public void HandleDisconnect(string serverID, int clientID)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);

            lock (connectedClients)
            {
                connectedClients.Remove(thisReference);
            }
            if (pairMatch.ContainsKey(thisReference))
            {
                string         serverHash     = pairMatch[thisReference];
                TrackingObject trackingObject = trackingObjects[serverHash];
                trackingObject.referenceCount--;
                Console.WriteLine(serverHash + " references: " + trackingObject.referenceCount);
                if (trackingObject.referenceCount == 0)
                {
                    SQLDisconnect(serverHash, trackingObject);
                    trackingObjects.Remove(serverHash);
                }
                pairMatch.Remove(thisReference);
            }
        }
        public void HandleReport(string serverID, int clientID, ReportingMessage reportMessage)
        {
            ReferenceID thisReference = new ReferenceID(serverID, clientID);

            lock (connectedClients)
            {
                connectedClients[thisReference] = reportMessage;
            }
            if (!pairMatch.ContainsKey(thisReference))
            {
                pairMatch.Add(thisReference, reportMessage.serverHash);
                if (!trackingObjects.ContainsKey(reportMessage.serverHash))
                {
                    trackingObjects.Add(reportMessage.serverHash, new TrackingObject());
                    SQLConnect(reportMessage, trackingObjects[reportMessage.serverHash]);
                }
                TrackingObject trackingObject = trackingObjects[reportMessage.serverHash];
                trackingObject.referenceCount++;
                Console.WriteLine(reportMessage.serverHash + " references: " + trackingObject.referenceCount);
            }
            SQLReport(reportMessage, trackingObjects[reportMessage.serverHash]);
        }
Ejemplo n.º 17
0
        public void Deserialize(IntermediateFormatReader reader)
        {
            reader.RegisterDeclaration(LookupObjResult.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.LookupTablePartitionID:
                    this.m_lookupTablePartitionId = new ReferenceID(reader.ReadInt64());
                    break;

                case MemberName.HasCode:
                    this.m_hasErrorCode = reader.ReadBoolean();
                    break;

                case MemberName.Code:
                    this.m_errorCode = (ProcessingErrorCode)reader.ReadEnum();
                    break;

                case MemberName.Severity:
                    this.m_errorSeverity = (Severity)reader.ReadEnum();
                    break;

                case MemberName.FieldStatus:
                    this.m_dataFieldStatus = (DataFieldStatus)reader.ReadEnum();
                    break;

                case MemberName.Arguments:
                    this.m_errorMessageArgs = reader.ReadStringArray();
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }
Ejemplo n.º 18
0
        public long GetTreePartitionOffset(ReferenceID id)
        {
            int partitionIndex = this.GetPartitionIndex(id);

            return(this.m_treePartitionOffsets[partitionIndex]);
        }
Ejemplo n.º 19
0
        // Converts the object to string
        public override string ToString()
        {
            string str;

            str = "Leap Indicator: ";
            switch (LeapIndicator)
            {
            case _LeapIndicator.NoWarning:
                str += "No warning";
                break;

            case _LeapIndicator.LastMinute61:
                str += "Last minute has 61 seconds";
                break;

            case _LeapIndicator.LastMinute59:
                str += "Last minute has 59 seconds";
                break;

            case _LeapIndicator.Alarm:
                str += "Alarm Condition (clock not synchronized)";
                break;
            }
            str += "\r\nVersion number: " + VersionNumber.ToString() + "\r\n";
            str += "Mode: ";
            switch (Mode)
            {
            case _Mode.Unknown:
                str += "Unknown";
                break;

            case _Mode.SymmetricActive:
                str += "Symmetric Active";
                break;

            case _Mode.SymmetricPassive:
                str += "Symmetric Pasive";
                break;

            case _Mode.Client:
                str += "Client";
                break;

            case _Mode.Server:
                str += "Server";
                break;

            case _Mode.Broadcast:
                str += "Broadcast";
                break;
            }
            str += "\r\nStratum: ";
            switch (Stratum)
            {
            case _Stratum.Unspecified:
            case _Stratum.Reserved:
                str += "Unspecified";
                break;

            case _Stratum.PrimaryReference:
                str += "Primary Reference";
                break;

            case _Stratum.SecondaryReference:
                str += "Secondary Reference";
                break;
            }
            str += "\r\nLocal time: " + TransmitTimestamp.ToString();
            str += "\r\nPrecision: " + Precision.ToString() + " ms";
            str += "\r\nPoll Interval: " + PollInterval.ToString() + " s";
            str += "\r\nReference ID: " + ReferenceID.ToString();
            str += "\r\nRoot Dispersion: " + RootDispersion.ToString() + " ms";
            str += "\r\nRound Trip Delay: " + RoundTripDelay.ToString() + " ms";
            str += "\r\nLocal Clock Offset: " + LocalClockOffset.ToString() + " ms";
            str += "\r\n";

            return(str);
        }
Ejemplo n.º 20
0
        internal long GetTreePartitionOffset(ReferenceID id)
        {
            int partitionIndex = GetPartitionIndex(id);

            return(m_treePartitionOffsets[partitionIndex]);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Returns a <see cref="System.String"/> that represents this instance.
        /// </summary>
        /// <returns>
        /// A <see cref="System.String"/> that represents this instance.
        /// </returns>
        public override string ToString()
        {
            string str;

            str = "Leap Indicator: ";
            switch (LeapIndicator)
            {
            case LeapIndicator.NoWarning:
                str += "No warning";
                break;

            case LeapIndicator.LastMinute61:
                str += "Last minute has 61 seconds";
                break;

            case LeapIndicator.LastMinute59:
                str += "Last minute has 59 seconds";
                break;

            case LeapIndicator.Alarm:
                str += "Alarm Condition (clock not synchronized)";
                break;
            }
            str += "\r\nVersion number: " + VersionNumber.ToString() + "\r\n";
            str += "Mode: ";
            switch (Mode)
            {
            case NtpMode.Unknown:
                str += "Unknown";
                break;

            case NtpMode.SymmetricActive:
                str += "Symmetric Active";
                break;

            case NtpMode.SymmetricPassive:
                str += "Symmetric Pasive";
                break;

            case NtpMode.Client:
                str += "Client";
                break;

            case NtpMode.Server:
                str += "Server";
                break;

            case NtpMode.Broadcast:
                str += "Broadcast";
                break;
            }
            str += "\r\nStratum: ";
            switch (Stratum)
            {
            case NtpStratum.Unspecified:
            case NtpStratum.Reserved:
                str += "Unspecified";
                break;

            case NtpStratum.PrimaryReference:
                str += "Primary Reference";
                break;

            case NtpStratum.SecondaryReference:
                str += "Secondary Reference";
                break;
            }
            str += "\r\nOriginate (Send request): " + OriginateTimestamp.ToString("dd/MM/yyyy HH:mm:ss.fff");
            str += "\r\nRecieve (Server recieved): " + ReceiveTimestamp.ToString("dd/MM/yyyy HH:mm:ss.fff");
            str += "\r\nTransmit (Server reply): " + TransmitTimestamp.ToString("dd/MM/yyyy HH:mm:ss.fff");
            str += "\r\nReception (Request recieved): " + ReceptionTimestamp.ToString("dd/MM/yyyy HH:mm:ss.fff");
            str += "\r\nServer transmit time (Local zone): " + TransmitTimestamp.ToString("dd/MM/yyyy HH:mm:ss.fff");
            str += "\r\nPrecision: " + Precision.ToString() + " ms";
            str += "\r\nPoll Interval: " + PollInterval.ToString() + " s";
            str += "\r\nReference ID: " + ReferenceID.ToString();
            str += "\r\nRoot Dispersion: " + RootDispersion.ToString() + " ms";
            str += "\r\nRound Trip Delay: " + RoundTripDelay.TotalMilliseconds.ToString() + " ms";
            str += "\r\nLocal Clock Offset: " + LocalClockOffset.TotalMilliseconds.ToString() + " ms";
            str += "\r\n";

            return(str);
        }