summaryrefslogtreecommitdiff
path: root/pkg/server/socket/socket.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2021-03-08 02:25:01 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2021-03-08 02:25:01 +0300
commita6e6d848d6f719710a43ca015027bd93befb721d (patch)
tree8cd94dfb8f466ca9403072c76883d95b41fbe0ef /pkg/server/socket/socket.go
parent95ae97eb7eaa268a06bc2b90184eaed6342b3142 (diff)
add cmd, hook, socket help
Diffstat (limited to 'pkg/server/socket/socket.go')
-rw-r--r--pkg/server/socket/socket.go31
1 files changed, 26 insertions, 5 deletions
diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go
index 03b73d9..ea35be3 100644
--- a/pkg/server/socket/socket.go
+++ b/pkg/server/socket/socket.go
@@ -72,12 +72,12 @@ func (c *conn) Close() error {
func New(desc string, e env.Env) (S, error) {
name, opts := opts.Parse(desc)
- t, ok := sockets[name]
+ sockType, ok := sockets[name]
if !ok {
return nil, fmt.Errorf("%s: unknown type", name)
}
- s := reflect.New(t).Interface()
+ s := reflect.New(sockType.t).Interface()
if err := opts.Configure(s); err != nil {
return nil, fmt.Errorf("%s: %w", name, err)
}
@@ -101,9 +101,18 @@ func parseProtoAddr(proto, addr string) (string, string) {
return proto, addr
}
-var sockets = map[string]reflect.Type{}
+type Type struct {
+ Desc string
+ Name string
-func register(name string, i interface{}) {
+ Param []opts.Param
+
+ t reflect.Type
+}
+
+var sockets = map[string]*Type{}
+
+func register(name string, desc string, i interface{}) {
t := reflect.TypeOf(i)
if t.Kind() != reflect.Struct {
log.Panicf("non-struct type '%s'", t.String())
@@ -114,7 +123,15 @@ func register(name string, i interface{}) {
if _, ok := sockets[name]; ok {
log.Panicf("duplicate socket name '%s'", name)
}
- sockets[name] = t
+
+ sockets[name] = &Type{
+ Desc: desc,
+ Name: name,
+
+ Param: opts.Parametrize(t),
+
+ t: t,
+ }
}
func GetList() []string {
@@ -128,3 +145,7 @@ func GetList() []string {
return list
}
+
+func GetType(name string) *Type {
+ return sockets[name]
+}