Exemple #1
0
		private void PrepareNextPacket() {
			byte num = (byte)this.baseStream.ReadByte();
			byte num2 = (byte)this.baseStream.ReadByte();
			byte num3 = (byte)this.baseStream.ReadByte();
			int len = (num + (num2 << 8)) + (num3 << 0x10);
			this.baseStream.ReadByte();
			int num5 = (this.baseStream.ReadByte() + (this.baseStream.ReadByte() << 8)) + (this.baseStream.ReadByte() << 0x10);
			if (num5 == 0) {
				num5 = len;
				this.zInStream = null;
			} else {
				this.ReadNextPacket(len);
				MemoryStream stream = new MemoryStream(this.inBuffer);
				this.zInStream = new ZInputStream(stream);
				this.zInStream.maxInput = len;
			}
			this.inPos = 0;
			this.maxInPos = num5;
		}
Exemple #2
0
		public override int Read(byte[] buffer, int offset, int count) {
			int num2;
			if (buffer == null) {
				throw new ArgumentNullException("buffer", Resources.BufferCannotBeNull);
			}
			if ((offset < 0) || (offset >= buffer.Length)) {
				throw new ArgumentOutOfRangeException("offset", Resources.OffsetMustBeValid);
			}
			if ((offset + count) > buffer.Length) {
				throw new ArgumentException(Resources.BufferNotLargeEnough, "buffer");
			}
			if (this.inPos == this.maxInPos) {
				this.PrepareNextPacket();
			}
			int len = Math.Min(count, this.maxInPos - this.inPos);
			if (this.zInStream != null) {
				num2 = this.zInStream.read(buffer, offset, len);
			} else {
				num2 = this.baseStream.Read(buffer, offset, len);
			}
			this.inPos += num2;
			if (this.inPos == this.maxInPos) {
				this.zInStream = null;
				this.inBufferRef.Target = this.inBuffer;
				this.inBuffer = null;
			}
			return num2;
		}