Skip to content
This repository was archived by the owner on Jun 10, 2024. It is now read-only.

ernisto/Cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cache

Generated by Rojo 7.3.0.

Wally Installation

To install with wally, insert it above wally.toml [dependecies]

Cache = "ernisto/[email protected]"

Problems

Implement ur own weak cache may be kinda ugly, specialy if ur cache have 2 keys/layers/dimensions, as u can see here

local cache = setmetatable({}, { __mode = 'k' })

local function awaitCombatSession(player1: Player, player2: Player)
    
    if cache[player1] and cache[player1][player2] then return cache[player1][player2]:expect() end
    if cache[player2] and cache[player2][player1] then return cache[player2][player2]:expect() end
    
    local promise = Promise.new(coroutine.yield)
    cache[player1] = cache[player] or setmetatable({}, { __mode = 'k'})
    cache[player1][player2] = promise
    
    --// Instance
    local data = someYieldingFunction()
    local self = {}
    
    promise:_resolve(self)
    return promise
end

Solution

--// Vars
local cache = Cache.async(-1, 'k', 'k')
-- setmetatable({
--     [player1] = setmetatable({ [player2] = CombatSession }, { __mode = 'k' })
-- }, { __mode = 'k' })

--// Component
local function CombatSession(player1: Player, player2: Player)
    
    --// Instance
    local data = someYieldingCall()
    local self = {}
    
    --// End
    return self
end
local function CombatSessionAsync(player1: Player, player2: Player)
    
    return cache:findFirstPromise(player1, player2)
        or cache:findFirstPromise(player2, player1)
        or cache:promise(function() awaitCombatSession(player1, player2) end)
end

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages