From 152debdc773f9968d208dd66604a76ebd63bb034 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Mon, 20 Jul 2015 12:23:09 +0300 Subject: [PATCH] added response cache for loggcallcost --- engine/responder.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/engine/responder.go b/engine/responder.go index c389c6152..cc9afa16d 100644 --- a/engine/responder.go +++ b/engine/responder.go @@ -45,6 +45,7 @@ var ( maxDebitResponseCache = cache2go.NewResponseCache(5 * time.Second) refundIncrementsResponseCache = cache2go.NewResponseCache(5 * time.Second) getSessionRunsResponseCache = cache2go.NewResponseCache(5 * time.Second) + logCallCostResponseCache = cache2go.NewResponseCache(5 * time.Second) ) type Responder struct { @@ -304,13 +305,27 @@ func (rs *Responder) ProcessCdr(cdr *StoredCdr, reply *string) error { } func (rs *Responder) LogCallCost(ccl *CallCostLog, reply *string) error { + if item, err := logCallCostResponseCache.Get(ccl.CgrId); err == nil && item != nil { + *reply = item.Value.(string) + return item.Err + } if rs.CdrSrv == nil { - return errors.New("CDR_SERVER_NOT_RUNNING") + err := errors.New("CDR_SERVER_NOT_RUNNING") + logCallCostResponseCache.Cache(ccl.CgrId, &cache2go.CacheItem{ + Err: err, + }) + return err } if err := rs.CdrSrv.LogCallCost(ccl); err != nil { + logCallCostResponseCache.Cache(ccl.CgrId, &cache2go.CacheItem{ + Err: err, + }) return err } *reply = utils.OK + logCallCostResponseCache.Cache(ccl.CgrId, &cache2go.CacheItem{ + Value: utils.OK, + }) return nil }