1
- #if NET6_0_OR_GREATER
2
- using System . IO ;
1
+ using System . IO ;
2
+ #if NET6_0_OR_GREATER
3
3
using System . IO . Compression ;
4
+ #else
5
+ using Org . BouncyCastle . Utilities . Zlib ;
6
+ #endif
4
7
5
8
namespace Renci . SshNet . Compression
6
9
{
@@ -11,8 +14,13 @@ namespace Renci.SshNet.Compression
11
14
public class Zlib : Compressor
12
15
#pragma warning restore CA1724 // Type names should not match namespaces
13
16
{
17
+ #if NET6_0_OR_GREATER
14
18
private readonly ZLibStream _compressor ;
15
19
private readonly ZLibStream _decompressor ;
20
+ #else
21
+ private readonly ZOutputStream _compressor ;
22
+ private readonly ZOutputStream _decompressor ;
23
+ #endif
16
24
private MemoryStream _compressorStream ;
17
25
private MemoryStream _decompressorStream ;
18
26
private bool _isDisposed ;
@@ -37,8 +45,13 @@ protected Zlib(bool delayedCompression)
37
45
_compressorStream = new MemoryStream ( ) ;
38
46
_decompressorStream = new MemoryStream ( ) ;
39
47
48
+ #if NET6_0_OR_GREATER
40
49
_compressor = new ZLibStream ( _compressorStream , CompressionMode . Compress ) ;
41
50
_decompressor = new ZLibStream ( _decompressorStream , CompressionMode . Decompress ) ;
51
+ #else
52
+ _compressor = new ZOutputStream ( _compressorStream , level : JZlib . Z_DEFAULT_COMPRESSION ) { FlushMode = JZlib . Z_PARTIAL_FLUSH } ;
53
+ _decompressor = new ZOutputStream ( _decompressorStream ) { FlushMode = JZlib . Z_PARTIAL_FLUSH } ;
54
+ #endif
42
55
}
43
56
44
57
/// <inheritdoc/>
@@ -61,6 +74,7 @@ protected override byte[] CompressCore(byte[] data, int offset, int length)
61
74
/// <inheritdoc/>
62
75
protected override byte [ ] DecompressCore ( byte [ ] data , int offset , int length )
63
76
{
77
+ #if NET6_0_OR_GREATER
64
78
_decompressorStream . Write ( data , offset , length ) ;
65
79
_decompressorStream . Position = 0 ;
66
80
@@ -70,6 +84,14 @@ protected override byte[] DecompressCore(byte[] data, int offset, int length)
70
84
_decompressorStream . SetLength ( 0 ) ;
71
85
72
86
return outputStream . ToArray ( ) ;
87
+ #else
88
+ _decompressorStream . SetLength ( 0 ) ;
89
+
90
+ _decompressor . Write ( data , offset , length ) ;
91
+ _decompressor . Flush ( ) ;
92
+
93
+ return _decompressorStream . ToArray ( ) ;
94
+ #endif
73
95
}
74
96
75
97
/// <summary>
@@ -106,4 +128,3 @@ protected override void Dispose(bool disposing)
106
128
}
107
129
}
108
130
}
109
- #endif
0 commit comments