@@ -12,69 +12,54 @@ namespace Microsoft.Samples.GZipEncoder
12
12
//This class is used to create the custom encoder (GZipMessageEncoder)
13
13
internal class GZipMessageEncoderFactory : MessageEncoderFactory
14
14
{
15
- MessageEncoder encoder ;
15
+ private readonly MessageEncoder _encoder ;
16
16
17
17
//The GZip encoder wraps an inner encoder
18
18
//We require a factory to be passed in that will create this inner encoder
19
19
public GZipMessageEncoderFactory ( MessageEncoderFactory messageEncoderFactory )
20
20
{
21
21
if ( messageEncoderFactory == null )
22
22
throw new ArgumentNullException ( "messageEncoderFactory" , "A valid message encoder factory must be passed to the GZipEncoder" ) ;
23
- encoder = new GZipMessageEncoder ( messageEncoderFactory . Encoder ) ;
23
+ _encoder = new GZipMessageEncoder ( messageEncoderFactory . Encoder ) ;
24
24
}
25
25
26
26
//The service framework uses this property to obtain an encoder from this encoder factory
27
- public override MessageEncoder Encoder
28
- {
29
- get { return encoder ; }
30
- }
27
+ public override MessageEncoder Encoder => _encoder ;
31
28
32
- public override MessageVersion MessageVersion
33
- {
34
- get { return encoder . MessageVersion ; }
35
- }
29
+ public override MessageVersion MessageVersion => _encoder . MessageVersion ;
36
30
37
31
//This is the actual GZip encoder
38
- class GZipMessageEncoder : MessageEncoder
32
+ private class GZipMessageEncoder : MessageEncoder
39
33
{
40
- static string GZipContentType = "application/x-gzip" ;
34
+ private const string GZipContentType = "application/x-gzip" ;
41
35
42
36
//This implementation wraps an inner encoder that actually converts a WCF Message
43
37
//into textual XML, binary XML or some other format. This implementation then compresses the results.
44
38
//The opposite happens when reading messages.
45
39
//This member stores this inner encoder.
46
- MessageEncoder innerEncoder ;
40
+ private readonly MessageEncoder _innerEncoder ;
47
41
48
42
//We require an inner encoder to be supplied (see comment above)
49
43
internal GZipMessageEncoder ( MessageEncoder messageEncoder )
50
44
: base ( )
51
45
{
52
46
if ( messageEncoder == null )
53
47
throw new ArgumentNullException ( "messageEncoder" , "A valid message encoder must be passed to the GZipEncoder" ) ;
54
- innerEncoder = messageEncoder ;
48
+ _innerEncoder = messageEncoder ;
55
49
}
56
50
57
- public override string ContentType
58
- {
59
- get { return GZipContentType ; }
60
- }
51
+ public override string ContentType => GZipContentType ;
61
52
62
- public override string MediaType
63
- {
64
- get { return GZipContentType ; }
65
- }
53
+ public override string MediaType => GZipContentType ;
66
54
67
55
//SOAP version to use - we delegate to the inner encoder for this
68
- public override MessageVersion MessageVersion
69
- {
70
- get { return innerEncoder . MessageVersion ; }
71
- }
56
+ public override MessageVersion MessageVersion => _innerEncoder . MessageVersion ;
72
57
73
58
//Helper method to compress an array of bytes
74
- static ArraySegment < byte > CompressBuffer ( ArraySegment < byte > buffer , BufferManager bufferManager , int messageOffset )
59
+ private static ArraySegment < byte > CompressBuffer ( ArraySegment < byte > buffer , BufferManager bufferManager , int messageOffset )
75
60
{
76
61
MemoryStream memoryStream = new MemoryStream ( ) ;
77
-
62
+
78
63
using ( GZipStream gzStream = new GZipStream ( memoryStream , CompressionMode . Compress , true ) )
79
64
{
80
65
gzStream . Write ( buffer . Array , buffer . Offset , buffer . Count ) ;
@@ -93,7 +78,7 @@ static ArraySegment<byte> CompressBuffer(ArraySegment<byte> buffer, BufferManage
93
78
}
94
79
95
80
//Helper method to decompress an array of bytes
96
- static ArraySegment < byte > DecompressBuffer ( ArraySegment < byte > buffer , BufferManager bufferManager )
81
+ private static ArraySegment < byte > DecompressBuffer ( ArraySegment < byte > buffer , BufferManager bufferManager )
97
82
{
98
83
MemoryStream memoryStream = new MemoryStream ( buffer . Array , buffer . Offset , buffer . Count ) ;
99
84
MemoryStream decompressedStream = new MemoryStream ( ) ;
@@ -130,7 +115,7 @@ public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager buf
130
115
//Decompress the buffer
131
116
ArraySegment < byte > decompressedBuffer = DecompressBuffer ( buffer , bufferManager ) ;
132
117
//Use the inner encoder to decode the decompressed buffer
133
- Message returnMessage = innerEncoder . ReadMessage ( decompressedBuffer , bufferManager ) ;
118
+ Message returnMessage = _innerEncoder . ReadMessage ( decompressedBuffer , bufferManager ) ;
134
119
returnMessage . Properties . Encoder = this ;
135
120
return returnMessage ;
136
121
}
@@ -139,7 +124,7 @@ public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager buf
139
124
public override ArraySegment < byte > WriteMessage ( Message message , int maxMessageSize , BufferManager bufferManager , int messageOffset )
140
125
{
141
126
//Use the inner encoder to encode a Message into a buffered byte array
142
- ArraySegment < byte > buffer = innerEncoder . WriteMessage ( message , maxMessageSize , bufferManager , 0 ) ;
127
+ ArraySegment < byte > buffer = _innerEncoder . WriteMessage ( message , maxMessageSize , bufferManager , 0 ) ;
143
128
//Compress the resulting byte array
144
129
return CompressBuffer ( buffer , bufferManager , messageOffset ) ;
145
130
}
@@ -150,14 +135,14 @@ public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeader
150
135
//This will ensure that the inner stream gets closed when the message gets closed, which
151
136
//will ensure that resources are available for reuse/release.
152
137
GZipStream gzStream = new GZipStream ( stream , CompressionMode . Decompress , false ) ;
153
- return innerEncoder . ReadMessage ( gzStream , maxSizeOfHeaders ) ;
138
+ return _innerEncoder . ReadMessage ( gzStream , maxSizeOfHeaders ) ;
154
139
}
155
140
156
141
public override void WriteMessage ( Message message , System . IO . Stream stream )
157
142
{
158
143
using ( GZipStream gzStream = new GZipStream ( stream , CompressionMode . Compress , true ) )
159
144
{
160
- innerEncoder . WriteMessage ( message , gzStream ) ;
145
+ _innerEncoder . WriteMessage ( message , gzStream ) ;
161
146
}
162
147
163
148
// innerEncoder.WriteMessage(message, gzStream) depends on that it can flush data by flushing
0 commit comments