CarotDav_decompile/Rei.Fs/FooteredWriteStream.cs

232 lines
4.4 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Rei.Fs.FooteredWriteStream
// Assembly: Rei.Fs, Version=1.13.2.8796, Culture=neutral, PublicKeyToken=null
// MVID: D8B08A8B-697C-4439-9CFF-1BE4EE46F7B0
// Assembly location: F:\Eigene Dateien\Dropbox\portable Collection\Progs\CarotDAV\Rei.Fs.dll
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.IO;
namespace Rei.Fs
{
public class FooteredWriteStream : Stream
{
private Stream pBaseStream;
private byte[] pfooter;
private bool pHasError;
private bool pDisposed;
public FooteredWriteStream(Stream basestream, byte[] footer)
{
this.pHasError = false;
this.pDisposed = false;
this.pBaseStream = basestream;
this.pfooter = footer;
}
public override bool CanRead
{
get
{
return this.pBaseStream.CanRead;
}
}
public override bool CanSeek
{
get
{
return this.pBaseStream.CanSeek;
}
}
public override bool CanWrite
{
get
{
return this.pBaseStream.CanWrite;
}
}
public override bool CanTimeout
{
get
{
return this.pBaseStream.CanTimeout;
}
}
public override long Length
{
get
{
return this.pBaseStream.Length;
}
}
public override long Position
{
get
{
return this.pBaseStream.Position;
}
set
{
try
{
this.pBaseStream.Position = value;
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
}
public override int ReadTimeout
{
get
{
return this.pBaseStream.ReadTimeout;
}
set
{
this.pBaseStream.ReadTimeout = value;
}
}
public override int WriteTimeout
{
get
{
return this.pBaseStream.WriteTimeout;
}
set
{
this.pBaseStream.WriteTimeout = value;
}
}
public override int Read(byte[] buffer, int offset, int count)
{
try
{
return this.pBaseStream.Read(buffer, offset, count);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
public override long Seek(long offset, SeekOrigin origin)
{
try
{
return this.pBaseStream.Seek(offset, origin);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
public override void SetLength(long value)
{
try
{
this.pBaseStream.SetLength(value);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
public override void Write(byte[] buffer, int offset, int count)
{
try
{
this.pBaseStream.Write(buffer, offset, count);
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
public override void Flush()
{
try
{
this.pBaseStream.Flush();
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
this.pHasError = true;
throw;
}
}
protected override void Dispose(bool disposing)
{
try
{
if (!disposing || this.pDisposed)
return;
this.pDisposed = true;
if (this.pHasError)
{
try
{
this.pBaseStream.Close();
}
catch (Exception ex)
{
ProjectData.SetProjectError(ex);
ProjectData.ClearProjectError();
}
}
else
{
try
{
this.pBaseStream.Write(this.pfooter, 0, this.pfooter.Length);
}
catch (Exception ex1)
{
ProjectData.SetProjectError(ex1);
try
{
this.pBaseStream.Close();
}
catch (Exception ex2)
{
ProjectData.SetProjectError(ex2);
ProjectData.ClearProjectError();
}
throw;
}
this.pBaseStream.Close();
}
}
finally
{
base.Dispose(disposing);
}
}
}
}