Compare commits

..

No commits in common. "8b2535db199d2215bea438abb323f3e3f6c58d99" and "ee2b38f0af8cf61fc748df119db8822f82e07a4a" have entirely different histories.

3 changed files with 11 additions and 13 deletions

View file

@ -1 +1 @@
0.15.1 0.15.0-dev.1034+bd97b6618

View file

@ -5,8 +5,8 @@
.dependencies = .{ .dependencies = .{
.cbor = .{ .cbor = .{
.url = "git+https://github.com/neurocyte/cbor?ref=master#0708420594f5af0a8289e6e1bae0ae03f011731f", .url = "git+https://github.com/neurocyte/cbor?ref=master#ba2955fe3aa08456ed61a0e087be1e2ec46927e0",
.hash = "cbor-1.0.0-RcQE_CUwAQChkeU-LO-eTSbLAdRox-wuxUGmi2nDAWri", .hash = "cbor-1.0.0-RcQE_NEzAQAGoED9NqVSWT0fhB8peqbXe99IixQKTeVp",
}, },
.asio = .{ .asio = .{
.url = "git+https://github.com/neurocyte/asio#0f1cbf24e5fb6fabe7078a20b76452f42e24a0df", .url = "git+https://github.com/neurocyte/asio#0f1cbf24e5fb6fabe7078a20b76452f42e24a0df",

View file

@ -30,7 +30,7 @@ pub const sighdl_backtrace = if (builtin.os.tag != .windows) c_posix.sighdl_back
pub const max_message_size = 8 * 4096; pub const max_message_size = 8 * 4096;
const message_buf_allocator = std.heap.c_allocator; const message_buf_allocator = std.heap.c_allocator;
threadlocal var message_buffer: std.ArrayList(u8) = .empty; threadlocal var message_buffer: std.ArrayList(u8) = std.ArrayList(u8).init(message_buf_allocator);
threadlocal var error_message_buffer: [256]u8 = undefined; threadlocal var error_message_buffer: [256]u8 = undefined;
threadlocal var error_buffer_tl: c.thespian_error = .{ threadlocal var error_buffer_tl: c.thespian_error = .{
.base = null, .base = null,
@ -147,7 +147,6 @@ pub const message = struct {
pub fn fmt(value: anytype) Self { pub fn fmt(value: anytype) Self {
message_buffer.clearRetainingCapacity(); message_buffer.clearRetainingCapacity();
var writer = std.Io.Writer.Allocating.fromArrayList(message_buf_allocator, &message_buffer);
const f = comptime switch (@typeInfo(@TypeOf(value))) { const f = comptime switch (@typeInfo(@TypeOf(value))) {
.@"struct" => |info| if (info.is_tuple) .@"struct" => |info| if (info.is_tuple)
fmt_internal fmt_internal
@ -155,16 +154,15 @@ pub const message = struct {
@compileError("thespian.message template should be a tuple: " ++ @typeName(@TypeOf(value))), @compileError("thespian.message template should be a tuple: " ++ @typeName(@TypeOf(value))),
else => fmt_internal_scalar, else => fmt_internal_scalar,
}; };
f(&writer.writer, value) catch |e| std.debug.panic("thespian.message.fmt: {any}", .{e}); f(message_buffer.writer(), value) catch |e| std.debug.panic("thespian.message.fmt: {any}", .{e});
message_buffer = writer.toArrayList();
return .{ .buf = message_buffer.items }; return .{ .buf = message_buffer.items };
} }
fn fmt_internal_scalar(writer: *std.Io.Writer, value: anytype) !void { fn fmt_internal_scalar(writer: std.ArrayList(u8).Writer, value: anytype) !void {
return fmt_internal(writer, .{value}); return fmt_internal(writer, .{value});
} }
fn fmt_internal(writer: *std.Io.Writer, value: anytype) !void { fn fmt_internal(writer: std.ArrayList(u8).Writer, value: anytype) !void {
try cbor.writeValue(writer, value); try cbor.writeValue(writer, value);
} }
@ -184,9 +182,9 @@ pub const message = struct {
} }
fn fmtbuf_internal(buf: []u8, value: anytype) !Self { fn fmtbuf_internal(buf: []u8, value: anytype) !Self {
var stream: std.Io.Writer = .fixed(buf); var stream = std.io.fixedBufferStream(buf);
try cbor.writeValue(&stream, value); try cbor.writeValue(stream.writer(), value);
return .{ .buf = stream.buffered() }; return .{ .buf = stream.getWritten() };
} }
pub fn len(self: Self) usize { pub fn len(self: Self) usize {
@ -234,7 +232,7 @@ pub fn exit_message(e: anytype, stack_trace: ?*std.builtin.StackTrace) message {
const a = debug_info_arena_allocator.allocator(); const a = debug_info_arena_allocator.allocator();
var out: std.Io.Writer.Allocating = .init(a); var out: std.Io.Writer.Allocating = .init(a);
store_stack_trace(stack_trace_.*, &out.writer); store_stack_trace(stack_trace_.*, &out.writer);
return message.fmtbuf(&error_message_buffer, .{ "exit", e, out.writer.buffered() }) catch unreachable; return message.fmtbuf(&error_message_buffer, .{ "exit", e, out.getWritten() }) catch unreachable;
} else { } else {
return message.fmtbuf(&error_message_buffer, .{ "exit", e }) catch unreachable; return message.fmtbuf(&error_message_buffer, .{ "exit", e }) catch unreachable;
} }