mirror of
https://git.robbyzambito.me/zits
synced 2026-02-04 03:34: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();
|
defer threaded.deinit();
|
||||||
const io = threaded.io();
|
const io = threaded.io();
|
||||||
|
|
||||||
|
// const info: ServerInfo = .{
|
||||||
|
// .server_id = "foo",
|
||||||
|
// .server_name = "bar",
|
||||||
|
// .version = "6.9.0",
|
||||||
|
// .max_payload = 6969,
|
||||||
|
// };
|
||||||
|
|
||||||
const info: ServerInfo = .{
|
const info: ServerInfo = .{
|
||||||
.server_id = "foo",
|
.server_id = "NBEK5DBBB4ZO5LTBGPXACZSB2QUTODC6GGN5NLOSPIGSRFWJID4XU52C",
|
||||||
.server_name = "bar",
|
.server_name = "bar",
|
||||||
.version = "6.9.0",
|
.version = "2.11.8",
|
||||||
.max_payload = 6969,
|
.go = "go1.24.6",
|
||||||
|
.headers = true,
|
||||||
|
.max_payload = 1048576,
|
||||||
};
|
};
|
||||||
|
|
||||||
var server = try std.Io.net.IpAddress.listen(.{
|
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);
|
const stream = try server.accept(io);
|
||||||
group.async(io, handleConnection, .{ io, stream, info });
|
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 {
|
fn handleConnection(io: std.Io, stream: std.Io.net.Stream, info: ServerInfo) void {
|
||||||
defer stream.close(io);
|
defer stream.close(io);
|
||||||
var buffer: [1024]u8 = undefined;
|
var w_buffer: [1024]u8 = undefined;
|
||||||
var writer = stream.writer(io, &buffer);
|
var writer = stream.writer(io, &w_buffer);
|
||||||
const out = &writer.interface;
|
const out = &writer.interface;
|
||||||
writeInfo(out, info) catch |err| {
|
writeInfo(out, info) catch |err| {
|
||||||
std.debug.print("failed to write to client: {}\n", .{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 {
|
fn writeInfo(out: *std.Io.Writer, info: ServerInfo) !void {
|
||||||
|
|||||||
Reference in New Issue
Block a user