Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- MCNet Mail
- Mail boxes
- --]]
- mcmail = mcmail or {}
- --[[
- Mail box
- ]]--
- local MailBox = common.newClass({
- -- Parent mail
- parent = nil,
- -- Mailbox name
- name = "",
- -- Messages
- messages = nil
- })
- mcmail.MailBox = MailBox
- function MailBox:init()
- self.messages = self.messages or {}
- end
- function MailBox:load()
- -- Load messages
- local messages = self.parent:get(self.name) or {}
- -- Unpack messages
- local unpacked = {}
- for i,msg in ipairs(messages) do
- unpacked[i] = mcnet.message.unpack(msg)
- end
- -- Store messages
- self.messages = unpacked
- end
- function MailBox:save()
- -- Pack messages
- local packed = {}
- for i,msg in ipairs(self.messages) do
- packed[i] = mcnet.message.pack(msg)
- end
- -- Store box
- self.parent:set(self.name, packed)
- self.parent:save()
- end
- function MailBox:add(message)
- local i = common.ifind(self.messages, message)
- assert(i == nil, "message already stored")
- table.insert(self.messages, message)
- self:save()
- end
- function MailBox:remove(message)
- local i = common.ifind(self.messages, message)
- assert(i ~= nil, "message not found")
- table.remove(self.messages, i)
- self:save()
- end
- --[[
- Mail
- ]]--
- local Mail = common.newClass(common.Store)
- mcmail.Mail = Mail
- function mcmail.newMail(path, defaults)
- assert(type(path) == "string", "path must be a string")
- return Mail:new{
- ___path = path,
- ___data = {},
- ___defaults = defaults or {}
- }
- end
- function Mail:getBox(boxName)
- return MailBox:new{
- parent = self,
- name = boxName
- }
- end
Advertisement
Add Comment
Please, Sign In to add comment