Updated services

This commit is contained in:
Trial97
2021-11-15 16:13:36 +02:00
committed by Dan Christian Bogos
parent eac50e21f1
commit a4ebbfe67b
24 changed files with 219 additions and 156 deletions

View File

@@ -125,3 +125,108 @@ func (s RPCClientSet) Call(ctx *context.Context, method string, args interface{}
}
return conn.Call(ctx, method, args, reply)
}
func NewService(val interface{}) (_ IntService, err error) {
var srv *birpc.Service
if srv, err = birpc.NewService(val, utils.EmptyString, false); err != nil {
return
}
s := IntService{srv.Name: srv}
for m, v := range srv.Methods {
if len(m) < 2 || m[0] != 'V' {
continue
}
key := srv.Name + "v" + string(m[1])
srv2, has := s[key]
if !has {
srv2 = new(birpc.Service)
*srv2 = *srv
srv2.Methods = make(map[string]*birpc.MethodType)
s[key] = srv2
}
srv2.Methods[m[2:]] = v
}
return s, nil
}
func NewDispatcherService(val interface{}) (_ IntService, err error) {
var srv *birpc.Service
if srv, err = birpc.NewService(val, utils.EmptyString, false); err != nil {
return
}
s := IntService{srv.Name: srv}
for m, v := range srv.Methods {
key := srv.Name
switch {
case strings.HasPrefix(m, utils.AccountS):
m = strings.TrimRight(m, utils.AccountS)
key = utils.AccountS
case strings.HasPrefix(m, utils.ActionS):
m = strings.TrimRight(m, utils.ActionS)
key = utils.ActionS
case strings.HasPrefix(m, utils.AttributeS):
m = strings.TrimRight(m, utils.AttributeS)
key = utils.AttributeS
case strings.HasPrefix(m, utils.CacheS):
m = strings.TrimRight(m, utils.CacheS)
key = utils.CacheS
case strings.HasPrefix(m, utils.ChargerS):
m = strings.TrimRight(m, utils.ChargerS)
key = utils.ChargerS
case strings.HasPrefix(m, utils.ConfigS):
m = strings.TrimRight(m, utils.ConfigS)
key = utils.ConfigS
case strings.HasPrefix(m, utils.DispatcherS):
m = strings.TrimRight(m, utils.DispatcherS)
key = utils.DispatcherS
case strings.HasPrefix(m, utils.GuardianS):
m = strings.TrimRight(m, utils.GuardianS)
key = utils.GuardianS
case strings.HasPrefix(m, utils.RateS):
m = strings.TrimRight(m, utils.RateS)
key = utils.RateS
// case strings.HasPrefix(m, utils.ReplicatorS):
// m = strings.TrimRight(m, utils.ReplicatorS)
// key = utils.ReplicatorS
case strings.HasPrefix(m, utils.ResourceS):
m = strings.TrimRight(m, utils.ResourceS)
key = utils.ResourceS
case strings.HasPrefix(m, utils.RouteS):
m = strings.TrimRight(m, utils.RouteS)
key = utils.RouteS
case strings.HasPrefix(m, utils.SessionS):
m = strings.TrimRight(m, utils.SessionS)
key = utils.SessionS
case strings.HasPrefix(m, utils.StatS):
m = strings.TrimRight(m, utils.StatS)
key = utils.StatS
case strings.HasPrefix(m, utils.ThresholdS):
m = strings.TrimRight(m, utils.ThresholdS)
key = utils.ThresholdS
case strings.HasPrefix(m, utils.CDRs):
m = strings.TrimRight(m, utils.CDRs)
key = utils.CDRs
case len(m) < 2 || m[0] != 'V':
continue
}
key += "v" + string(m[1])
srv2, has := s[key]
if !has {
srv2 = new(birpc.Service)
*srv2 = *srv
srv2.Methods = make(map[string]*birpc.MethodType)
s[key] = srv2
}
srv2.Methods[m[2:]] = v
}
return s, nil
}
type IntService map[string]*birpc.Service
func (s IntService) Call(ctx *context.Context, method string, args, reply interface{}) error {
return s[strings.Split(method, utils.NestingSep)[0]].Call(ctx, method, args, reply)
}