コード例 #1
0
        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);
        }
コード例 #2
0
 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();
     }
 }