Exemplo n.º 1
0
 // Token: 0x06002393 RID: 9107 RVA: 0x000A6BAC File Offset: 0x000A4DAC
 public QueuedBlockMsg(JET_EMITDATACTX emitCtx, byte[] logDataBuf, int logDataStartOffset, int compressedLogDataLength)
 {
     this.EmitContext             = emitCtx;
     this.LogDataBuf              = logDataBuf;
     this.LogDataStartOffset      = logDataStartOffset;
     this.LogDataLength           = (int)emitCtx.cbLogData;
     this.CompressedLogDataLength = compressedLogDataLength;
 }
Exemplo n.º 2
0
        internal BlockModeCompressedDataMsg(NetworkChannel channel, byte[] packetContent) : base(channel, NetworkChannelMessage.MessageType.BlockModeCompressedData, packetContent)
        {
            this.FlagsUsed         = (BlockModeCompressedDataMsg.Flags)base.Packet.ExtractInt64();
            this.RequestAckCounter = base.Packet.ExtractInt64();
            this.LogDataLength     = base.Packet.ExtractInt32();
            if (this.LogDataLength > 1048576)
            {
                throw new NetworkCorruptDataException(channel.PartnerNodeName);
            }
            this.EmitContext                       = new JET_EMITDATACTX();
            this.EmitContext.cbLogData             = (long)this.LogDataLength;
            this.EmitContext.dwVersion             = base.Packet.ExtractInt32();
            this.EmitContext.qwSequenceNum         = base.Packet.ExtractUInt64();
            this.EmitContext.grbitOperationalFlags = (ShadowLogEmitGrbit)base.Packet.ExtractUInt32();
            this.EmitContext.logtimeEmit           = base.Packet.ExtractDateTime();
            JET_LGPOS lgposLogData = default(JET_LGPOS);

            lgposLogData.lGeneration      = base.Packet.ExtractInt32();
            lgposLogData.isec             = (int)base.Packet.ExtractUInt16();
            lgposLogData.ib               = (int)base.Packet.ExtractUInt16();
            this.EmitContext.lgposLogData = lgposLogData;
            if (this.LogDataLength > 0)
            {
                int num = BlockModeCompressedDataMsg.CalculateBlockCount(this.LogDataLength);
                this.CompressedLengths = new int[num];
                for (int i = 0; i < num; i++)
                {
                    int num2 = base.Packet.ExtractInt32();
                    if (num2 <= 0 || num2 > 65536)
                    {
                        throw new NetworkCorruptDataException(channel.PartnerNodeName);
                    }
                    this.CompressedLengths[i] = num2;
                }
            }
        }
Exemplo n.º 3
0
        public static int SerializeToBuffer(JET_EMITDATACTX emitContext, byte[] logdata, int cblogdata, byte[] targetBuffer, int targetBufferOffsetToStart, out int totalCompressedSize)
        {
            NetworkChannelPacket networkChannelPacket = new NetworkChannelPacket(targetBuffer, targetBufferOffsetToStart);

            networkChannelPacket.GrowthDisabled = true;
            int num = BlockModeCompressedDataMsg.CalculateBlockCount(cblogdata);

            int[] array = new int[num];
            int   num2  = 73 + 4 * num;
            int   num3  = num2 + targetBufferOffsetToStart;
            int   num4  = 0;

            totalCompressedSize = 0;
            int num5 = cblogdata;

            for (int i = 0; i < num; i++)
            {
                int num6 = Math.Min(num5, 65536);
                Xpress.Compress(logdata, num4, num6, targetBuffer, num3, num6, out array[i]);
                num4 += num6;
                num3 += array[i];
                totalCompressedSize += array[i];
                num5 -= num6;
            }
            networkChannelPacket.Append(1);
            int val = num2 - 5 + totalCompressedSize;

            networkChannelPacket.Append(val);
            val = 1145261378;
            networkChannelPacket.Append(val);
            val = num2 - 5;
            networkChannelPacket.Append(val);
            DateTime utcNow = DateTime.UtcNow;

            networkChannelPacket.Append(utcNow);
            long val2 = 0L;

            networkChannelPacket.Append(val2);
            val2 = Win32StopWatch.GetSystemPerformanceCounter();
            networkChannelPacket.Append(val2);
            networkChannelPacket.Append(cblogdata);
            val = emitContext.dwVersion;
            networkChannelPacket.Append(val);
            val2 = (long)emitContext.qwSequenceNum;
            networkChannelPacket.Append(val2);
            val = (int)emitContext.grbitOperationalFlags;
            networkChannelPacket.Append(val);
            DateTime time = DateTime.SpecifyKind(emitContext.logtimeEmit, DateTimeKind.Utc);

            networkChannelPacket.Append(time);
            val = emitContext.lgposLogData.lGeneration;
            networkChannelPacket.Append(val);
            ushort val3 = (ushort)emitContext.lgposLogData.isec;

            networkChannelPacket.Append(val3);
            val3 = (ushort)emitContext.lgposLogData.ib;
            networkChannelPacket.Append(val3);
            for (int j = 0; j < num; j++)
            {
                networkChannelPacket.Append(array[j]);
            }
            return(num2 + totalCompressedSize);
        }
Exemplo n.º 4
0
        public static int CalculateWorstLength(JET_EMITDATACTX emitContext, int cblogdata)
        {
            int num = BlockModeCompressedDataMsg.CalculateBlockCount(cblogdata);

            return(73 + 4 * num + cblogdata);
        }
