MattiasBuelens

MCNet devices/mainframe

Jun 16th, 2012
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.61 KB | None | 0 0
  1. --[[
  2.  
  3.     Minecraft Intranet
  4.     Mainframe device
  5.  
  6. --]]
  7.  
  8. mcnet = mcnet or {}
  9. local device = mcnet.device or {}
  10. mcnet.device = device
  11.  
  12. -- Load dependencies
  13. program.load("server", "forwarder")
  14.  
  15. local Mainframe = common.newClass(
  16.     device.Server, device.Forwarder,
  17.     {
  18.         -- Device
  19.         deviceType = "mainframe",
  20.         -- Server
  21.         registerServantMessage = "registerRouter",
  22.         registeredServantMessage = "registeredRouter",
  23.         -- Mainframe
  24.         servantType = "router",
  25.         domain = "mainframe"
  26.     }
  27. )
  28. device.Mainframe = Mainframe
  29.  
  30. -- Constructor
  31. function Mainframe:init()
  32.     device.Server.init(self)
  33.     device.Forwarder.init(self)
  34.  
  35.     -- Address
  36.     self.address = mcnet.address.new{
  37.         localPart = self.deviceType,
  38.         domainPart = self.domain
  39.     }
  40. end
  41.  
  42. function Mainframe:checkAddress(address)
  43.     return address.domainPart == self.domain
  44. end
  45.  
  46. function Mainframe:checkServant(deviceType, deviceAddress)
  47.     return deviceType == self.servantType
  48. end
  49.  
  50. function Mainframe:getServantName(servantAddress)
  51.     return servantAddress.domainPart
  52. end
  53.  
  54. function Mainframe:getReceivers(senderId, msg)
  55.     -- Send to router by domain
  56.     local receiverId = self.servants:get(msg.to.domainPart)
  57.     return {receiverId}
  58. end
  59.  
  60. function Mainframe:canForward(senderId, msg)
  61.     if (not device.Forwarder.canForward(self, senderId, msg)) then
  62.         return false
  63.     end
  64.  
  65.     -- Ignore servant messages
  66.     if (msg.type == self.registerServantMessage or msg.type == self.registeredServantMessage) then
  67.         return false
  68.     end
  69.  
  70.     return true
  71. end
Advertisement
Add Comment
Please, Sign In to add comment