mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> Co-authored-by: Grigory <grigory.orlov.set@gmail.com> Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> Co-authored-by: Meghan Denny <hello@nektro.net> Co-authored-by: Kenta Iwasaki <63115601+lithdew@users.noreply.github.com> Co-authored-by: John-David Dalton <john.david.dalton@gmail.com> Co-authored-by: Dale Seo <5466341+DaleSeo@users.noreply.github.com> Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com> Co-authored-by: paperdave <paperdave@users.noreply.github.com> Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com> Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
37 lines
1.1 KiB
Zig
37 lines
1.1 KiB
Zig
const Lock = @import("../lock.zig").Lock;
|
|
const std = @import("std");
|
|
const MutableString = bun.MutableString;
|
|
const getAllocator = @import("../http.zig").getAllocator;
|
|
const ZlibPool = @This();
|
|
const Zlib = @import("../zlib.zig");
|
|
const bun = @import("root").bun;
|
|
|
|
fn initMutableString(allocator: std.mem.Allocator) anyerror!MutableString {
|
|
return MutableString.initEmpty(allocator);
|
|
}
|
|
|
|
const BufferPool = bun.ObjectPool(MutableString, initMutableString, false, 4);
|
|
pub fn get(allocator: std.mem.Allocator) *MutableString {
|
|
return &BufferPool.get(allocator).data;
|
|
}
|
|
|
|
pub fn put(mutable: *MutableString) void {
|
|
mutable.reset();
|
|
var node: BufferPool.Node = @fieldParentPtr("data", mutable);
|
|
node.release();
|
|
}
|
|
|
|
pub fn decompress(compressed_data: []const u8, output: *MutableString, allocator: std.mem.Allocator) Zlib.ZlibError!void {
|
|
var reader = try Zlib.ZlibReaderArrayList.initWithOptionsAndListAllocator(
|
|
compressed_data,
|
|
&output.list,
|
|
output.allocator,
|
|
allocator,
|
|
.{
|
|
.windowBits = 15 + 32,
|
|
},
|
|
);
|
|
try reader.readAll();
|
|
reader.deinit();
|
|
}
|