| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | using System;using System.IO;namespace SharpCifs.Util.Sharpen{    internal class WrappedSystemStream : Stream	{		private InputStream _ist;		private OutputStream _ost;		int _position;		int _markedPosition;		public WrappedSystemStream (InputStream ist)		{			this._ist = ist;		}		public WrappedSystemStream (OutputStream ost)		{			this._ost = ost;		}				public InputStream InputStream {			get { return _ist; }		}		public OutputStream OutputStream {			get { return _ost; }		}        public void Close()    //remove `override`        {			if (_ist != null) {                //Stream.`Close` method deleted				//_ist.Close ();                _ist.Dispose();			}			if (_ost != null) {                //Stream.`Close` method deleted				//_ost.Close ();                _ost.Dispose();			}		}		public override void Flush ()		{			_ost.Flush ();		}		public override int Read (byte[] buffer, int offset, int count)		{			int res = _ist.Read (buffer, offset, count);			if (res != -1) {				_position += res;				return res;			}		    return 0;		}		public override int ReadByte ()		{			int res = _ist.Read ();			if (res != -1)				_position++;			return res;		}		public override long Seek (long offset, SeekOrigin origin)		{			if (origin == SeekOrigin.Begin)				Position = offset;			else if (origin == SeekOrigin.Current)				Position = Position + offset;			else if (origin == SeekOrigin.End)				Position = Length + offset;			return Position;		}		public override void SetLength (long value)		{			throw new NotSupportedException ();		}		public override void Write (byte[] buffer, int offset, int count)		{			_ost.Write (buffer, offset, count);			_position += count;		}		public override void WriteByte (byte value)		{			_ost.Write (value);			_position++;		}		public override bool CanRead {			get { return (_ist != null); }		}		public override bool CanSeek {			get { return true; }		}		public override bool CanWrite {			get { return (_ost != null); }		}		public override long Length {			get { return _ist.Length; }		}				internal void OnMark (int nb)		{			_markedPosition = _position;			_ist.Mark (nb);		}				public override long Position {			get			{			    if (_ist != null && _ist.CanSeek ())					return _ist.Position;			    return _position;			}		    set		    {		        if (value == _position)					return;		        if (value == _markedPosition)		            _ist.Reset ();		        else if (_ist != null && _ist.CanSeek ()) {		            _ist.Position = value;		        }		        else		            throw new NotSupportedException ();		    }		}	}}
 |