package nslcd_proto import "io" type NslcdError string func (o NslcdError) Error() string { return string(o) } type NslcdObject interface { NslcdWrite(fd io.Writer) } type NslcdObjectPtr interface { NslcdRead(fd io.Reader) } func Write(fd io.Writer, data interface{}) (err error) { err = nil defer func() { if r := recover(); r != nil { switch r := r.(type) { case error: err = r default: panic(r) } } }() write(fd, data) return } func Read(fd io.Reader, data interface{}) (err error) { err = nil defer func() { if r := recover(); r != nil { switch r := r.(type) { case error: err = r default: panic(r) } } }() read(fd, data); return }