Exemplo n.º 1
0
        // Token: 0x0600227E RID: 8830 RVA: 0x000A0868 File Offset: 0x0009EA68
        internal static GranularLogDataMsg ReadFromNet(NetworkChannel ch, byte[] workingBuf, int startOffset)
        {
            int len = 52;

            ch.Read(workingBuf, startOffset, len);
            GranularLogDataMsg granularLogDataMsg = new GranularLogDataMsg();
            BufDeserializer    bufDeserializer    = new BufDeserializer(workingBuf, startOffset);

            granularLogDataMsg.FlagsUsed         = (GranularLogDataMsg.Flags)bufDeserializer.ExtractInt64();
            granularLogDataMsg.RequestAckCounter = bufDeserializer.ExtractInt64();
            granularLogDataMsg.LogDataLength     = bufDeserializer.ExtractInt32();
            if (granularLogDataMsg.LogDataLength > 1048576)
            {
                throw new NetworkCorruptDataException(ch.PartnerNodeName);
            }
            granularLogDataMsg.EmitContext                       = new JET_EMITDATACTX();
            granularLogDataMsg.EmitContext.cbLogData             = (long)granularLogDataMsg.LogDataLength;
            granularLogDataMsg.EmitContext.dwVersion             = bufDeserializer.ExtractInt32();
            granularLogDataMsg.EmitContext.qwSequenceNum         = bufDeserializer.ExtractUInt64();
            granularLogDataMsg.EmitContext.grbitOperationalFlags = (ShadowLogEmitGrbit)bufDeserializer.ExtractUInt32();
            granularLogDataMsg.EmitContext.logtimeEmit           = bufDeserializer.ExtractDateTime();
            JET_LGPOS lgposLogData = default(JET_LGPOS);

            lgposLogData.lGeneration = bufDeserializer.ExtractInt32();
            lgposLogData.isec        = (int)bufDeserializer.ExtractUInt16();
            lgposLogData.ib          = (int)bufDeserializer.ExtractUInt16();
            granularLogDataMsg.EmitContext.lgposLogData = lgposLogData;
            return(granularLogDataMsg);
        }
Exemplo n.º 2
0
        internal static BlockModeCompressedDataMsg ReadFromNet(NetworkChannel ch, byte[] workingBuf, int startOffset)
        {
            int len = 52;

            ch.Read(workingBuf, startOffset, len);
            BlockModeCompressedDataMsg blockModeCompressedDataMsg = new BlockModeCompressedDataMsg();
            BufDeserializer            bufDeserializer            = new BufDeserializer(workingBuf, startOffset);

            blockModeCompressedDataMsg.FlagsUsed         = (BlockModeCompressedDataMsg.Flags)bufDeserializer.ExtractInt64();
            blockModeCompressedDataMsg.RequestAckCounter = bufDeserializer.ExtractInt64();
            blockModeCompressedDataMsg.LogDataLength     = bufDeserializer.ExtractInt32();
            if (blockModeCompressedDataMsg.LogDataLength > 1048576)
            {
                throw new NetworkCorruptDataException(ch.PartnerNodeName);
            }
            blockModeCompressedDataMsg.EmitContext                       = new JET_EMITDATACTX();
            blockModeCompressedDataMsg.EmitContext.cbLogData             = (long)blockModeCompressedDataMsg.LogDataLength;
            blockModeCompressedDataMsg.EmitContext.dwVersion             = bufDeserializer.ExtractInt32();
            blockModeCompressedDataMsg.EmitContext.qwSequenceNum         = bufDeserializer.ExtractUInt64();
            blockModeCompressedDataMsg.EmitContext.grbitOperationalFlags = (ShadowLogEmitGrbit)bufDeserializer.ExtractUInt32();
            blockModeCompressedDataMsg.EmitContext.logtimeEmit           = bufDeserializer.ExtractDateTime();
            JET_LGPOS lgposLogData = default(JET_LGPOS);

            lgposLogData.lGeneration = bufDeserializer.ExtractInt32();
            lgposLogData.isec        = (int)bufDeserializer.ExtractUInt16();
            lgposLogData.ib          = (int)bufDeserializer.ExtractUInt16();
            blockModeCompressedDataMsg.EmitContext.lgposLogData = lgposLogData;
            if (blockModeCompressedDataMsg.LogDataLength > 0)
            {
                int num = BlockModeCompressedDataMsg.CalculateBlockCount(blockModeCompressedDataMsg.LogDataLength);
                blockModeCompressedDataMsg.CompressedLengths = new int[num];
                len = num * 4;
                ch.Read(workingBuf, startOffset, len);
                bufDeserializer.Reset(workingBuf, startOffset);
                for (int i = 0; i < num; i++)
                {
                    int num2 = bufDeserializer.ExtractInt32();
                    if (num2 <= 0 || num2 > 65536)
                    {
                        throw new NetworkCorruptDataException(ch.PartnerNodeName);
                    }
                    blockModeCompressedDataMsg.CompressedLengths[i] = num2;
                }
            }
            return(blockModeCompressedDataMsg);
        }
