-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathheader.go
78 lines (72 loc) · 2.59 KB
/
header.go
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
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import "time"
type Header struct {
Version uint32
Filesize uint32
CRC32 uint32
Timestamp uint32
CountryCode uint8
PublicityFlag uint8
QuestionVersion uint8
ResultVersion uint8
NumberOfNationalQuestions uint8
NationalQuestionTableOffset uint32
NumberOfWorldWideQuestions uint8
WorldWideQuestionTableOffset uint32
NumberOfQuestions uint8
QuestionTextInfoTableOffset uint32
NumberOfNationalResults uint8
NationalResultTableOffset uint32
NumberOfDetailedNationalResults uint16
DetailedNationalResultTableOffset uint32
NumberOfPositionTables uint16
PositionTableOffset uint32
NumberOfWorldWideResults uint8
WorldWideResultsTableOffset uint32
NumberOfDetailedWorldWideResults uint16
DetailedWorldWideResultTableOffset uint32
NumberOfCountries uint16
CountryTableOffset uint32
}
func (v *Votes) MakeHeader() {
questionVersion := 1
resultVersion := 0
if fileType == Results {
questionVersion = 0
resultVersion = 1
}
v.Header = Header{
Version: 0,
Filesize: 0,
CRC32: 0,
Timestamp: GenerateCurrentTimestamp(),
CountryCode: v.currentCountryCode,
PublicityFlag: 0,
QuestionVersion: uint8(questionVersion),
ResultVersion: uint8(resultVersion),
NumberOfNationalQuestions: 0,
NationalQuestionTableOffset: 0,
NumberOfWorldWideQuestions: 0,
WorldWideQuestionTableOffset: 0,
NumberOfQuestions: 0,
QuestionTextInfoTableOffset: 0,
NumberOfNationalResults: 0,
NationalResultTableOffset: 0,
NumberOfDetailedNationalResults: 0,
DetailedNationalResultTableOffset: 0,
NumberOfPositionTables: 0,
PositionTableOffset: 0,
NumberOfWorldWideResults: 0,
WorldWideResultsTableOffset: 0,
NumberOfDetailedWorldWideResults: 0,
DetailedWorldWideResultTableOffset: 0,
NumberOfCountries: 0,
CountryTableOffset: 0,
}
}
func GenerateCurrentTimestamp() uint32 {
return CreateTimestamp(int(time.Now().Unix()))
}
func CreateTimestamp(time int) uint32 {
return uint32((time - 946684800) / 60)
}