// Token: 0x0600228E RID: 8846 RVA: 0x000A0EC8 File Offset: 0x0009F0C8 public static byte[] SerializeToBytes(PassiveStatusMsg.Flags msgFlags, long ackCounter, uint genInNetworkBuffer, uint genWrittenToInspector, uint lastGenInspected, uint lastGenReplayed, bool isCrossSite) { NetworkChannelPacket networkChannelPacket = new NetworkChannelPacket(54); networkChannelPacket.GrowthDisabled = true; networkChannelPacket.Append(1); int val = 49; networkChannelPacket.Append(val); val = 1096045392; networkChannelPacket.Append(val); val = 49; networkChannelPacket.Append(val); DateTime utcNow = DateTime.UtcNow; networkChannelPacket.Append(utcNow); networkChannelPacket.Append((long)msgFlags); networkChannelPacket.Append(ackCounter); networkChannelPacket.Append(genInNetworkBuffer); networkChannelPacket.Append(genWrittenToInspector); networkChannelPacket.Append(lastGenInspected); networkChannelPacket.Append(lastGenReplayed); networkChannelPacket.Append(isCrossSite); return(networkChannelPacket.Buffer); }
private void TrySendStatusMessageToActive(PassiveStatusMsg.Flags statusFlags, long requestAckCounter, out NetworkTransportException sendException, out bool sendSkippedBecauseChannelBusy) { sendException = null; sendSkippedBecauseChannelBusy = false; NetworkChannel netCh = this.m_netChannel; if (this.m_asyncNetWritePending || netCh == null) { PassiveBlockMode.Tracer.TraceError((long)this.GetHashCode(), "SendStatusMessageToActive skipped because channel is busy"); sendSkippedBecauseChannelBusy = true; return; } ReplayState replayState = this.Configuration.ReplayState; long highestCompleteGen = replayState.CopyNotificationGenerationNumber; byte[] statusMsgBuf = PassiveStatusMsg.SerializeToBytes(statusFlags, requestAckCounter, (uint)highestCompleteGen, (uint)replayState.CopyGenerationNumber, (uint)replayState.InspectorGenerationNumber, (uint)replayState.ReplayGenerationNumber, this.m_isCrossSite); bool writeStarted = false; try { Exception ex = NetworkChannel.RunNetworkFunction(delegate { ExTraceGlobals.FaultInjectionTracer.TraceTest(PassiveBlockMode.ackMessageSendFailed); PassiveBlockMode.Tracer.TraceDebug <string, long>((long)this.GetHashCode(), "Sending PassiveStatusMsg({0}) Gen 0x{1:X}", this.DatabaseName, highestCompleteGen); this.m_nextPingDue = DateTime.UtcNow.AddMilliseconds((double)RegistryParameters.LogShipTimeoutInMsec); this.m_asyncNetWritePending = true; netCh.TcpChannel.Stream.BeginWrite(statusMsgBuf, 0, statusMsgBuf.Length, new AsyncCallback(this.NetWriteCompletion), netCh); writeStarted = true; }); if (ex != null) { PassiveBlockMode.Tracer.TraceError <Exception>((long)this.GetHashCode(), "SendStatusMessageToActive Failed to ping Active: {0}", ex); ReplayEventLogConstants.Tuple_NotifyActiveSendFailed.LogEvent(null, new object[] { this.DatabaseName, replayState.ReplayGenerationNumber, replayState.InspectorGenerationNumber, replayState.CopyGenerationNumber, ex.Message }); sendException = (ex as NetworkTransportException); if (sendException == null) { sendException = new NetworkCommunicationException(netCh.PartnerNodeName, ex.Message, ex); } } } finally { if (!writeStarted) { this.m_asyncNetWritePending = false; } } }