internal static void StartContinuousLogTransmission(NetworkChannel channel, ContinuousLogCopyRequest oldReq) { LogCopyServerContext logCopyServerContext = new LogCopyServerContext(channel, channel.MonitoredDatabase); logCopyServerContext.m_clientIsDownLevel = true; LogCopyServerContext.Tracer.TraceDebug <string, bool>((long)logCopyServerContext.GetHashCode(), "Passive({0}) is downlevel {1}}", channel.PartnerNodeName, logCopyServerContext.m_clientIsDownLevel); ContinuousLogCopyRequest2 initialRequest = LogCopyServerContext.UpgradeRequest(channel, oldReq); logCopyServerContext.InitContinuousLogTransmission(initialRequest); }
private void HandleIncomingMessage() { try { if (!this.m_markedForTermination) { lock (this.m_networkReadLock) { NetworkChannelMessage message = this.Channel.GetMessage(); PingMessage pingMessage = message as PingMessage; if (pingMessage != null) { LogCopyServerContext.Tracer.TraceDebug((long)this.GetHashCode(), "HandleIncomingMessage: Ping received"); Interlocked.Exchange(ref this.m_pingPending, 1); this.m_sendDataEnabled = true; } else { ContinuousLogCopyRequest2 continuousLogCopyRequest = message as ContinuousLogCopyRequest2; if (continuousLogCopyRequest == null) { if (message is ContinuousLogCopyRequest) { continuousLogCopyRequest = LogCopyServerContext.UpgradeRequest(this.Channel, message as ContinuousLogCopyRequest); } else { LogCopyServerContext.Tracer.TraceError <NetworkChannelMessage>((long)this.GetHashCode(), "HandleIncomingMessage: UnexpectedMsg:{0}", message); this.Channel.ThrowUnexpectedMessage(message); } } LogCopyServerContext.Tracer.TraceDebug <long, long, ContinuousLogCopyRequest2.Flags>((long)this.GetHashCode(), "HandleIncomingMessage: First=0x{0:X} Max=0x{1:X} Flags=0x{2:X}", continuousLogCopyRequest.FirstGeneration, continuousLogCopyRequest.LastGeneration, continuousLogCopyRequest.FlagsUsed); this.m_sendDataEnabled = true; this.m_nextLogCopyRequest = continuousLogCopyRequest; } this.StartNetworkRead(); this.SignalWorkPending(); } } } catch (NetworkTransportException arg) { LogCopyServerContext.Tracer.TraceError <NetworkTransportException>((long)this.GetHashCode(), "HandleIncomingMessage: Channel exception: {0}", arg); this.MarkForTermination(); } }