GzipStream.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /* -*- Mode: csharp; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
  2. //
  3. // GzipStream.cs
  4. //
  5. // Authors:
  6. // Christopher James Lahey <[email protected]>
  7. //
  8. // (c) 2004 Novell, Inc. <http://www.novell.com>
  9. //
  10. #if NET_2_0
  11. using System;
  12. using System.IO;
  13. using System.Runtime.InteropServices;
  14. using System.Runtime.Remoting.Messaging;
  15. namespace System.IO.Compression {
  16. public class GzipStream : Stream
  17. {
  18. private DeflateStream deflateStream;
  19. public GzipStream (Stream compressedStream, CompressionMode mode) :
  20. this (compressedStream, mode, false) {
  21. }
  22. public GzipStream (Stream compressedStream, CompressionMode mode, bool leaveOpen) {
  23. this.deflateStream = new DeflateStream (compressedStream, mode, leaveOpen, true);
  24. }
  25. public override void Close () {
  26. deflateStream.Close();
  27. }
  28. public override int Read (byte[] dest, int dest_offset, int count)
  29. {
  30. return deflateStream.Read(dest, dest_offset, count);
  31. }
  32. public override void Write (byte[] src, int src_offset, int count)
  33. {
  34. deflateStream.Write (src, src_offset, count);
  35. }
  36. public override void Flush() {
  37. deflateStream.Flush();
  38. }
  39. public override long Seek (long offset, SeekOrigin origin) {
  40. return deflateStream.Seek (offset, origin);
  41. }
  42. public override void SetLength (long value) {
  43. deflateStream.SetLength (value);
  44. }
  45. public override IAsyncResult BeginRead (byte [] buffer, int offset, int count,
  46. AsyncCallback cback, object state)
  47. {
  48. return deflateStream.BeginRead (buffer, offset, count, cback, state);
  49. }
  50. public override IAsyncResult BeginWrite (byte [] buffer, int offset, int count,
  51. AsyncCallback cback, object state)
  52. {
  53. return deflateStream.BeginWrite (buffer, offset, count, cback, state);
  54. }
  55. public override int EndRead(IAsyncResult async_result) {
  56. return deflateStream.EndRead (async_result);
  57. }
  58. public override void EndWrite (IAsyncResult async_result)
  59. {
  60. deflateStream.EndWrite (async_result);
  61. }
  62. public Stream BaseStream {
  63. get {
  64. return deflateStream.BaseStream;
  65. }
  66. }
  67. public override bool CanRead {
  68. get {
  69. return deflateStream.CanRead;
  70. }
  71. }
  72. public override bool CanSeek {
  73. get {
  74. return deflateStream.CanSeek;
  75. }
  76. }
  77. public override bool CanWrite {
  78. get {
  79. return deflateStream.CanWrite;
  80. }
  81. }
  82. public override long Length {
  83. get {
  84. return deflateStream.Length;
  85. }
  86. }
  87. public override long Position {
  88. get {
  89. return deflateStream.Position;
  90. }
  91. set {
  92. deflateStream.Position = value;
  93. }
  94. }
  95. }
  96. }
  97. #endif