mirror of
https://git.robbyzambito.me/zits
synced 2026-02-04 11:44:48 +00:00
Trying to pump data from nats client to stdout
This commit is contained in:
49
src/main.zig
49
src/main.zig
@@ -97,11 +97,20 @@ fn serverMain(gpa: std.mem.Allocator, iter: *std.process.ArgIterator, main_args:
|
||||
defer threaded.deinit();
|
||||
const io = threaded.io();
|
||||
|
||||
// const info: ServerInfo = .{
|
||||
// .server_id = "foo",
|
||||
// .server_name = "bar",
|
||||
// .version = "6.9.0",
|
||||
// .max_payload = 6969,
|
||||
// };
|
||||
|
||||
const info: ServerInfo = .{
|
||||
.server_id = "foo",
|
||||
.server_id = "NBEK5DBBB4ZO5LTBGPXACZSB2QUTODC6GGN5NLOSPIGSRFWJID4XU52C",
|
||||
.server_name = "bar",
|
||||
.version = "6.9.0",
|
||||
.max_payload = 6969,
|
||||
.version = "2.11.8",
|
||||
.go = "go1.24.6",
|
||||
.headers = true,
|
||||
.max_payload = 1048576,
|
||||
};
|
||||
|
||||
var server = try std.Io.net.IpAddress.listen(.{
|
||||
@@ -118,21 +127,41 @@ fn serverMain(gpa: std.mem.Allocator, iter: *std.process.ArgIterator, main_args:
|
||||
const stream = try server.accept(io);
|
||||
group.async(io, handleConnection, .{ io, stream, info });
|
||||
}
|
||||
|
||||
// var buffer: [1024]u8 = undefined;
|
||||
// var out_fs = std.fs.File.stderr().writer(&buffer);
|
||||
// const out = &out_fs.interface;
|
||||
|
||||
}
|
||||
|
||||
fn handleConnection(io: std.Io, stream: std.Io.net.Stream, info: ServerInfo) void {
|
||||
defer stream.close(io);
|
||||
var buffer: [1024]u8 = undefined;
|
||||
var writer = stream.writer(io, &buffer);
|
||||
var w_buffer: [1024]u8 = undefined;
|
||||
var writer = stream.writer(io, &w_buffer);
|
||||
const out = &writer.interface;
|
||||
writeInfo(out, info) catch |err| {
|
||||
std.debug.print("failed to write to client: {}\n", .{err});
|
||||
};
|
||||
|
||||
var r_buffer: [1024]u8 = undefined;
|
||||
var reader = stream.reader(io, &r_buffer);
|
||||
const in = &reader.interface;
|
||||
|
||||
var stdout_buffer: [1024]u8 = undefined;
|
||||
const stdout_file = std.fs.File.stdout();
|
||||
var stdout_file_writer = stdout_file.writer(&stdout_buffer);
|
||||
const stdout_writer = &stdout_file_writer.interface;
|
||||
|
||||
var timeout = io.async(std.Io.sleep, .{ io, .fromSeconds(1), .real });
|
||||
defer timeout.cancel(io) catch {};
|
||||
|
||||
var user_res = io.async(std.Io.Reader.streamRemaining, .{ in, stdout_writer });
|
||||
defer _ = user_res.cancel(io) catch {};
|
||||
|
||||
switch (io.select(.{
|
||||
.timeout = &timeout,
|
||||
.data = &user_res,
|
||||
}) catch unreachable) {
|
||||
.timeout => std.debug.print("timeout\n", .{}),
|
||||
.data => |d| {
|
||||
std.debug.print("received data {any}\n", .{d});
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
fn writeInfo(out: *std.Io.Writer, info: ServerInfo) !void {
|
||||
|
||||
Reference in New Issue
Block a user