src to pkg, impl lobby.Closed

This commit is contained in:
Bel LaPointe
2025-02-12 16:48:58 -07:00
parent 1f6b79aa3b
commit e35ddef4b7
18 changed files with 117 additions and 21 deletions

View File

@@ -0,0 +1,34 @@
package event
import (
"encoding/json"
"fmt"
)
func Serialize(t string, v any) ([]byte, error) {
var wrapper struct {
Type string `json:"type"`
Payload any `json:"payload"`
}
wrapper.Type = t
wrapper.Payload = v
return json.Marshal(wrapper)
}
func Parse(b []byte, typesToPointers map[string]any) (string, error) {
var wrapper struct {
Type string `json:"type"`
Payload json.RawMessage `json:"payload"`
}
if err := json.Unmarshal(b, &wrapper); err != nil {
return "", err
}
if ptr, ok := typesToPointers[wrapper.Type]; !ok {
return "", fmt.Errorf("cannot parse unknown type %s", wrapper.Type)
} else if err := json.Unmarshal(wrapper.Payload, ptr); err != nil {
return "", fmt.Errorf("failed parsing type %s: %w", wrapper.Type, err)
}
return wrapper.Type, nil
}