storage.zig 892 B

1234567891011121314151617181920212223242526272829303132333435
  1. const std = @import("std");
  2. var buf: [1024 * 1024 * 100][]const u8 = undefined;
  3. pub fn hashKey(k: []const u8) u32 {
  4. var hash: u32 = 17 * 22;
  5. const xoramasrosas = "xoramasrosas";
  6. for (k, 0..) |char, i| {
  7. hash = hash +% (char ^ xoramasrosas[i % xoramasrosas.len]);
  8. }
  9. return hash;
  10. }
  11. pub fn write(key: []const u8, value: []const u8) bool {
  12. std.debug.print("Writing key: {s}, value: {s}\n", .{ key, value });
  13. const hash = hashKey(key);
  14. const valueCopy = std.heap.page_allocator.dupe(u8, value) catch {
  15. std.debug.print("Failed to duplicate value for key: {s}\n", .{key});
  16. return false;
  17. };
  18. buf[hash % buf.len] = valueCopy;
  19. return true;
  20. }
  21. pub fn read(key: []const u8) ?[]const u8 {
  22. std.debug.print("Reading key: {s}\n", .{key});
  23. const hash = hashKey(key);
  24. const value = buf[hash % buf.len];
  25. return value;
  26. }