aboutsummaryrefslogtreecommitdiff
path: root/src/pawsd/service.lua
blob: c176faf7f63ee039149f3088eff375114515b116 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
--
-- ~~~ response service utils
--

require("src/utils")

-- setup pawsd
local pawsd = {}
pawsd.signature = require("src/pawsd/signature")
pawsd.record = require("src/pawsd/record")
pawsd.tag = require("src/pawsd/tag")

-- get index of service
function getserviceindex (response)

    local indexStart = 15 + pawsd.signature.length(response)
    return table.extracthex(response, indexStart, indexStart + 1)

end

-- get service flags
function getserviceflags (response)

    local flagsStart = 17 + pawsd.signature.length(response)
    return table.extracthex(response, flagsStart, flagsStart + 3)

end

-- get number of records
function getrecordnumber (response)

    local recordsStart = 21 + pawsd.signature.length(response)
    return tonumber(table.extracthex(response, recordsStart, recordsStart + 1), 16)

end

-- get all records
function getallrecords (response)

    local records = {}
    local recordoffset = 23 + pawsd.signature.length(response)
    local recordnumber = getrecordnumber(response)

    for recordindex = 1, recordnumber , 1 do

        local record = pawsd.record.get(response, recordoffset)

        records[recordindex] = record.tags
        recordoffset = record.endoffset

    end

    return records

end

-- return
return {
    index = getserviceindex,
    flags = getserviceflags,
    records = {
        count = getrecordnumber,
        all = getallrecords
    }
}