mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 00:58:45 +05:00
Updated services
This commit is contained in:
committed by
Dan Christian Bogos
parent
eac50e21f1
commit
a4ebbfe67b
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user