Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Minecraft Intranet
- Client device
- --]]
- mcnet = mcnet or {}
- local device = mcnet.device or {}
- mcnet.device = device
- -- Load dependencies
- program.load("servant")
- local Client = common.newClass(
- device.Servant,
- {
- -- Device
- deviceType = "client",
- -- Servant
- registerServerMessage = "registerClient",
- registeredServerMessage = "registeredClient",
- -- Client
- serverType = "router",
- name = nil,
- domain = nil
- }
- )
- device.Client = Client
- -- Constructor
- function Client:init()
- device.Servant.init(self)
- self:addMessageHandler("error", self.handleError)
- -- Address
- self.address = mcnet.address.new{
- localPart = self.name,
- domainPart = self.domain
- }
- end
- function Client:checkServer(deviceType, deviceAddress)
- return deviceType == self.serverType and deviceAddress.domainPart == self.domain
- end
- -- Post message
- function Client:post(msg)
- if not self:isConnected() then
- self:trigger("error", "clientDisconnected", "Client not connected to server")
- return false
- end
- -- Sender address
- msg.from = self.address
- -- Send message
- local result = self:send(self.serverId, msg)
- if not result then
- self:trigger("error", "postMessageFailed", "Could not post message")
- end
- return result
- end
- -- Error reporting
- function Client:handleError(senderId, msg)
- local errorType = string.sub(msg.type, 1+string.len("error"))
- errorType = string.lower(string.sub(errorType, 1, 1))..string.sub(errorType, 2, -1)
- if (string.lower(errorType) == "notfound") then
- local address = mcnet.address.parse(msg.data)
- self:trigger("error", "destinationNotFound", "Destination address not found", address)
- else
- self:trigger("error", errorType, "Unknown error", senderId, msg)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment