summaryrefslogtreecommitdiff
path: root/src/nslcd-proto/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/nslcd-proto/util.go')
-rw-r--r--src/nslcd-proto/util.go47
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
+}