Skip to content

Commit

Permalink
replace zap with http.zig for simpler code (#16)
Browse files Browse the repository at this point in the history
* replace zap with http.zig for simpler code

* fix merge issues

* update build.zig.zon to use commit hash instead of master
  • Loading branch information
gballet authored Dec 24, 2023
1 parent 23a412a commit 277c762
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 51 deletions.
7 changes: 3 additions & 4 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ pub fn build(b: *std.Build) void {
const mod_rlp = b.dependency("zig-rlp", .{ .target = target, .optimize = optimize }).module("rlp");
const depSecp256k1 = b.dependency("zig-eth-secp256k1", .{ .target = target, .optimize = optimize });
const mod_secp256k1 = depSecp256k1.module("zig-eth-secp256k1");
const zap = b.dependency("zap", .{
const httpz = b.dependency("httpz", .{
.target = target,
.optimize = optimize,
});
const mod_zap = zap.module("zap");
const mod_httpz = httpz.module("httpz");

const ethash = b.addStaticLibrary(.{
.name = "ethash",
Expand Down Expand Up @@ -105,8 +105,7 @@ pub fn build(b: *std.Build) void {
exe.addModule("zig-rlp", mod_rlp);
exe.linkLibrary(depSecp256k1.artifact("secp256k1"));
exe.addModule("zig-eth-secp256k1", mod_secp256k1);
exe.addModule("zap", mod_zap);
exe.linkLibrary(zap.artifact("facil.io"));
exe.addModule("httpz", mod_httpz);

// This declares intent for the executable to be installed into the
// standard location when the user invokes the "install" step (the default
Expand Down
6 changes: 3 additions & 3 deletions build.zig.zon
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
.url = "https://github.com/jsign/zig-eth-secp256k1/archive/refs/tags/v0.1.0-beta-3.tar.gz",
.hash = "1220fcf062f8ee89b343e1588ac3cc002f37ee3f72841dd7f9493d9c09acad7915a3",
},
.zap = .{
.url = "https://github.com/zigzap/zap/archive/refs/tags/v0.1.14-pre.tar.gz",
.hash = "122067d12bc7abb93f7ce623f61b94cadfdb180cef12da6559d092e6b374202acda3",
.httpz = .{
.url = "https://github.com/karlseguin/http.zig/archive/1a82beb0dfc22e6fc38e9918e323f8fbd3cb78a3.tar.gz",
.hash = "122020cbd399273b1220f11c4b2d734b86c94cc5f1c2d6d90fc766580bc0e25b0dfb",
}
},
}
59 changes: 15 additions & 44 deletions src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -9,50 +9,25 @@ const StateDB = @import("vm/statedb.zig");
const Block = types.Block;
const Txn = types.Txn;
const TxnSigner = @import("signer/signer.zig").TxnSigner;
const zap = @import("zap");
const httpz = @import("httpz");
const engine_api = @import("engine_api/engine_api.zig");
const json = std.json;

var allocator: std.mem.Allocator = undefined;

fn engineAPIHandler(r: zap.SimpleRequest) void {
if (r.body == null) {
r.setStatus(.bad_request);
return;
fn engineAPIHandler(req: *httpz.Request, res: *httpz.Response) !void {
if (try req.json(engine_api.EngineAPIRequest)) |payload| {
if (std.mem.eql(u8, payload.method, "engine_newPayloadV2")) {
const execution_payload_json = payload.params[0];
var execution_payload = try execution_payload_json.to_execution_payload(res.arena);
try engine_api.execution_payload.newPayloadV2Handler(&execution_payload, res.arena);
} else {
res.status = 500;
}
}
const payload = json.parseFromSlice(engine_api.EngineAPIRequest, allocator, r.body.?, .{ .ignore_unknown_fields = true }) catch |err| {
std.log.err("error parsing json: {} (body={s})", .{ err, r.body.? });
r.setStatus(.bad_request);
return;
};
defer payload.deinit();

if (std.mem.eql(u8, payload.value.method, "engine_newPayloadV2")) {
const execution_payload_json = payload.value.params[0];
var execution_payload = execution_payload_json.to_execution_payload(allocator) catch |err| {
std.log.warn("error parsing execution payload: {}", .{err});
r.setStatus(.bad_request);
return;
};
engine_api.execution_payload.newPayloadV2Handler(&execution_payload, allocator) catch |err| {
std.log.err("error handling newPayloadV2: {}", .{err});
r.setStatus(.internal_server_error);
return;
};
r.setStatus(.ok);
} else {
r.setStatus(.internal_server_error);
}
r.setContentType(.JSON) catch |err| {
std.log.err("error setting content type: {}", .{err});
r.setStatus(.internal_server_error);
return;
};
}

pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
allocator = gpa.allocator();
var allocator = gpa.allocator();

std.log.info("Welcome to phant! 🐘", .{});
const txn_signer = try TxnSigner.init(@intFromEnum(config.ChainId.Mainnet));
Expand Down Expand Up @@ -112,17 +87,13 @@ pub fn main() !void {
return;
};

var listener = zap.SimpleHttpListener.init(.{
var engine_api_server = try httpz.Server().init(allocator, .{
.port = 8551,
.on_request = engineAPIHandler,
.log = true,
});
try listener.listen();
var router = engine_api_server.router();
router.post("/", engineAPIHandler);
std.log.info("Listening on 8551", .{});
zap.start(.{
.threads = 1,
.workers = 1,
});
try engine_api_server.listen();
}

test "tests" {
Expand Down

0 comments on commit 277c762

Please sign in to comment.