// Token: 0x0600224A RID: 8778 RVA: 0x0009FE58 File Offset: 0x0009E058
 public override void CopyLog(long fromNumber, string destinationFileName, out DateTime writeTimeUtc)
 {
     writeTimeUtc = (DateTime)ExDateTime.UtcNow;
     ExTraceGlobals.LogCopyClientTracer.TraceDebug <string>((long)this.GetHashCode(), "CopyLog {0} starting", destinationFileName);
     base.AllocateBuffer();
     this.GetChannelLock();
     try
     {
         this.OpenChannelIfFirstRequest();
         CopyLogRequest msg = new CopyLogRequest(this.m_channel, this.DatabaseGuid, fromNumber);
         this.SendMessage(msg);
         ReplayStopwatch replayStopwatch = new ReplayStopwatch();
         replayStopwatch.Start();
         NetworkChannelMessage reply        = this.GetReply();
         CopyLogReply          copyLogReply = reply as CopyLogReply;
         if (copyLogReply == null)
         {
             this.m_channel.ThrowUnexpectedMessage(reply);
         }
         long elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;
         ExTraceGlobals.LogCopyClientTracer.TraceDebug <long>((long)this.GetHashCode(), "Log Copy Response took: {0}ms", elapsedMilliseconds);
         this.m_endOfLog.SetValue(copyLogReply.EndOfLogGeneration, new DateTime?(copyLogReply.EndOfLogUtc));
         writeTimeUtc = copyLogReply.LastWriteUtc;
         CheckSummer summer = null;
         if (this.m_channel.ChecksumDataTransfer)
         {
             summer = new CheckSummer();
         }
         copyLogReply.ReceiveFile(destinationFileName, null, summer);
         elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;
         ExTraceGlobals.LogCopyClientTracer.TraceDebug <long>((long)this.GetHashCode(), "Transmit/Decomp took: {0}ms", elapsedMilliseconds);
         base.RecordThruput(copyLogReply.FileSize);
         ExchangeNetworkPerfmonCounters perfCounters = this.m_channel.PerfCounters;
         if (perfCounters != null)
         {
             perfCounters.RecordLogCopyThruputReceived(copyLogReply.FileSize);
         }
         replayStopwatch.Stop();
         ExTraceGlobals.LogCopyClientTracer.TraceDebug((long)this.GetHashCode(), "{0}: LogCopy success: {1} for {2} after {3}ms", new object[]
         {
             ExDateTime.Now,
             replayStopwatch.ToString(),
             destinationFileName,
             replayStopwatch.ElapsedMilliseconds
         });
     }
     finally
     {
         this.ReleaseChannelLock();
     }
 }
        // Token: 0x0600224B RID: 8779 RVA: 0x000A000C File Offset: 0x0009E20C
        internal static void CopyLog(Guid dbGuid, NetworkChannel ch, long logGen, string destinationFileName)
        {
            ExTraceGlobals.LogCopyClientTracer.TraceDebug <string>((long)ch.GetHashCode(), "static CopyLog {0} starting", destinationFileName);
            CopyLogRequest copyLogRequest = new CopyLogRequest(ch, dbGuid, logGen);

            copyLogRequest.Send();
            ReplayStopwatch replayStopwatch = new ReplayStopwatch();

            replayStopwatch.Start();
            NetworkChannelMessage message      = ch.GetMessage();
            CopyLogReply          copyLogReply = message as CopyLogReply;

            if (copyLogReply == null)
            {
                ch.ThrowUnexpectedMessage(message);
            }
            long elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;

            ExTraceGlobals.LogCopyClientTracer.TraceDebug <long>((long)ch.GetHashCode(), "Log Copy Response took: {0}ms", elapsedMilliseconds);
            CheckSummer summer = null;

            if (ch.ChecksumDataTransfer)
            {
                summer = new CheckSummer();
            }
            copyLogReply.ReceiveFile(destinationFileName, null, summer);
            elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;
            ExTraceGlobals.LogCopyClientTracer.TraceDebug <long>((long)ch.GetHashCode(), "Transmit/Decomp took: {0}ms", elapsedMilliseconds);
            ExchangeNetworkPerfmonCounters perfCounters = ch.PerfCounters;

            if (perfCounters != null)
            {
                perfCounters.RecordLogCopyThruputReceived(copyLogReply.FileSize);
            }
            replayStopwatch.Stop();
            ExTraceGlobals.LogCopyClientTracer.TraceDebug((long)ch.GetHashCode(), "{0}: LogCopy success: {1} for {2} after {3}ms", new object[]
            {
                ExDateTime.Now,
                replayStopwatch.ToString(),
                destinationFileName,
                replayStopwatch.ElapsedMilliseconds
            });
        }