diff options
author | Christian Segundo | 2023-07-24 10:28:58 +0200 |
---|---|---|
committer | Christian Segundo | 2023-07-24 10:28:58 +0200 |
commit | f743e05e207046073999ee7234a157359d6a4f57 (patch) | |
tree | 0ceb01ffdcdc3a094e488c28e80c80d89f8309c5 /src/main.zig | |
parent | b02b7f71978a172848322f0671d580e425634916 (diff) | |
download | zmission-master.tar.gz |
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 242 |
1 files changed, 124 insertions, 118 deletions
diff --git a/src/main.zig b/src/main.zig index a88bf8a..704d6c6 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,124 +1,130 @@ const std = @import("std"); const testing = std.testing; -const transmission = @import("transmission.zig"); - -var gpa = std.heap.GeneralPurposeAllocator(.{}){}; -const allocator = gpa.allocator(); - -export fn add(a: i32, b: i32) i32 { - const clientOptions = transmission.ClientOptions{ - .host = "192.168.0.2", - .port = 9091, - .https = false, - }; - var client = transmission.Client.init(allocator, clientOptions); - defer client.deinit(); - - { - const body = transmission.session_get_raw(&client, null) catch |err| { - std.debug.print("error: {any}\n", .{err}); - unreachable; - }; - defer allocator.free(body); - std.debug.print("body: {s}\n", .{body}); - } - - //{ - //const body = transmission.torrent_get_(&client, null) catch |err| { - //std.debug.print("error: {any}\n", .{err}); - //unreachable; - //}; - ////defer allocator.free(body); - //for (body.arguments.torrent_get.torrents.?) |t| { - //std.debug.print("name: {any}\n", .{t}); - //} - //} - - //{ - //const body = transmission.torrent_get_(&client, null) catch |err| { - //std.debug.print("error: {any}\n", .{err}); - //unreachable; - //}; - ////defer allocator.free(body); - //std.debug.print("body: {any}\n", .{body}); - //} - - //{ - //const body = transmission.session_set_raw(&client, .{ .peer_port = 51413 }) catch |err| { - //std.debug.print("error: {any}\n", .{err}); - //unreachable; - //}; - //defer allocator.free(body); - //std.debug.print("body: {s}\n", .{body}); - //} - - return a + b; -} - -export fn c_client_init(clientOptions: transmission.ClientOptions) ?*anyopaque { - var client = allocator.create(transmission.Client) catch unreachable; - client.* = transmission.Client.init(allocator, clientOptions); - return @ptrCast(*anyopaque, client); -} - -export fn c_client_deinit(client: ?*anyopaque) void { - var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( - @alignOf(transmission.Client), - client.?, - )); - real_client.*.deinit(); - allocator.destroy(real_client); -} - -export fn c_session_get(client: ?*anyopaque, buf: [*]u8) c_int { - var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( - @alignOf(transmission.Client), - client.?, - )); - - const body = transmission.session_get_raw(real_client, null) catch |err| { - std.debug.print("error: {any}\n", .{err}); - unreachable; - }; - defer allocator.free(body); - - std.debug.print("body: {s}\n", .{body}); - _ = buf; - return 0; -} - -export fn c_torrent_get(client: ?*anyopaque) [*:0]u8 { - var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( - @alignOf(transmission.Client), - client.?, - )); - - const body = transmission.torrent_get_raw(real_client, null) catch |err| { - std.debug.print("error: {any}\n", .{err}); - unreachable; - }; - defer allocator.free(body); - // TODO: use the same pointer of body but gotta go fast :( - var foo = std.ArrayList(u8).init(allocator); - foo.insertSlice(0, body) catch unreachable; +pub const Request = @import("request.zig").Request; +pub const Types = @import("types.zig"); - //std.debug.print("body: {s}\n", .{body}); - return foo.toOwnedSliceSentinel(0) catch unreachable; +test { + testing.refAllDecls(@This()); } -test "c api" { - const clientOptions = transmission.ClientOptions{ - .host = "192.168.0.2", - .port = 9091, - .https = false, - }; - var foo = c_client_init(clientOptions); - _ = c_session_get(foo, undefined); - _ = c_torrent_get(foo); - c_client_deinit(foo); -} - -test "basic add functionality" { - try testing.expect(add(3, 7) == 10); -} +//var gpa = std.heap.GeneralPurposeAllocator(.{}){}; +//const allocator = gpa.allocator(); + +//export fn add(a: i32, b: i32) i32 { +//const clientOptions = transmission.ClientOptions{ +//.host = "192.168.0.2", +//.port = 9091, +//.https = false, +//}; +//var client = transmission.Client.init(allocator, clientOptions); +//defer client.deinit(); + +//{ +//const body = transmission.session_get_raw(&client, null) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +//defer allocator.free(body); +//std.debug.print("body: {s}\n", .{body}); +//} + +//{ +//const body = transmission.torrent_get_(&client, null) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +////defer allocator.free(body); +//for (body.arguments.torrent_get.torrents.?) |t| { +//std.debug.print("name: {any}\n", .{t}); +//} +//} + +//{ +//const body = transmission.torrent_get_(&client, null) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +////defer allocator.free(body); +//std.debug.print("body: {any}\n", .{body}); +//} + +//{ +//const body = transmission.session_set_raw(&client, .{ .peer_port = 51413 }) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +//defer allocator.free(body); +//std.debug.print("body: {s}\n", .{body}); +//} + +//return a + b; +//} + +//export fn c_client_init(clientOptions: transmission.ClientOptions) ?*anyopaque { +//var client = allocator.create(transmission.Client) catch unreachable; +//client.* = transmission.Client.init(allocator, clientOptions); +//return @ptrCast(*anyopaque, client); +//} + +//export fn c_client_deinit(client: ?*anyopaque) void { +//var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( +//@alignOf(transmission.Client), +//client.?, +//)); +//real_client.*.deinit(); +//allocator.destroy(real_client); +//} + +//export fn c_session_get(client: ?*anyopaque, buf: [*]u8) c_int { +//var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( +//@alignOf(transmission.Client), +//client.?, +//)); + +//const body = transmission.session_get_raw(real_client, null) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +//defer allocator.free(body); + +//std.debug.print("body: {s}\n", .{body}); +//_ = buf; +//return 0; +//} + +//export fn c_torrent_get(client: ?*anyopaque) [*:0]u8 { +//var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( +//@alignOf(transmission.Client), +//client.?, +//)); + +//const body = transmission.torrent_get_raw(real_client, null) catch |err| { +//std.debug.print("error: {any}\n", .{err}); +//unreachable; +//}; +//defer allocator.free(body); + +//// TODO: use the same pointer of body but gotta go fast :( +//var foo = std.ArrayList(u8).init(allocator); +//foo.insertSlice(0, body) catch unreachable; + +////std.debug.print("body: {s}\n", .{body}); +//return foo.toOwnedSliceSentinel(0) catch unreachable; +//} + +//test "c api" { +//const clientOptions = transmission.ClientOptions{ +//.host = "192.168.0.2", +//.port = 9091, +//.https = false, +//}; +//var foo = c_client_init(clientOptions); +//_ = c_session_get(foo, undefined); +//_ = c_torrent_get(foo); +//c_client_deinit(foo); +//} + +//test "basic add functionality" { +//try testing.expect(add(3, 7) == 10); +//} |