1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 18:17:52 -05:00

refactor proxy config cache

This commit is contained in:
Darien Raymond 2016-10-13 11:14:24 +02:00
parent d26ee5441e
commit b060bb3b94
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
2 changed files with 39 additions and 9 deletions

View File

@ -1,13 +1,16 @@
package registry package registry
import "v2ray.com/core/common/loader" import (
"v2ray.com/core/common/loader"
"github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/any"
)
var ( var (
inboundConfigCreatorCache = loader.ConfigCreatorCache{} inboundConfigCreatorCache = loader.ConfigCreatorCache{}
inboundConfigCache loader.ConfigLoader
outboundConfigCreatorCache = loader.ConfigCreatorCache{} outboundConfigCreatorCache = loader.ConfigCreatorCache{}
outboundConfigCache loader.ConfigLoader
) )
func RegisterInboundConfig(protocol string, creator loader.ConfigCreator) error { func RegisterInboundConfig(protocol string, creator loader.ConfigCreator) error {
@ -18,10 +21,24 @@ func RegisterOutboundConfig(protocol string, creator loader.ConfigCreator) error
return outboundConfigCreatorCache.RegisterCreator(protocol, creator) return outboundConfigCreatorCache.RegisterCreator(protocol, creator)
} }
func CreateInboundConfig(protocol string, data []byte) (interface{}, error) { func MarshalInboundConfig(protocol string, settings *any.Any) (interface{}, error) {
return inboundConfigCache.LoadWithID(data, protocol) config, err := inboundConfigCreatorCache.CreateConfig(protocol)
if err != nil {
return nil, err
}
if err := ptypes.UnmarshalAny(settings, config.(proto.Message)); err != nil {
return nil, err
}
return config, nil
} }
func CreateOutboundConfig(protocol string, data []byte) (interface{}, error) { func MarshalOutboundConfig(protocol string, settings *any.Any) (interface{}, error) {
return outboundConfigCache.LoadWithID(data, protocol) config, err := outboundConfigCreatorCache.CreateConfig(protocol)
if err != nil {
return nil, err
}
if err := ptypes.UnmarshalAny(settings, config.(proto.Message)); err != nil {
return nil, err
}
return config, nil
} }

View File

@ -6,6 +6,19 @@ import (
"v2ray.com/core/common/loader" "v2ray.com/core/common/loader"
) )
var (
inboundConfigCache loader.ConfigLoader
outboundConfigCache loader.ConfigLoader
)
func CreateInboundConfig(protocol string, data []byte) (interface{}, error) {
return inboundConfigCache.LoadWithID(data, protocol)
}
func CreateOutboundConfig(protocol string, data []byte) (interface{}, error) {
return outboundConfigCache.LoadWithID(data, protocol)
}
func init() { func init() {
inboundConfigCache = loader.NewJSONConfigLoader(inboundConfigCreatorCache, "protocol", "settings") inboundConfigCache = loader.NewJSONConfigLoader(inboundConfigCreatorCache, "protocol", "settings")
outboundConfigCache = loader.NewJSONConfigLoader(outboundConfigCreatorCache, "protocol", "settings") outboundConfigCache = loader.NewJSONConfigLoader(outboundConfigCreatorCache, "protocol", "settings")