mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 15:14:08 +00:00
endpoint example mem improvement
This commit is contained in:
parent
1f8e8ac0e4
commit
d5ee2f11ef
1 changed files with 6 additions and 3 deletions
|
@ -11,9 +11,6 @@ var alloc: std.mem.Allocator = undefined;
|
||||||
var endpoint: zap.SimpleEndpoint = undefined;
|
var endpoint: zap.SimpleEndpoint = undefined;
|
||||||
var users: Users = undefined;
|
var users: Users = undefined;
|
||||||
|
|
||||||
// 100MB of json buffer
|
|
||||||
var jsonbuf: [100 * 1024 * 1024]u8 = undefined;
|
|
||||||
|
|
||||||
pub fn init(
|
pub fn init(
|
||||||
a: std.mem.Allocator,
|
a: std.mem.Allocator,
|
||||||
user_path: []const u8,
|
user_path: []const u8,
|
||||||
|
@ -54,6 +51,7 @@ fn getUser(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||||
if (path.len == e.settings.path.len) {
|
if (path.len == e.settings.path.len) {
|
||||||
return listUsers(e, r);
|
return listUsers(e, r);
|
||||||
}
|
}
|
||||||
|
var jsonbuf: [256]u8 = undefined;
|
||||||
if (userIdFromPath(path)) |id| {
|
if (userIdFromPath(path)) |id| {
|
||||||
if (users.get(id)) |user| {
|
if (users.get(id)) |user| {
|
||||||
if (zap.stringifyBuf(&jsonbuf, user, .{})) |json| {
|
if (zap.stringifyBuf(&jsonbuf, user, .{})) |json| {
|
||||||
|
@ -70,6 +68,8 @@ fn listUsers(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||||
if (users.list(&l)) {} else |_| {
|
if (users.list(&l)) {} else |_| {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// attention: if you add too many users, this will not be enough
|
||||||
|
var jsonbuf: [1024 * 1024]u8 = undefined;
|
||||||
if (zap.stringifyArrayListBuf(&jsonbuf, User, &l, .{})) |maybe_json| {
|
if (zap.stringifyArrayListBuf(&jsonbuf, User, &l, .{})) |maybe_json| {
|
||||||
if (maybe_json) |json| {
|
if (maybe_json) |json| {
|
||||||
_ = r.sendJson(json);
|
_ = r.sendJson(json);
|
||||||
|
@ -91,6 +91,7 @@ fn postUser(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||||
if (maybe_user) |u| {
|
if (maybe_user) |u| {
|
||||||
defer std.json.parseFree(User, u, .{ .allocator = alloc });
|
defer std.json.parseFree(User, u, .{ .allocator = alloc });
|
||||||
if (users.addByName(u.first_name, u.last_name)) |id| {
|
if (users.addByName(u.first_name, u.last_name)) |id| {
|
||||||
|
var jsonbuf: [128]u8 = undefined;
|
||||||
if (zap.stringifyBuf(&jsonbuf, .{ .status = "OK", .id = id }, .{})) |json| {
|
if (zap.stringifyBuf(&jsonbuf, .{ .status = "OK", .id = id }, .{})) |json| {
|
||||||
_ = r.sendJson(json);
|
_ = r.sendJson(json);
|
||||||
}
|
}
|
||||||
|
@ -119,6 +120,7 @@ fn putUser(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||||
u,
|
u,
|
||||||
.{ .allocator = alloc },
|
.{ .allocator = alloc },
|
||||||
);
|
);
|
||||||
|
var jsonbuf: [128]u8 = undefined;
|
||||||
if (users.update(id, u.first_name, u.last_name)) {
|
if (users.update(id, u.first_name, u.last_name)) {
|
||||||
if (zap.stringifyBuf(&jsonbuf, .{
|
if (zap.stringifyBuf(&jsonbuf, .{
|
||||||
.status = "OK",
|
.status = "OK",
|
||||||
|
@ -145,6 +147,7 @@ fn deleteUser(e: *zap.SimpleEndpoint, r: zap.SimpleRequest) void {
|
||||||
_ = e;
|
_ = e;
|
||||||
if (r.path) |path| {
|
if (r.path) |path| {
|
||||||
if (userIdFromPath(path)) |id| {
|
if (userIdFromPath(path)) |id| {
|
||||||
|
var jsonbuf: [128]u8 = undefined;
|
||||||
if (users.delete(id)) {
|
if (users.delete(id)) {
|
||||||
if (zap.stringifyBuf(&jsonbuf, .{ .status = "OK", .id = id }, .{})) |json| {
|
if (zap.stringifyBuf(&jsonbuf, .{ .status = "OK", .id = id }, .{})) |json| {
|
||||||
_ = r.sendJson(json);
|
_ = r.sendJson(json);
|
||||||
|
|
Loading…
Add table
Reference in a new issue