Exemplo n.º 5
0
 public static int CalculateSerializedLength(JET_EMITDATACTX emitContext, int cblogdata)
 {
     return(73 + cblogdata);
 }
Exemplo n.º 6
0
        public static void SerializeToBuffer(int expectedTotalSize, GranularLogDataMsg.Flags msgFlags, JET_EMITDATACTX emitContext, byte[] logdata, int cblogdata, byte[] targetBuffer, int targetBufferOffsetToStart)
        {
            NetworkChannelPacket networkChannelPacket = new NetworkChannelPacket(targetBuffer, targetBufferOffsetToStart);

            networkChannelPacket.GrowthDisabled = true;
            networkChannelPacket.Append(1);
            int val = expectedTotalSize - 5;

            networkChannelPacket.Append(val);
            val = 1312903751;
            networkChannelPacket.Append(val);
            val = expectedTotalSize - 5;
            networkChannelPacket.Append(val);
            DateTime utcNow = DateTime.UtcNow;

            networkChannelPacket.Append(utcNow);
            networkChannelPacket.Append((long)msgFlags);
            long val2 = Win32StopWatch.GetSystemPerformanceCounter();

            networkChannelPacket.Append(val2);
            networkChannelPacket.Append(cblogdata);
            val = emitContext.dwVersion;
            networkChannelPacket.Append(val);
            val2 = (long)emitContext.qwSequenceNum;
            networkChannelPacket.Append(val2);
            val = (int)emitContext.grbitOperationalFlags;
            networkChannelPacket.Append(val);
            DateTime time = DateTime.SpecifyKind(emitContext.logtimeEmit, DateTimeKind.Utc);

            networkChannelPacket.Append(time);
            val = emitContext.lgposLogData.lGeneration;
            networkChannelPacket.Append(val);
            ushort val3 = (ushort)emitContext.lgposLogData.isec;

            networkChannelPacket.Append(val3);
            val3 = (ushort)emitContext.lgposLogData.ib;
            networkChannelPacket.Append(val3);
            if (cblogdata > 0)
            {
                networkChannelPacket.Append(logdata, 0, cblogdata);
            }
        }
Exemplo n.º 7
0
 public void Write(JET_EMITDATACTX emitCtx, byte[] databuf, int startOffset)
 {
     if (!this.m_jetConsumerInitialized)
     {
         throw new GranularReplicationTerminatedException("Already terminated");
     }
     try
     {
         StopwatchStamp stamp = StopwatchStamp.GetStamp();
         long           num   = (long)emitCtx.lgposLogData.lGeneration;
         int            grbitOperationalFlags = (int)emitCtx.grbitOperationalFlags;
         bool           flag = false;
         if (BitMasker.IsOn(grbitOperationalFlags, 16))
         {
             flag = true;
         }
         UnpublishedApi.JetConsumeLogData(this.m_jetConsumer, emitCtx, databuf, startOffset, (int)emitCtx.cbLogData, ShadowLogConsumeGrbit.FlushData);
         if (flag)
         {
             GranularWriter.Tracer.TraceDebug <string, long>((long)this.GetHashCode(), "WriteGranular({0}): 0x{1:X} is complete", this.DatabaseName, num);
             if (this.m_lowestClosedGeneration == 0L)
             {
                 this.m_lowestClosedGeneration = num;
             }
             string   text     = this.FormFullGranuleName(num);
             FileInfo fileInfo = new FileInfo(text);
             fileInfo.LastWriteTimeUtc = emitCtx.logtimeEmit;
             if (this.m_granularCompletionsDisabled)
             {
                 string destFileName = this.FormInspectorLogfileName(num);
                 File.Move(text, destFileName);
                 this.TrackInspectorGeneration(num, emitCtx.logtimeEmit);
                 this.m_lowestClosedGeneration = num + 1L;
             }
             this.m_currentGenerationState = GranularWriter.GranularLogState.Expected;
             this.m_currentGeneration      = num + 1L;
         }
         else if (BitMasker.IsOn(grbitOperationalFlags, 8))
         {
             this.m_currentGenerationState = GranularWriter.GranularLogState.Open;
             this.m_currentGeneration      = num;
             this.m_lastTimeFromServer     = new DateTime?(emitCtx.logtimeEmit);
         }
         long elapsedTicks = stamp.ElapsedTicks;
         this.m_perfmonCounters.RecordBlockModeConsumerWriteLatency(elapsedTicks);
         GranularWriter.Tracer.TracePerformance((long)this.GetHashCode(), "WriteGranular({0},0x{1:X}.0x{2:X}) EmitSeq=0x{3:X} took {4} uSec", new object[]
         {
             this.DatabaseName,
             emitCtx.lgposLogData.lGeneration,
             emitCtx.lgposLogData.isec,
             emitCtx.qwSequenceNum,
             StopwatchStamp.TicksToMicroSeconds(elapsedTicks)
         });
     }
     catch (EsentErrorException ex)
     {
         GranularWriter.Tracer.TraceError <EsentErrorException>((long)this.GetHashCode(), "JetConsumeLogData threw {0}", ex);
         this.m_jetConsumerHealthy = false;
         throw new GranularReplicationTerminatedException(ex.Message, ex);
     }
     catch (IOException ex2)
     {
         GranularWriter.Tracer.TraceError <IOException>((long)this.GetHashCode(), "IOException: {0}", ex2);
         this.m_jetConsumerHealthy = false;
         throw new GranularReplicationTerminatedException(ex2.Message, ex2);
     }
 }