libipc-old/zig-impl/src/pong.zig

62 lines
1.7 KiB
Zig
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

const std = @import("std");
const hexdump = @import("./hexdump.zig");
const net = std.net;
const fmt = std.fmt;
const os = std.os;
const ipc = @import("./main.zig");
const builtin = @import("builtin");
const native_os = builtin.target.os.tag;
const print = std.debug.print;
const testing = std.testing;
const print_eq = @import("./util.zig").print_eq;
pub fn main() !u8 {
const config = .{.safety = true};
var gpa = std.heap.GeneralPurposeAllocator(config){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
var ctx = try ipc.Context.init(allocator);
defer ctx.deinit(); // There. Can't leak. Isn't Zig wonderful?
// TODO: currently using a bullshit path.
const path = "/tmp/.TEST_USOCK";
// CLIENT SIDE: connecting to a service.
var sfd = try ctx.connect (path);
var first_msg = try ipc.Message.init(sfd, ipc.Message.Type.DATA, allocator, "hello this is pong!!");
try ctx.write(first_msg);
first_msg.deinit();
var some_event: ipc.Event = undefined;
ctx.timer = 10000; // 10 seconds
while(true) {
some_event = try ctx.wait_event();
switch (some_event.t) {
.TIMER => {
print("Timer!\n", .{});
},
.MESSAGE => {
if (some_event.m) |m| {
print("Message received: {}\n", .{m});
m.deinit();
}
else {
print("A message should have been received, weird\n", .{});
}
break;
},
else => {
print("Unexpected message: {s}\n", .{some_event});
break;
},
}
}
print("Goodbye\n", .{});
return 0;
}