Skip to content

Commit 2fbf0e0

Browse files
committed
refactor new instance function
1 parent 515fcb9 commit 2fbf0e0

File tree

1 file changed

+50
-30
lines changed

1 file changed

+50
-30
lines changed

v2ray.go

+50-30
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,52 @@ type Instance struct {
6060
running bool
6161
}
6262

63+
func addInboundHandlers(server *Instance, configs []*InboundHandlerConfig) error {
64+
if len(configs) == 0 {
65+
return nil
66+
}
67+
68+
inboundManager := server.GetFeature(inbound.ManagerType()).(inbound.Manager)
69+
for _, inboundConfig := range configs {
70+
rawHandler, err := CreateObject(server, inboundConfig)
71+
if err != nil {
72+
return err
73+
}
74+
handler, ok := rawHandler.(inbound.Handler)
75+
if !ok {
76+
return newError("not an InboundHandler")
77+
}
78+
if err := inboundManager.AddHandler(context.Background(), handler); err != nil {
79+
return err
80+
}
81+
}
82+
83+
return nil
84+
}
85+
86+
func addOutboundHandlers(server *Instance, configs []*OutboundHandlerConfig) error {
87+
if len(configs) == 0 {
88+
return nil
89+
}
90+
91+
outboundManager := server.GetFeature(outbound.ManagerType()).(outbound.Manager)
92+
for _, outboundConfig := range configs {
93+
rawHandler, err := CreateObject(server, outboundConfig)
94+
if err != nil {
95+
return err
96+
}
97+
handler, ok := rawHandler.(outbound.Handler)
98+
if !ok {
99+
return newError("not an OutboundHandler")
100+
}
101+
if err := outboundManager.AddHandler(context.Background(), handler); err != nil {
102+
return err
103+
}
104+
}
105+
106+
return nil
107+
}
108+
63109
// New returns a new V2Ray instance based on given configuration.
64110
// The instance is not started at this point.
65111
// To ensure V2Ray instance works properly, the config must contain one Dispatcher, one InboundHandlerManager and one OutboundHandlerManager. Other features are optional.
@@ -106,38 +152,12 @@ func New(config *Config) (*Instance, error) {
106152
return nil, newError("not all dependency are resolved.")
107153
}
108154

109-
if len(config.Inbound) > 0 {
110-
inboundManager := server.GetFeature(inbound.ManagerType()).(inbound.Manager)
111-
for _, inboundConfig := range config.Inbound {
112-
rawHandler, err := CreateObject(server, inboundConfig)
113-
if err != nil {
114-
return nil, err
115-
}
116-
handler, ok := rawHandler.(inbound.Handler)
117-
if !ok {
118-
return nil, newError("not an InboundHandler")
119-
}
120-
if err := inboundManager.AddHandler(context.Background(), handler); err != nil {
121-
return nil, err
122-
}
123-
}
155+
if err := addInboundHandlers(server, config.Inbound); err != nil {
156+
return nil, err
124157
}
125158

126-
if len(config.Outbound) > 0 {
127-
outboundManager := server.GetFeature(outbound.ManagerType()).(outbound.Manager)
128-
for _, outboundConfig := range config.Outbound {
129-
rawHandler, err := CreateObject(server, outboundConfig)
130-
if err != nil {
131-
return nil, err
132-
}
133-
handler, ok := rawHandler.(outbound.Handler)
134-
if !ok {
135-
return nil, newError("not an OutboundHandler")
136-
}
137-
if err := outboundManager.AddHandler(context.Background(), handler); err != nil {
138-
return nil, err
139-
}
140-
}
159+
if err := addOutboundHandlers(server, config.Outbound); err != nil {
160+
return nil, err
141161
}
142162

143163
return server, nil

0 commit comments

Comments
 (0)