Skip to content

Commit 2315703

Browse files
committed
zlib: separate sync/async methods
1 parent 9a60bf3 commit 2315703

File tree

3 files changed

+52
-20
lines changed

3 files changed

+52
-20
lines changed

doc/api/zlib.markdown

+19-11
Original file line numberDiff line numberDiff line change
@@ -195,36 +195,44 @@ the header.
195195
<!--type=misc-->
196196

197197
All of these take a string or buffer as the first argument, an optional second
198-
argument to supply options to the zlib classes and an optional callback. If a
199-
callback is supplied, they will call it asynchronously with
200-
`callback(error, result)`, otherwise they will return the result or throw the
201-
error synchronously.
198+
argument to supply options to the zlib classes and will call the supplied
199+
callback with `callback(error, result)`.
202200

203-
## zlib.deflate(buf, [options], [callback])
201+
Every method has a `*Sync` counterpart, which accept the same arguments, but
202+
without a callback.
203+
204+
## zlib.deflate(buf, [options], callback)
205+
## zlib.deflateSync(buf, [options])
204206

205207
Compress a string with Deflate.
206208

207-
## zlib.deflateRaw(buf, [options], [callback])
209+
## zlib.deflateRaw(buf, [options], callback)
210+
## zlib.deflateRawSync(buf, [options])
208211

209212
Compress a string with DeflateRaw.
210213

211-
## zlib.gzip(buf, [options], [callback])
214+
## zlib.gzip(buf, [options], callback)
215+
## zlib.gzipSync(buf, [options])
212216

213217
Compress a string with Gzip.
214218

215-
## zlib.gunzip(buf, [options], [callback])
219+
## zlib.gunzip(buf, [options], callback)
220+
## zlib.gunzipSync(buf, [options])
216221

217222
Decompress a raw Buffer with Gunzip.
218223

219-
## zlib.inflate(buf, [options], [callback])
224+
## zlib.inflate(buf, [options], callback)
225+
## zlib.inflateSync(buf, [options])
220226

221227
Decompress a raw Buffer with Inflate.
222228

223-
## zlib.inflateRaw(buf, [options], [callback])
229+
## zlib.inflateRaw(buf, [options], callback)
230+
## zlib.inflateRawSync(buf, [options])
224231

225232
Decompress a raw Buffer with InflateRaw.
226233

227-
## zlib.unzip(buf, [options], [callback])
234+
## zlib.unzip(buf, [options], callback)
235+
## zlib.unzipSync(buf, [options])
228236

229237
Decompress a raw Buffer with Unzip.
230238

lib/zlib.js

+29-5
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ exports.deflate = function(buffer, opts, callback) {
115115
return zlibBuffer(new Deflate(opts), buffer, callback);
116116
};
117117

118+
exports.deflateSync = function(buffer, opts) {
119+
return zlibBufferSync(new Deflate(opts), buffer);
120+
};
121+
118122
exports.gzip = function(buffer, opts, callback) {
119123
if (util.isFunction(opts)) {
120124
callback = opts;
@@ -123,6 +127,10 @@ exports.gzip = function(buffer, opts, callback) {
123127
return zlibBuffer(new Gzip(opts), buffer, callback);
124128
};
125129

130+
exports.gzipSync = function(buffer, opts) {
131+
return zlibBufferSync(new Gzip(opts), buffer);
132+
};
133+
126134
exports.deflateRaw = function(buffer, opts, callback) {
127135
if (util.isFunction(opts)) {
128136
callback = opts;
@@ -131,6 +139,10 @@ exports.deflateRaw = function(buffer, opts, callback) {
131139
return zlibBuffer(new DeflateRaw(opts), buffer, callback);
132140
};
133141

142+
exports.deflateRawSync = function(buffer, opts) {
143+
return zlibBufferSync(new DeflateRaw(opts), buffer);
144+
};
145+
134146
exports.unzip = function(buffer, opts, callback) {
135147
if (util.isFunction(opts)) {
136148
callback = opts;
@@ -139,6 +151,10 @@ exports.unzip = function(buffer, opts, callback) {
139151
return zlibBuffer(new Unzip(opts), buffer, callback);
140152
};
141153

154+
exports.unzipSync = function(buffer, opts) {
155+
return zlibBufferSync(new Unzip(opts), buffer);
156+
};
157+
142158
exports.inflate = function(buffer, opts, callback) {
143159
if (util.isFunction(opts)) {
144160
callback = opts;
@@ -147,6 +163,10 @@ exports.inflate = function(buffer, opts, callback) {
147163
return zlibBuffer(new Inflate(opts), buffer, callback);
148164
};
149165

166+
exports.inflateSync = function(buffer, opts) {
167+
return zlibBufferSync(new Inflate(opts), buffer);
168+
};
169+
150170
exports.gunzip = function(buffer, opts, callback) {
151171
if (util.isFunction(opts)) {
152172
callback = opts;
@@ -155,6 +175,10 @@ exports.gunzip = function(buffer, opts, callback) {
155175
return zlibBuffer(new Gunzip(opts), buffer, callback);
156176
};
157177

178+
exports.gunzipSync = function(buffer, opts) {
179+
return zlibBufferSync(new Gunzip(opts), buffer);
180+
};
181+
158182
exports.inflateRaw = function(buffer, opts, callback) {
159183
if (util.isFunction(opts)) {
160184
callback = opts;
@@ -163,11 +187,11 @@ exports.inflateRaw = function(buffer, opts, callback) {
163187
return zlibBuffer(new InflateRaw(opts), buffer, callback);
164188
};
165189

166-
function zlibBuffer(engine, buffer, callback) {
167-
if (!util.isFunction(callback)) {
168-
return zlibBufferSync(engine, buffer, callback);
169-
}
190+
exports.inflateRawSync = function(buffer, opts) {
191+
return zlibBufferSync(new InflateRaw(opts), buffer);
192+
};
170193

194+
function zlibBuffer(engine, buffer, callback) {
171195
var buffers = [];
172196
var nread = 0;
173197

@@ -200,7 +224,7 @@ function zlibBuffer(engine, buffer, callback) {
200224
}
201225
}
202226

203-
function zlibBufferSync(engine, buffer, callback) {
227+
function zlibBufferSync(engine, buffer) {
204228
if (util.isString(buffer))
205229
buffer = new Buffer(buffer);
206230
if (!util.isBuffer(buffer))

test/simple/test-zlib-convenience-methods.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ var opts = {
5858
});
5959
});
6060

61-
var result = zlib[method[0]](expect, opts);
62-
result = zlib[method[1]](result, opts);
61+
var result = zlib[method[0] + 'Sync'](expect, opts);
62+
result = zlib[method[1] + 'Sync'](result, opts);
6363
assert.equal(result, expect,
6464
'Should get original string after ' +
6565
method[0] + '/' + method[1] + ' with options.');
6666
hadRun++;
6767

68-
result = zlib[method[0]](expect);
69-
result = zlib[method[1]](result);
68+
result = zlib[method[0] + 'Sync'](expect);
69+
result = zlib[method[1] + 'Sync'](result);
7070
assert.equal(result, expect,
7171
'Should get original string after ' +
7272
method[0] + '/' + method[1] + ' without options.');

0 commit comments

Comments
 (0)