qwertz19281

[ComputerCraft] RemoteFS server

May 8th, 2016
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.41 KB | None | 0 0
  1. -- RemFS Server
  2. hostname=""
  3. hostroot="hostfiles/"
  4. rednet.host("remfs", hostname)
  5. rednet.host("remfsh", hostname)
  6. local hndls={}
  7. local freeh={}
  8.  
  9. function add(queue, val)
  10.     queue[(#queue)+1]=val
  11. end
  12.  
  13. function peek(queue)
  14.     return queue[1]
  15. end
  16.  
  17. function shiftDown(queue)
  18.     while i=2,#queue do
  19.         queue[i-1]=queue[i]
  20.     end
  21.     queue[#queue]=nil
  22. end
  23.  
  24. function takeaway(queue)
  25.     obj=queue[1]
  26.     while i=2,#queue do
  27.         queue[i-1]=queue[i]
  28.     end
  29.     queue[#queue]=nil
  30.     return obj
  31. end
  32.  
  33. while true do
  34.     sid, msg, ptc = rednet.receive()
  35.     if(ptc=="remfs") then
  36.         if(msg[1]=="open")then
  37.             msg[2]=hostroot+msg[2]
  38.             ok, ret = pcall(fs[msg[1]],unpack(msg, 2))
  39.             hid=nil
  40.             if(#freeh==0) then
  41.                 hid=(#hndls)+1
  42.             else
  43.                 hid=takeaway(freeh)
  44.             end
  45.             handls[hid]=ret
  46.             rednet.send(sid, hid,"remfs")
  47.         else
  48.             msg[2]=hostroot+msg[2]
  49.             --erg=fs[msg[1]](unpack(msg, 2))
  50.             ok, ret = pcall(fs[msg[1]],unpack(msg, 2))
  51.             rednet.send(sid, ret,"remfs")
  52.         end
  53.     elseif(ptc=="remfsh") then
  54.         ok, ret = pcall(hndls[msg[3]][msg[1]],msg[2])
  55.         if not(ret==nil) then
  56.             rednet.send(sid, ret,"remfsh")
  57.         end
  58.         if msg[1]=="close" then
  59.             add(freeh,msg[3])
  60.         end
  61.     end
  62. end
Add Comment
Please, Sign In to add comment