╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ────╮ │src/serve.zig│ ╰─────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────╮ │402 }; │ │403 } │ │404 │ │405 +const HttpGitService = struct { │ │406 + body_reader: *std.Io.Reader, │ │407 + writer: *std.Io.Writer, │ │408 + options: xit.net_server_http_backend.Options, │ │409 + │ │410 + fn serve( │ │411 + self: @This(), │ │412 + comptime repo_kind: rp.RepoKind, │ │413 + comptime repo_opts: rp.RepoOpts(repo_kind), │ │414 + repo: *rp.Repo(repo_kind, repo_opts), │ │415 + io: std.Io, │ │416 + allocator: std.mem.Allocator, │ │417 + ) !void { │ │418 + try repo.httpBackend(io, allocator, self.body_reader, self.writer, .http, self.options);│ │419 + } │ │420 +}; │ │421 + │ │422 +const SshGitService = struct { │ │423 + reader: *std.Io.Reader, │ │424 + writer: *std.Io.Writer, │ │425 + request: SshRequest, │ │426 + │ │427 + fn serve( │ │428 + self: @This(), │ │429 + comptime repo_kind: rp.RepoKind, │ │430 + comptime repo_opts: rp.RepoOpts(repo_kind), │ │431 + repo: *rp.Repo(repo_kind, repo_opts), │ │432 + io: std.Io, │ │433 + allocator: std.mem.Allocator, │ │434 + ) !void { │ │435 + switch (self.request.service) { │ │436 + .upload_pack => try repo.uploadPack(io, allocator, self.reader, self.writer, .{ │ │437 + .protocol_version = self.request.protocol_version, │ │438 + }), │ │439 + .receive_pack => try repo.receivePack(io, allocator, self.reader, self.writer, .{ │ │440 + .protocol_version = self.request.protocol_version, │ │441 + }), │ │442 + } │ │443 + } │ │444 +}; │ │445 + │ │446 fn isReceivePack( │ │447 handler: xit.net_server_http_backend.HandlerKind, │ │448 suffix: []const u8, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────╮ │585 ); │ │586 } │ │587 │ │588 +fn logError(err: *std.Io.Writer, comptime fmt: []const u8, args: anytype) void {│ │589 + err.print(fmt, args) catch return; │ │590 + err.flush() catch {}; │ │591 +} │ │592 + │ ╰─────────────────────────────────────────────────────────────────────────────────────╯