Exemplo n.º 3
0
        public static NetworkChannelMessageHeader ReadHeaderFromNet(NetworkChannel netChan, byte[] workingBuf, int startOffset)
        {
            netChan.Read(workingBuf, startOffset, 16);
            BufDeserializer             bufDeserializer = new BufDeserializer(workingBuf, 0);
            NetworkChannelMessageHeader result;

            result.MessageType   = (NetworkChannelMessage.MessageType)bufDeserializer.ExtractUInt32();
            result.MessageLength = bufDeserializer.ExtractInt32();
            result.MessageUtc    = bufDeserializer.ExtractDateTime();
            return(result);
        }
Exemplo n.º 4
0
        // Token: 0x0600229D RID: 8861 RVA: 0x000A13AC File Offset: 0x0009F5AC
        internal static PingMessage ReadFromNet(NetworkChannel ch, byte[] workingBuf, int startOffset)
        {
            int len = 24;

            ch.Read(workingBuf, startOffset, len);
            PingMessage     pingMessage     = new PingMessage();
            BufDeserializer bufDeserializer = new BufDeserializer(workingBuf, startOffset);

            pingMessage.FlagsUsed         = (PingMessage.Flags)bufDeserializer.ExtractInt64();
            pingMessage.RequestAckCounter = bufDeserializer.ExtractInt64();
            pingMessage.ReplyAckCounter   = bufDeserializer.ExtractInt64();
            return(pingMessage);
        }
Exemplo n.º 5
0
        private QueuedBlockMsg ReadUncompressedMsg(NetworkChannel netChan)
        {
            byte[]             networkReadWorkingBuf = this.m_networkReadWorkingBuf;
            GranularLogDataMsg granularLogDataMsg    = GranularLogDataMsg.ReadFromNet(netChan, networkReadWorkingBuf, 0);

            byte[] array = null;
            int    num   = 0;

            if (granularLogDataMsg.LogDataLength > 0)
            {
                this.GetAppendSpace(granularLogDataMsg.LogDataLength);
                array = this.m_currentBuffer.Buffer;
                num   = this.m_currentBuffer.AppendOffset;
                netChan.Read(array, num, granularLogDataMsg.LogDataLength);
                this.m_currentBuffer.AppendOffset = num + granularLogDataMsg.LogDataLength;
            }
            return(new QueuedBlockMsg(granularLogDataMsg.EmitContext, array, num, 0)
            {
                RequestAckCounter = granularLogDataMsg.RequestAckCounter,
                IOBuffer = this.m_currentBuffer
            });
        }
