Implement cached lookup because rednet is stupid
This commit is contained in:
parent
92ac4d0fbc
commit
f274328871
13
lib.lua
13
lib.lua
@ -64,6 +64,17 @@ end
|
|||||||
|
|
||||||
local protocol = "wyvern"
|
local protocol = "wyvern"
|
||||||
|
|
||||||
|
local lookup_cache = {}
|
||||||
|
|
||||||
|
local function cached_lookup(protocol)
|
||||||
|
if lookup_cache[protocol] then return lookup_cache[protocol]
|
||||||
|
else
|
||||||
|
local ID = rednet.lookup(protocol)
|
||||||
|
lookup_cache[protocol] = ID
|
||||||
|
return ID
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function init_screen(scr, bg, fg)
|
local function init_screen(scr, bg, fg)
|
||||||
scr.setCursorPos(1, 1)
|
scr.setCursorPos(1, 1)
|
||||||
scr.setBackgroundColor(bg)
|
scr.setBackgroundColor(bg)
|
||||||
@ -145,7 +156,7 @@ local function query_by_ID(ID, request, max_tries)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function query_by_type(type, request, tries)
|
local function query_by_type(type, request, tries)
|
||||||
local ID = rednet.lookup(protocol .. "/" .. type)
|
local ID = cached_lookup(protocol .. "/" .. type)
|
||||||
if not ID then return errors.make(errors.NOMATCHINGNODE, type) end
|
if not ID then return errors.make(errors.NOMATCHINGNODE, type) end
|
||||||
return query_by_ID(ID, request, tries)
|
return query_by_ID(ID, request, tries)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user