Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Network = {}
- function Network.toUnixTime(date_table)
- local sec_per_day = 24 * 60 * 60
- local sec_per_year = 365 * sec_per_day
- local unix_time =
- sec_per_year * (date_table.year - 1970)
- + sec_per_day * (date_table.yday - 1)
- + date_table.hour * 60 * 60
- + date_table.min * 60
- + date_table.sec
- return unix_time
- end
- Network.Message = {
- timestamp = 0,
- from = nil,
- text = "",
- protocol = nil,
- }
- function Network.Message:new(o)
- o = o or {}
- setmetatable(o, self)
- self.__index = self
- return o
- end
- Network.Socket = {
- protocol = nil,
- timeout = nil,
- received = nil,
- callback = nil,
- listen = nil
- }
- function Network.Socket:new(o)
- o = o or {}
- setmetatable(o, self)
- self.__index = self
- o.received = {}
- o.listen = function()
- local rednet_data = {rednet.receive(o.protocol, o.timeout)}
- if not rednet_data then
- return
- end
- table.insert(o.received, 1, Network.Message:new {
- timestamp = Network.toUnixTime(os.date("!*t")),
- from = rednet_data[1],
- text = rednet_data[2],
- protocol = rednet_data[3],
- })
- o.callback(o)
- end
- return o
- end
- return Network
Advertisement
Add Comment
Please, Sign In to add comment