Exemplo n.º 6
0
        private QueuedBlockMsg ReadCompressedMsg(NetworkChannel netChan, NetworkChannelMessageHeader msgHdr)
        {
            byte[] networkReadWorkingBuf = this.m_networkReadWorkingBuf;
            BlockModeCompressedDataMsg blockModeCompressedDataMsg = BlockModeCompressedDataMsg.ReadFromNet(netChan, networkReadWorkingBuf, 0);

            byte[] array = null;
            int    num   = 0;
            int    num2  = 0;

            if (blockModeCompressedDataMsg.LogDataLength > 0)
            {
                this.GetAppendSpace(blockModeCompressedDataMsg.LogDataLength);
                array = this.m_currentBuffer.Buffer;
                num   = this.m_currentBuffer.AppendOffset;
                int num3 = blockModeCompressedDataMsg.LogDataLength;
                int num4 = num;
                foreach (int num5 in blockModeCompressedDataMsg.CompressedLengths)
                {
                    num2 += num5;
                    netChan.Read(networkReadWorkingBuf, 0, num5);
                    int num6 = Math.Min(num3, 65536);
                    if (!Xpress.Decompress(networkReadWorkingBuf, 0, num5, array, num4, num6))
                    {
                        throw new NetworkCorruptDataException(this.m_netChannel.PartnerNodeName);
                    }
                    num3 -= num6;
                    num4 += num6;
                }
                this.m_currentBuffer.AppendOffset = num + blockModeCompressedDataMsg.LogDataLength;
            }
            return(new QueuedBlockMsg(blockModeCompressedDataMsg.EmitContext, array, num, num2)
            {
                RequestAckCounter = blockModeCompressedDataMsg.RequestAckCounter,
                IOBuffer = this.m_currentBuffer
            });
        }
