Refactor void handling: add specialized encoder/decoder/type logic, update void-based operations for clarity and correctness

This commit is contained in:
adman
2025-12-27 19:34:27 +01:00
parent 08f265c259
commit 3ddf830d31
9 changed files with 46 additions and 39 deletions
+6 -15
View File
@@ -75,29 +75,20 @@ type PacketIdentifier struct {
type (
ToDo struct{}
Void struct{}
RestBuffer []byte
)
func (v Void) Encode(_ io.Writer) (err error) {
return
}
func (v Void) Decode(_ io.Reader) (ret Void, err error) {
return
}
var ToDoError = errors.New("to do")
var BadTypeError = errors.New("bad type")
func (r RestBuffer) Encode(w io.Writer) (err error) {
_, err = w.Write(r)
func (r *RestBuffer) Encode(w io.Writer) (err error) {
_, err = w.Write(*r)
return
}
func (RestBuffer) Decode(r io.Reader) (ret RestBuffer, err error) {
func (ret *RestBuffer) Decode(r io.Reader) (err error) {
b, err := io.ReadAll(r)
ret = b
*ret = b
return
}
@@ -215,7 +206,7 @@ func ErroringIndex[K comparable, V any, M map[K]V](m M, i K) (v V, err error) {
return
}
type EncodeDecodeAble[Self any] interface {
type EncodeDecodeAble interface {
Encode(w io.Writer) (err error)
Decode(r io.Reader) (ret Self, err error)
Decode(r io.Reader) (err error)
}