Middleware (plugin in form of shared library)
const lib = @import("mql5_trading");
const std = @import("std");
const posix = std.posix;
pub export fn robot_is_inited(
p0: usize,
) callconv(.C) bool {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 2, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [1]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(bool, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_init(
) callconv(.C) usize {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 3, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = stream.reader().readInt(usize, .little) catch continue;
return res;
}
}
pub export fn robot_deinit(
p0: usize,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 4, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_signal(
p0: usize,
) callconv(.C) i32 {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 5, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = stream.reader().readInt(i32, .little) catch continue;
return res;
}
}
pub export fn robot_update_context(
p0: usize,
p1: f64,
p2: f64,
p3: f64,
p4: f64,
p5: f64,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 6, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2)) catch continue;
_ = stream.write(&std.mem.toBytes(p3)) catch continue;
_ = stream.write(&std.mem.toBytes(p4)) catch continue;
_ = stream.write(&std.mem.toBytes(p5)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_order_closer(
p0: usize,
p1: usize,
p2: [*]lib.OrderMQL5,
p3: lib.OrderTypeMQL5,
p4: usize,
) callconv(.C) isize {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 7, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p1, .little) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
for (p2[0..p4]) |p2_sub| {
_ = stream.writer().writeStructEndian(p2_sub, .little) catch continue;
}
_ = stream.write(&std.mem.toBytes(p3)) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
_ = stream.writeAll("") catch continue;
const p2_len = stream.reader().readInt(usize, .little) catch continue;
for (p2[0..p2_len]) |*p2_sub| {
p2_sub.* = stream.reader().readStructEndian(lib.OrderMQL5, .little) catch continue;
}
const res = stream.reader().readInt(isize, .little) catch continue;
return res;
}
}
pub export fn robot_trall(
p0: usize,
p1: usize,
p2: [*]lib.OrderMQL5,
p3: lib.OrderTypeMQL5,
p4: usize,
p5: usize,
p6: [*]lib.OrderMQL5,
p7: lib.OrderTypeMQL5,
p8: usize,
) callconv(.C) bool {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 8, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p1, .little) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
for (p2[0..p4]) |p2_sub| {
_ = stream.writer().writeStructEndian(p2_sub, .little) catch continue;
}
_ = stream.write(&std.mem.toBytes(p3)) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
_ = stream.writer().writeInt(usize, p5, .little) catch continue;
_ = stream.writer().writeInt(usize, p8, .little) catch continue;
for (p6[0..p8]) |p6_sub| {
_ = stream.writer().writeStructEndian(p6_sub, .little) catch continue;
}
_ = stream.write(&std.mem.toBytes(p7)) catch continue;
_ = stream.writer().writeInt(usize, p8, .little) catch continue;
_ = stream.writeAll("") catch continue;
const p2_len = stream.reader().readInt(usize, .little) catch continue;
for (p2[0..p2_len]) |*p2_sub| {
p2_sub.* = stream.reader().readStructEndian(lib.OrderMQL5, .little) catch continue;
}
const p6_len = stream.reader().readInt(usize, .little) catch continue;
for (p6[0..p6_len]) |*p6_sub| {
p6_sub.* = stream.reader().readStructEndian(lib.OrderMQL5, .little) catch continue;
}
const res = read_block: {var read_buf: [1]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(bool, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_tier(
p0: usize,
) callconv(.C) i32 {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 9, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = stream.reader().readInt(i32, .little) catch continue;
return res;
}
}
pub export fn robot_averaging_next_price(
p0: usize,
p1: usize,
p2: [*]const lib.OrderMQL5,
p3: lib.OrderTypeMQL5,
p4: usize,
) callconv(.C) f64 {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 10, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p1, .little) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
for (p2[0..p4]) |p2_sub| {
_ = stream.writer().writeStructEndian(p2_sub, .little) catch continue;
}
_ = stream.write(&std.mem.toBytes(p3)) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [8]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(f64, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_trending_check(
p0: usize,
p1: usize,
p2: [*]const lib.OrderMQL5,
p3: lib.OrderTypeMQL5,
p4: usize,
) callconv(.C) bool {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 11, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p1, .little) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
for (p2[0..p4]) |p2_sub| {
_ = stream.writer().writeStructEndian(p2_sub, .little) catch continue;
}
_ = stream.write(&std.mem.toBytes(p3)) catch continue;
_ = stream.writer().writeInt(usize, p4, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [1]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(bool, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_indicator(
p0: usize,
p1: lib.IndicatorTagMQL,
p2: *const lib.IndicatorMQL,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 12, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2.*)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_order_closer(
p0: usize,
p1: lib.OrderCloserTagMQL,
p2: *const lib.OrderCloserMQL,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 13, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2.*)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_trall(
p0: usize,
p1: lib.TrallTagMQL,
p2: *const lib.TrallMQL,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 14, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2.*)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_tiering_quantile(
p0: usize,
p1: [*]const usize,
p2: [*]const f64,
p3: usize,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 15, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p3, .little) catch continue;
for (p1[0..p3]) |p1_sub| {
_ = stream.writer().writeInt(usize, p1_sub, .little) catch continue;
}
_ = stream.writer().writeInt(usize, p3, .little) catch continue;
for (p2[0..p3]) |p2_sub| {
_ = stream.write(&std.mem.toBytes(p2_sub)) catch continue;
}
_ = stream.writer().writeInt(usize, p3, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_tiering_minmax(
p0: usize,
p1: [*]const usize,
p2: usize,
p3: usize,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 16, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
for (p1[0..p2]) |p1_sub| {
_ = stream.writer().writeInt(usize, p1_sub, .little) catch continue;
}
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
_ = stream.writer().writeInt(usize, p3, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_tiering_trend(
p0: usize,
p1: [*]const usize,
p2: usize,
p3: usize,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 17, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
for (p1[0..p2]) |p1_sub| {
_ = stream.writer().writeInt(usize, p1_sub, .little) catch continue;
}
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
_ = stream.writer().writeInt(usize, p3, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_averaging(
p0: usize,
p1: lib.AveragingTagMQL,
p2: *const lib.AveragingMQL,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 18, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2.*)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_set_trending(
p0: usize,
p1: lib.TrendingTagMQL,
p2: *const lib.TrendingMQL,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 19, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.write(&std.mem.toBytes(p1)) catch continue;
_ = stream.write(&std.mem.toBytes(p2.*)) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_bars_populate(
p0: usize,
p1: [*]const lib.BarMQL5,
p2: usize,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 20, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
for (p1[0..p2]) |p1_sub| {
_ = stream.writer().writeStructEndian(p1_sub, .little) catch continue;
}
_ = stream.writer().writeInt(usize, p2, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_bar_update_last(
p0: usize,
p1: *const lib.BarMQL5,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 21, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeStructEndian(p1.*, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}
pub export fn robot_bar_push(
p0: usize,
p1: *const lib.BarMQL5,
) callconv(.C) void {
var ca = std.heap.DebugAllocator(.{}){};
defer _ = ca.deinit();
while(true) {
const address = std.net.Address.initIp4(.{ 127, 0, 0, 1 }, 59887);
const stream = std.net.tcpConnectToAddress(address) catch continue;
const timeout = posix.timeval{ .sec = 0, .usec = 500 };
posix.setsockopt(stream.handle, posix.SOL.SOCKET, posix.SO.SNDTIMEO, &std.mem.toBytes(timeout)) catch continue;
_ = stream.writer().writeInt(u16, 22, .little) catch continue;
_ = stream.writer().writeInt(usize, p0, .little) catch continue;
_ = stream.writer().writeStructEndian(p1.*, .little) catch continue;
_ = stream.writeAll("") catch continue;
const res = read_block: {var read_buf: [0]u8 = undefined; _ = stream.reader().read(&read_buf) catch |e| {break :read_block e;}; break :read_block std.mem.bytesToValue(void, &read_buf);} catch continue;
return res;
}
}