public Exception TrySendLogWithStandardHandling(long logGen, NetworkChannel ch)
        {
            Exception result = null;

            try
            {
                this.SendLog(logGen, ch, null);
            }
            catch (FileIOonSourceException ex)
            {
                result = ex;
                Exception innerException = ex.InnerException;
                bool      flag           = false;
                if (innerException is CorruptLogDetectedException)
                {
                    flag = true;
                }
                else if (innerException is IOException)
                {
                    int hresult = 0;
                    if (FileOperations.IsCorruptedIOException(innerException as IOException, out hresult))
                    {
                        flag = true;
                        int num;
                        FileOperations.ConvertHResultToWin32(hresult, out num);
                        ReplayEventLogConstants.Tuple_FatalIOErrorEncountered.LogEvent(this.Identity, new object[]
                        {
                            this.DatabaseName,
                            ex.FileFullPath,
                            innerException.Message,
                            num,
                            innerException.ToString()
                        });
                    }
                }
                if (flag)
                {
                    ReplayEventLogConstants.Tuple_LogCopierErrorOnSourceTriggerFailover.LogEvent(this.Identity, new object[]
                    {
                        this.DatabaseName,
                        ch.PartnerNodeName,
                        innerException.Message
                    });
                    this.ProcessSourceLogCorruption(logGen, innerException);
                }
                else
                {
                    ReplayEventLogConstants.Tuple_LogCopierErrorOnSource.LogEvent(this.Identity, new object[]
                    {
                        this.DatabaseName,
                        ch.PartnerNodeName,
                        ex.Message
                    });
                }
                ch.SendException(ex);
            }
            return(result);
        }
Beispiel #2
0
 // Token: 0x06001ABD RID: 6845 RVA: 0x00072630 File Offset: 0x00070830
 public static void ProcessSourceSideException(Exception ex, NetworkChannel channel)
 {
     if (ex is NetworkTransportException || ex is OperationCanceledException)
     {
         channel.Close();
         return;
     }
     channel.SendException(ex);
 }
        public void SendE00Generation(NetworkChannel channel)
        {
            long      logGeneration = 0L;
            string    e00Filename   = this.BuildLogFileName(0L);
            Exception e00Generation = this.GetE00Generation(out logGeneration, e00Filename);

            if (e00Generation != null)
            {
                channel.SendException(e00Generation);
                return;
            }
            new GetE00GenerationReply(channel)
            {
                LogGeneration = logGeneration
            }.Send();
        }