package ssob import ( "fmt" "io" "sync" "gitea.olznet.de/OlzNet/slog" ) type Encoder struct { mutex sync.Mutex w io.Writer } func NewEncoder(w io.Writer) *Encoder { enc := new(Encoder) enc.w = w return enc } func (enc *Encoder) Encode(e interface{}) (err error) { _, v, err := parseInterface(e) if err != nil { return err } if err = RegisterType(v.Interface()); err != nil { return err } for _, t := range cacheTypes.ntypes { slog.LOG_DEBUGFLN("t: %v", t) } var b []byte if b, err = marshalVal(v.Interface()); err != nil { return fmt.Errorf("ssob: Cannot encode value: %w", err) } enc.mutex.Lock() defer enc.mutex.Unlock() if _, err = enc.w.Write(b); err != nil { return fmt.Errorf("ssob: Cannot encode value: %w", err) } return nil }