Skip to content

Commit 3d7b069

Browse files
committed
DemoHeader clean up
* Return header in ParseHeader() * Deprecated HeaderParsedEvent (GoDoc) * Deprecated Parser.Map()
1 parent a61264f commit 3d7b069

File tree

4 files changed

+42
-13
lines changed

4 files changed

+42
-13
lines changed

demoinfocs_test.go

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func TestCancelParseToEnd(t *testing.T) {
9090
}
9191

9292
p := dem.NewParser(f, nil)
93-
err = p.ParseHeader()
93+
_, err = p.ParseHeader()
9494
if err != nil {
9595
t.Fatal(err)
9696
}
@@ -114,11 +114,15 @@ func TestCancelParseToEnd(t *testing.T) {
114114
func TestConcurrent(t *testing.T) {
115115
var i int64
116116
runner := func() {
117-
f, _ := os.Open(defaultDemPath)
117+
f, err := os.Open(defaultDemPath)
118+
if err != nil {
119+
t.Fatal(err)
120+
}
118121
defer f.Close()
119122

120123
p := dem.NewParser(f, nil)
121-
err := p.ParseHeader()
124+
125+
_, err = p.ParseHeader()
122126
if err != nil {
123127
t.Fatal(err)
124128
}
@@ -127,7 +131,12 @@ func TestConcurrent(t *testing.T) {
127131
fmt.Printf("Starting runner %d\n", n)
128132

129133
ts := time.Now()
130-
p.ParseToEnd()
134+
135+
err = p.ParseToEnd()
136+
if err != nil {
137+
t.Fatal(err)
138+
}
139+
131140
fmt.Printf("Runner %d took %s\n", n, time.Since(ts))
132141
}
133142

@@ -165,12 +174,15 @@ func TestDemoSet(t *testing.T) {
165174
}()
166175

167176
p := dem.NewParser(f, nil)
168-
err = p.ParseHeader()
177+
_, err = p.ParseHeader()
169178
if err != nil {
170179
t.Fatal(err)
171180
}
172181

173-
p.ParseToEnd()
182+
err = p.ParseToEnd()
183+
if err != nil {
184+
t.Fatal(err)
185+
}
174186
}()
175187
}
176188
}
@@ -186,12 +198,19 @@ func BenchmarkDemoInfoCs(b *testing.B) {
186198
}
187199

188200
p := dem.NewParser(f, nil)
189-
err = p.ParseHeader()
201+
202+
_, err = p.ParseHeader()
190203
if err != nil {
191204
b.Fatal(err)
192205
}
206+
193207
ts := time.Now()
194-
p.ParseToEnd()
208+
209+
err = p.ParseToEnd()
210+
if err != nil {
211+
b.Fatal(err)
212+
}
213+
195214
b.Logf("Took %s\n", time.Since(ts))
196215
}()
197216
}
@@ -218,13 +237,19 @@ func BenchmarkInMemory(b *testing.B) {
218237
b.ResetTimer()
219238
for i := 0; i < b.N; i++ {
220239
p := dem.NewParser(bytes.NewReader(d), nil)
221-
err = p.ParseHeader()
240+
241+
_, err = p.ParseHeader()
222242
if err != nil {
223243
b.Fatal(err)
224244
}
225245

226246
ts := time.Now()
227-
p.ParseToEnd()
247+
248+
err = p.ParseToEnd()
249+
if err != nil {
250+
b.Fatal(err)
251+
}
252+
228253
b.Logf("Took %s\n", time.Since(ts))
229254
}
230255
}

events/events.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
)
99

1010
// HeaderParsedEvent signals that the header has been parsed.
11+
// Deprecated, use Parser.Header() instead.
1112
type HeaderParsedEvent struct {
1213
Header common.DemoHeader
1314
}

parser.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ type Parser struct {
5454
}
5555

5656
// Map returns the map name. E.g. de_dust2 or de_inferno.
57+
// Deprecated, use Header().MapName instead.
5758
func (p *Parser) Map() string {
5859
return p.header.MapName
5960
}
6061

62+
// Header returns the DemoHeader which contains the demo's metadata.
6163
func (p *Parser) Header() common.DemoHeader {
6264
return *p.header
6365
}

parsing.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222

2323
// ParseHeader attempts to parse the header of the demo.
2424
// Returns error if the filestamp (first 8 bytes) doesn't match HL2DEMO.
25-
func (p *Parser) ParseHeader() error {
25+
func (p *Parser) ParseHeader() (common.DemoHeader, error) {
2626
var h common.DemoHeader
2727
h.Filestamp = p.bitReader.ReadCString(8)
2828
h.Protocol = p.bitReader.ReadSignedInt(32)
@@ -37,7 +37,7 @@ func (p *Parser) ParseHeader() error {
3737
h.SignonLength = p.bitReader.ReadSignedInt(32)
3838

3939
if h.Filestamp != "HL2DEMO" {
40-
return errors.New("Invalid File-Type; expecting HL2DEMO in the first 8 bytes")
40+
return h, errors.New("Invalid File-Type; expecting HL2DEMO in the first 8 bytes")
4141
}
4242

4343
// Initialize queue if the buffer size wasn't specified, the amount of ticks
@@ -47,8 +47,9 @@ func (p *Parser) ParseHeader() error {
4747
}
4848

4949
p.header = &h
50+
// TODO: Deprecated, remove this + HeaderParsedEvent in 1.0.0
5051
p.eventDispatcher.Dispatch(events.HeaderParsedEvent{Header: h})
51-
return nil
52+
return h, nil
5253
}
5354

5455
// ParseToEnd attempts to parse the demo until the end.

0 commit comments

Comments
 (0)