Exemplo n.º 7
0
        internal static NetworkChannelMessage ReadMessage(NetworkChannel channel, byte[] headerBuf)
        {
            int num = 0;

            NetworkChannelMessage.MessageType messageType = (NetworkChannelMessage.MessageType)Serialization.DeserializeUInt32(headerBuf, ref num);
            if (!NetworkChannelMessage.IsValidType(messageType))
            {
                throw new NetworkUnexpectedMessageException(channel.PartnerNodeName, string.Format("Unknown Type{0}", messageType));
            }
            int num2 = (int)Serialization.DeserializeUInt32(headerBuf, ref num);

            if (num2 < 16 || num2 > 1052672)
            {
                throw new NetworkUnexpectedMessageException(channel.PartnerNodeName, string.Format("Invalid msgLen: {0}", num2));
            }
            ExTraceGlobals.NetworkChannelTracer.TraceDebug <NetworkChannelMessage.MessageType, string, string>((long)channel.GetHashCode(), "ReadMessage: Received {0} from {1} on {2}", messageType, channel.RemoteEndPointString, channel.LocalEndPointString);
            byte[] array = new byte[num2];
            Array.Copy(headerBuf, 0, array, 0, 16);
            int len = num2 - 16;

            channel.Read(array, 16, len);
            NetworkChannelMessage.MessageType messageType2 = messageType;
            if (messageType2 <= NetworkChannelMessage.MessageType.CompressionRequest)
            {
                if (messageType2 <= NetworkChannelMessage.MessageType.SeedLogCopyRequest)
                {
                    if (messageType2 <= NetworkChannelMessage.MessageType.Ping)
                    {
                        if (messageType2 <= NetworkChannelMessage.MessageType.PassiveStatus)
                        {
                            if (messageType2 == NetworkChannelMessage.MessageType.TestNetwork0)
                            {
                                return(new TestNetwork0Request(channel, array));
                            }
                            if (messageType2 != NetworkChannelMessage.MessageType.PassiveStatus)
                            {
                                goto IL_51C;
                            }
                            return(new PassiveStatusMsg(channel, array));
                        }
                        else
                        {
                            if (messageType2 == NetworkChannelMessage.MessageType.CompressionConfig)
                            {
                                return(new NetworkChannelCompressionConfigMsg(channel, array));
                            }
                            if (messageType2 != NetworkChannelMessage.MessageType.BlockModeCompressedData)
                            {
                                if (messageType2 != NetworkChannelMessage.MessageType.Ping)
                                {
                                    goto IL_51C;
                                }
                                return(new PingMessage(channel, array));
                            }
                        }
                    }
                    else if (messageType2 <= NetworkChannelMessage.MessageType.EnterBlockMode)
                    {
                        if (messageType2 == NetworkChannelMessage.MessageType.GranularTermination)
                        {
                            return(new GranularTerminationMsg(channel, array));
                        }
                        if (messageType2 != NetworkChannelMessage.MessageType.GranularLogData)
                        {
                            if (messageType2 != NetworkChannelMessage.MessageType.EnterBlockMode)
                            {
                                goto IL_51C;
                            }
                            return(new EnterBlockModeMsg(channel, array));
                        }
                    }
                    else
                    {
                        if (messageType2 == NetworkChannelMessage.MessageType.GetE00GenerationRequest)
                        {
                            return(new GetE00GenerationRequest(channel, array));
                        }
                        if (messageType2 == NetworkChannelMessage.MessageType.CancelCiFileRequest)
                        {
                            return(new CancelCiFileRequest(channel, array));
                        }
                        if (messageType2 != NetworkChannelMessage.MessageType.SeedLogCopyRequest)
                        {
                            goto IL_51C;
                        }
                        return(new SeedLogCopyRequest(channel, array));
                    }
                    throw new NetworkUnexpectedMessageException(channel.PartnerNodeName, string.Format("ReadMessage() does not support message type: {0}.", messageType));
                }
                if (messageType2 <= NetworkChannelMessage.MessageType.CopyLogRequest)
                {
                    if (messageType2 <= NetworkChannelMessage.MessageType.SeedDatabaseFileRequest)
                    {
                        if (messageType2 == NetworkChannelMessage.MessageType.PassiveDatabaseFileRequest)
                        {
                            return(new PassiveSeedDatabaseFileRequest(channel, array));
                        }
                        if (messageType2 == NetworkChannelMessage.MessageType.SeedDatabaseFileRequest)
                        {
                            return(new SeedDatabaseFileRequest(channel, array));
                        }
                    }
                    else
                    {
                        switch (messageType2)
                        {
                        case NetworkChannelMessage.MessageType.ContinuousLogCopyRequest:
                            return(new ContinuousLogCopyRequest(channel, array));

                        case (NetworkChannelMessage.MessageType) 1363627076:
                            break;

                        case NetworkChannelMessage.MessageType.NotifyEndOfLogRequest:
                            return(new NotifyEndOfLogRequest(channel, array));

                        default:
                            if (messageType2 == NetworkChannelMessage.MessageType.TestLogExistenceRequest)
                            {
                                return(new TestLogExistenceRequest(channel, array));
                            }
                            if (messageType2 == NetworkChannelMessage.MessageType.CopyLogRequest)
                            {
                                return(new CopyLogRequest(channel, array));
                            }
                            break;
                        }
                    }
                }
                else if (messageType2 <= NetworkChannelMessage.MessageType.SeedPageReaderRollLogFileRequest)
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.QueryLogRangeRequest)
                    {
                        return(new QueryLogRangeRequest(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.TestHealthRequest)
                    {
                        return(new TestHealthRequest(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderRollLogFileRequest)
                    {
                        return(new SeedPageReaderRollLogFileRequest(channel, array));
                    }
                }
                else
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderMultiplePageRequest)
                    {
                        return(new SeedPageReaderMultiplePageRequest(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.ProgressCiFileRequest)
                    {
                        return(new ProgressCiFileRequest(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.CompressionRequest)
                    {
                        return(new NetworkChannelCompressionRequest(channel, array));
                    }
                }
            }
            else if (messageType2 <= NetworkChannelMessage.MessageType.SeedDatabaseFileReply)
            {
                if (messageType2 <= NetworkChannelMessage.MessageType.ContinuousLogCopyRequest2)
                {
                    if (messageType2 <= NetworkChannelMessage.MessageType.SeedCiFileRequest)
                    {
                        if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderSinglePageRequest)
                        {
                            return(new SeedPageReaderSinglePageRequest(channel, array));
                        }
                        if (messageType2 == NetworkChannelMessage.MessageType.SeedCiFileRequest)
                        {
                            return(new SeedCiFileRequest(channel, array));
                        }
                    }
                    else
                    {
                        if (messageType2 == NetworkChannelMessage.MessageType.SeedCiFileRequest2)
                        {
                            return(new SeedCiFileRequest2(channel, array));
                        }
                        if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderPageSizeRequest)
                        {
                            return(new SeedPageReaderPageSizeRequest(channel, array));
                        }
                        if (messageType2 == NetworkChannelMessage.MessageType.ContinuousLogCopyRequest2)
                        {
                            return(new ContinuousLogCopyRequest2(channel, array));
                        }
                    }
                }
                else if (messageType2 <= NetworkChannelMessage.MessageType.GetE00GenerationReply)
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.LogCopyServerStatus)
                    {
                        return(new LogCopyServerStatusMsg(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.GranularLogComplete)
                    {
                        return(new GranularLogCompleteMsg(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.GetE00GenerationReply)
                    {
                        return(new GetE00GenerationReply(channel, array));
                    }
                }
                else
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.NotifyEndOfLogAsyncReply)
                    {
                        return(new NotifyEndOfLogAsyncReply(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.CancelCiFileReply)
                    {
                        return(new CancelCiFileReply(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.SeedDatabaseFileReply)
                    {
                        return(new SeedDatabaseFileReply(channel, array));
                    }
                }
            }
            else if (messageType2 <= NetworkChannelMessage.MessageType.TestHealthReply)
            {
                if (messageType2 <= NetworkChannelMessage.MessageType.TestLogExistenceReply)
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.NotifyEndOfLogReply)
                    {
                        return(new NotifyEndOfLogReply(channel, messageType, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.TestLogExistenceReply)
                    {
                        return(new TestLogExistenceReply(channel, array));
                    }
                }
                else
                {
                    if (messageType2 == NetworkChannelMessage.MessageType.CopyLogReply)
                    {
                        return(new CopyLogReply(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.QueryLogRangeReply)
                    {
                        return(new QueryLogRangeReply(channel, array));
                    }
                    if (messageType2 == NetworkChannelMessage.MessageType.TestHealthReply)
                    {
                        return(new TestHealthReply(channel, array));
                    }
                }
            }
            else if (messageType2 <= NetworkChannelMessage.MessageType.CompressionReply)
            {
                if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderRollLogFileReply)
                {
                    return(new SeedPageReaderRollLogFileReply(channel, array));
                }
                if (messageType2 == NetworkChannelMessage.MessageType.ProgressCiFileReply)
                {
                    return(new ProgressCiFileReply(channel, array));
                }
                if (messageType2 == NetworkChannelMessage.MessageType.CompressionReply)
                {
                    return(new NetworkChannelCompressionReply(channel, array));
                }
            }
            else
            {
                if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderSinglePageReply)
                {
                    return(new SeedPageReaderSinglePageReply(channel, array));
                }
                if (messageType2 == NetworkChannelMessage.MessageType.SeedCiFileReply)
                {
                    return(new SeedCiFileReply(channel, array));
                }
                if (messageType2 == NetworkChannelMessage.MessageType.SeedPageReaderPageSizeReply)
                {
                    return(new SeedPageReaderPageSizeReply(channel, array));
                }
            }
IL_51C:
            throw new NetworkUnexpectedMessageException(channel.PartnerNodeName, string.Format("Unknown message type: 0x{0:X}", (int)messageType));
        }