This repository was archived by the owner on Jul 25, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwriter.go
More file actions
96 lines (69 loc) · 1.95 KB
/
writer.go
File metadata and controls
96 lines (69 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package gosrv
import (
"reflect"
"cyberpull.com/gotk/v2/errors"
)
func write[T any](prefix string, io NetIO, data T) (n int, err error) {
dValue := reflect.ValueOf(data)
vType := dValue.Type()
if vType.Kind() != reflect.Pointer {
err = errors.New("Data type must be a pointer")
return
}
if dValue.IsNil() {
err = errors.New("Data type must not be null")
return
}
var b []byte
if b, err = json.Encode(data); err != nil {
return
}
output := prefix + separator + string(b)
return io.WriteStringLine(output)
}
func writeError(io NetIO, data *Data) (n int, err error) {
return write[*Data](errorPrefix, io, data)
}
func writeInfo(io NetIO, data *Info) (n int, err error) {
return write[*Info](infoPrefix, io, data)
}
func writeRequest(io NetIO, data *pRequest) (n int, err error) {
return write[*pRequest](requestPrefix, io, data)
}
func writeResponse(io NetIO, data Response) (n int, err error) {
return write[Response](responsePrefix, io, data)
}
func writeErrorResponse(io NetIO, req *pRequest, data any, code ...int) (n int, err error) {
resp := newResponse(req)
if err = resp.SetError(data, code...); err != nil {
return
}
return writeResponse(io, resp)
}
func writeOutputResponse(io NetIO, req *pRequest, data Output) (n int, err error) {
resp := newResponse(req)
resp.Code = data.GetCode()
if err = resp.SetContent(data.GetContent()); err != nil {
return
}
return writeResponse(io, resp)
}
func writeUpdate(io NetIO, data Update) (n int, err error) {
return write[Update](updatePrefix, io, data)
}
// func writeState(io NetIO, name string, value bool) (n int, err error) {
// output := statePrefix + separator + name + "="
// if value {
// output += "YES"
// } else {
// output += "NO"
// }
// return io.WriteStringLine(output)
// }
// func mustWriteState(io NetIO, name string, value bool) (n int) {
// var err error
// if n, err = writeState(io, name, value); err != nil {
// panic(err)
// }
// return
// }