MattiasBuelens

MCNet devices/server

Jun 16th, 2012
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.62 KB | None | 0 0
  1. --[[
  2.  
  3.     Minecraft Intranet
  4.     Server device
  5.  
  6. --]]
  7.  
  8. mcnet = mcnet or {}
  9. local device = mcnet.device or {}
  10. mcnet.device = device
  11.  
  12. local Server = common.newClass(device.Device, {
  13.     registerServantMessage = nil,
  14.     registeredServantMessage = nil,
  15.     servants = nil
  16. })
  17. device.Server = Server
  18.  
  19. -- Constructor
  20. function Server:init()
  21.     device.Device.init(self)
  22.  
  23.     self.servants = mcnet.names.new()
  24.  
  25.     self:addMessageHandler{
  26.         [self.registerServantMessage] = self.handleRegisterServant,
  27.         deviceOff = self.handleUnregisterServant
  28.     }
  29. end
  30.  
  31. -- Check if the given device is a servant
  32. function Server:checkServant(deviceType, deviceAddress)
  33.     return true
  34. end
  35.  
  36. -- Get the name of the given servant
  37. function Server:getServantName(servantAddress)
  38.     return ""
  39. end
  40.  
  41. function Server:handleRegisterServant(senderId, msg)
  42.     -- Register servant
  43.     local servantName = self:getServantName(msg.from)
  44.     self.servants:register(servantName, senderId)
  45.     self:trigger("registeredServant", senderId, servantName)
  46.     -- Reply
  47.     self:send(senderId, mcnet.message.new{
  48.         to = msg.from,
  49.         type = self.registeredServantMessage
  50.     })
  51.     return true
  52. end
  53.  
  54. function Server:handleUnregisterServant(senderId, msg)
  55.     if (self:checkServant(msg.device, msg.from)) then
  56.         -- Unregister servant
  57.         local servantName = self.servants:getName(senderId)
  58.         if (servantName ~= nil) then
  59.             self.servants:unregister(servantName)
  60.             self:trigger("unregisteredServant", senderId, servantName)
  61.         end
  62.         return true
  63.     end
  64.  
  65.     return false
  66. end
Advertisement
Add Comment
Please, Sign In to add comment