MyTinyTodo2/mytinytodo/packable.go

57 lines
1.0 KiB
Go

package mytinytodo
import (
"bytes"
"encoding/gob"
"local/mytinytodoclient/mytinytodo/remote"
)
type StringArray []string
func NewStringArray(s ...string) *StringArray {
arr := s[:]
var sa StringArray = arr
return &sa
}
func (sa *StringArray) StringArray() []string {
return []string(*sa)
}
func (sa *StringArray) Encode() ([]byte, error) {
buf := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buf)
err := enc.Encode(sa.StringArray())
return buf.Bytes(), err
}
func (sa *StringArray) Decode(b []byte) error {
buf := bytes.NewBuffer(b)
enc := gob.NewDecoder(buf)
var s []string
err := enc.Decode(&s)
*sa = StringArray(s)
return err
}
type QueuedOp struct {
Op remote.Op
ListID string
TaskName string
TaskTags []string
}
func (qop *QueuedOp) Encode() ([]byte, error) {
buf := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buf)
err := enc.Encode(*qop)
return buf.Bytes(), err
}
func (qop *QueuedOp) Decode(b []byte) error {
buf := bytes.NewBuffer(b)
enc := gob.NewDecoder(buf)
err := enc.Decode(qop)
return err
}