fix memory stuff
This commit is contained in:
parent
0708d6c5d0
commit
0303579074
@ -185,6 +185,7 @@ inflator: zlib.Decompressor,
|
|||||||
mutex: std.Thread.Mutex = .{},
|
mutex: std.Thread.Mutex = .{},
|
||||||
log: Log = .no,
|
log: Log = .no,
|
||||||
|
|
||||||
|
/// caller must free the data
|
||||||
fn parseJson(self: *Self, raw: []const u8) !zmpl.Data {
|
fn parseJson(self: *Self, raw: []const u8) !zmpl.Data {
|
||||||
var data = zmpl.Data.init(self.allocator);
|
var data = zmpl.Data.init(self.allocator);
|
||||||
try data.fromJson(raw);
|
try data.fromJson(raw);
|
||||||
@ -250,8 +251,8 @@ pub fn init(allocator: mem.Allocator, args: struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const parsed = try json.parseFromSlice(GatewayBotInfo, allocator, body, .{});
|
const parsed = try json.parseFromSlice(GatewayBotInfo, allocator, body, .{});
|
||||||
const url = parsed.value.url["wss://".len..];
|
|
||||||
defer parsed.deinit();
|
defer parsed.deinit();
|
||||||
|
const url = parsed.value.url["wss://".len..];
|
||||||
|
|
||||||
return .{
|
return .{
|
||||||
.allocator = allocator,
|
.allocator = allocator,
|
||||||
@ -337,6 +338,8 @@ pub fn readMessage(self: *Self, _: anytype) !void {
|
|||||||
{
|
{
|
||||||
const HelloPayload = struct { heartbeat_interval: u64, _trace: [][]const u8 };
|
const HelloPayload = struct { heartbeat_interval: u64, _trace: [][]const u8 };
|
||||||
const parsed = try json.parseFromValue(HelloPayload, self.allocator, payload.d, .{});
|
const parsed = try json.parseFromValue(HelloPayload, self.allocator, payload.d, .{});
|
||||||
|
defer parsed.deinit();
|
||||||
|
|
||||||
const helloPayload = parsed.value;
|
const helloPayload = parsed.value;
|
||||||
|
|
||||||
// PARSE NEW URL IN READY
|
// PARSE NEW URL IN READY
|
||||||
@ -391,6 +394,8 @@ pub fn readMessage(self: *Self, _: anytype) !void {
|
|||||||
};
|
};
|
||||||
{
|
{
|
||||||
const parsed = try json.parseFromValue(WithSequence, self.allocator, payload.d, .{});
|
const parsed = try json.parseFromValue(WithSequence, self.allocator, payload.d, .{});
|
||||||
|
defer parsed.deinit();
|
||||||
|
|
||||||
const resume_payload = parsed.value;
|
const resume_payload = parsed.value;
|
||||||
|
|
||||||
self.setSequence(resume_payload.seq orelse 0);
|
self.setSequence(resume_payload.seq orelse 0);
|
||||||
@ -472,7 +477,7 @@ pub fn send(self: *Self, data: anytype) !void {
|
|||||||
|
|
||||||
//self.logif("{s}\n", .{string.items});
|
//self.logif("{s}\n", .{string.items});
|
||||||
|
|
||||||
try self.client.write(string.items);
|
try self.client.write(try string.toOwnedSlice());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub inline fn getSequence(self: *Self) isize {
|
pub inline fn getSequence(self: *Self) isize {
|
||||||
@ -552,7 +557,9 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (std.ascii.eqlIgnoreCase(name, "message_delete")) {
|
if (std.ascii.eqlIgnoreCase(name, "message_delete")) {
|
||||||
const attempt = try self.parseJson(payload);
|
var attempt = try self.parseJson(payload);
|
||||||
|
defer attempt.deinit();
|
||||||
|
|
||||||
const obj = attempt.getT(.object, "d").?;
|
const obj = attempt.getT(.object, "d").?;
|
||||||
const data = Discord.MessageDelete{
|
const data = Discord.MessageDelete{
|
||||||
.id = obj.getT(.string, "id").?,
|
.id = obj.getT(.string, "id").?,
|
||||||
@ -564,7 +571,9 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (std.ascii.eqlIgnoreCase(name, "message_delete_bulk")) {
|
if (std.ascii.eqlIgnoreCase(name, "message_delete_bulk")) {
|
||||||
const attempt = try self.parseJson(payload);
|
var attempt = try self.parseJson(payload);
|
||||||
|
defer attempt.deinit();
|
||||||
|
|
||||||
const obj = attempt.getT(.object, "d").?;
|
const obj = attempt.getT(.object, "d").?;
|
||||||
var ids = std.ArrayList([]const u8).init(self.allocator);
|
var ids = std.ArrayList([]const u8).init(self.allocator);
|
||||||
|
|
||||||
@ -582,7 +591,8 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (std.ascii.eqlIgnoreCase(name, "message_update")) {
|
if (std.ascii.eqlIgnoreCase(name, "message_update")) {
|
||||||
const attempt = try self.parseJson(payload);
|
var attempt = try self.parseJson(payload);
|
||||||
|
defer attempt.deinit();
|
||||||
const obj = attempt.getT(.object, "d").?;
|
const obj = attempt.getT(.object, "d").?;
|
||||||
|
|
||||||
const message = try Parser.parseMessage(self.allocator, obj);
|
const message = try Parser.parseMessage(self.allocator, obj);
|
||||||
@ -592,7 +602,8 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (std.ascii.eqlIgnoreCase(name, "message_create")) {
|
if (std.ascii.eqlIgnoreCase(name, "message_create")) {
|
||||||
const attempt = try self.parseJson(payload);
|
var attempt = try self.parseJson(payload);
|
||||||
|
defer attempt.deinit();
|
||||||
const obj = attempt.getT(.object, "d").?;
|
const obj = attempt.getT(.object, "d").?;
|
||||||
|
|
||||||
const message = try Parser.parseMessage(self.allocator, obj);
|
const message = try Parser.parseMessage(self.allocator, obj);
|
||||||
|
@ -13,10 +13,7 @@ fn message_create(message: Discord.Message) void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
const allocator = std.heap.c_allocator;
|
||||||
defer arena.deinit();
|
|
||||||
const allocator = arena.allocator();
|
|
||||||
|
|
||||||
const token = std.posix.getenv("TOKEN") orelse unreachable;
|
const token = std.posix.getenv("TOKEN") orelse unreachable;
|
||||||
|
|
||||||
var handler = try Shard.init(allocator, .{
|
var handler = try Shard.init(allocator, .{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user