// 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; }
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; } } }
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); }
public static int CalculateWorstLength(JET_EMITDATACTX emitContext, int cblogdata) { int num = BlockModeCompressedDataMsg.CalculateBlockCount(cblogdata); return(73 + 4 * num + cblogdata); }
public static int CalculateSerializedLength(JET_EMITDATACTX emitContext, int cblogdata) { return(73 + cblogdata); }
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); } }
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); } }