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 List remote.List Task remote.Task 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 }