(data []byte, out any, decoder func([]byte, any) error, format string)
| 372 | } |
| 373 | |
| 374 | func decodeSharedStateValue(data []byte, out any, decoder func([]byte, any) error, format string) error { |
| 375 | if decoder == nil { |
| 376 | return sharedStateCodecNotConfiguredError(format, "decoder") |
| 377 | } |
| 378 | |
| 379 | var ( |
| 380 | err error |
| 381 | recovered any |
| 382 | ) |
| 383 | func() { |
| 384 | // App-configured codecs may be nil or may still use Fiber's |
| 385 | // binder.Unimplemented* placeholders, which panic instead of returning an |
| 386 | // error, so recover here and surface a regular error. |
| 387 | defer func() { |
| 388 | recovered = recover() |
| 389 | }() |
| 390 | |
| 391 | err = decoder(data, out) |
| 392 | }() |
| 393 | |
| 394 | if recovered != nil { |
| 395 | return sharedStateCodecPanicError("decode", format, recovered) |
| 396 | } |
| 397 | if err != nil { |
| 398 | return fmt.Errorf("fiber: failed to decode shared state %s value: %w", format, err) |
| 399 | } |
| 400 | |
| 401 | return nil |
| 402 | } |
| 403 | |
| 404 | func sharedStateCodecNotConfiguredError(format, direction string) error { |
| 405 | return fmt.Errorf("fiber: shared state %s %s is not configured", format, direction) |
no test coverage detected