package gophx

import (
	"encoding/json"
)

type message struct {
	joinRef int64
	ref     int64
	topic   string
	event   string
	payload any
}

func (m message) serializeJSON() ([]byte, error) {
	data, err := json.Marshal([]any{m.joinRef, m.ref, m.topic, m.event, m.payload})
	if err != nil {
		return nil, err
	}

	return data, nil
}

func deserializeJSON(data []byte, msg *message) error {
	m := message{}
	slice := []any{&m.joinRef, &m.ref, &m.topic, &m.event, &m.payload}

	err := json.Unmarshal(data, &slice)
	if err != nil {
		return err
	}

	*msg = m

	return nil
}