diff options
Diffstat (limited to 'src/nslcd-proto/util.go')
-rw-r--r-- | src/nslcd-proto/util.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/nslcd-proto/util.go b/src/nslcd-proto/util.go new file mode 100644 index 0000000..ec74df2 --- /dev/null +++ b/src/nslcd-proto/util.go @@ -0,0 +1,47 @@ +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 +} |