|
1 | 1 | package demoinfocs |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "errors" |
| 5 | + "fmt" |
4 | 6 | "io" |
5 | 7 | "sync" |
6 | 8 | "time" |
@@ -47,10 +49,10 @@ type parser struct { |
47 | 49 | stParser *st.SendTableParser |
48 | 50 | additionalNetMessageCreators map[int]NetMessageCreator // Map of net-message-IDs to NetMessageCreators (for parsing custom net-messages) |
49 | 51 | msgQueue chan interface{} // Queue of net-messages |
50 | | - msgDispatcher dp.Dispatcher // Net-message dispatcher |
| 52 | + msgDispatcher *dp.Dispatcher // Net-message dispatcher |
51 | 53 | gameEventHandler gameEventHandler |
52 | 54 | userMessageHandler userMessageHandler |
53 | | - eventDispatcher dp.Dispatcher |
| 55 | + eventDispatcher *dp.Dispatcher |
54 | 56 | currentFrame int // Demo-frame, not ingame-tick |
55 | 57 | tickInterval float32 // Duration between ticks in seconds |
56 | 58 | header *common.DemoHeader // Pointer so we can check for nil |
@@ -302,6 +304,12 @@ func NewParserWithConfig(demostream io.Reader, config ParserConfig) Parser { |
302 | 304 | p.userMessageHandler = newUserMessageHandler(&p) |
303 | 305 | p.demoInfoProvider = demoInfoProvider{parser: &p} |
304 | 306 |
|
| 307 | + dispatcherCfg := dp.Config{ |
| 308 | + PanicHandler: func(v interface{}) { p.setError(errors.New(fmt.Sprint(v))) }, |
| 309 | + } |
| 310 | + p.msgDispatcher = dp.NewDispatcherWithConfig(dispatcherCfg) |
| 311 | + p.eventDispatcher = new(dp.Dispatcher) |
| 312 | + |
305 | 313 | // Attach proto msg handlers |
306 | 314 | p.msgDispatcher.RegisterHandler(p.handlePacketEntities) |
307 | 315 | p.msgDispatcher.RegisterHandler(p.handleGameEventList) |
|
0 commit comments