GetEndTime in Event interface gets fieldName and timezone as parameters

This commit is contained in:
DanB
2015-11-09 09:47:20 +01:00
parent a007b2b001
commit f0cbc0262b
9 changed files with 24 additions and 21 deletions

View File

@@ -38,7 +38,7 @@ type Event interface {
GetReqType(string) string
GetSetupTime(string, string) (time.Time, error)
GetAnswerTime(string, string) (time.Time, error)
GetEndTime() (time.Time, error)
GetEndTime(string, string) (time.Time, error)
GetDuration(string) (time.Duration, error)
GetPdd(string) (time.Duration, error)
GetSupplier(string) string

View File

@@ -590,7 +590,7 @@ func (storedCdr *StoredCdr) GetAnswerTime(fieldName, timezone string) (time.Time
}
return utils.ParseTimeDetectLayout(aTimeVal, timezone)
}
func (storedCdr *StoredCdr) GetEndTime() (time.Time, error) {
func (storedCdr *StoredCdr) GetEndTime(fieldName, timezone string) (time.Time, error) {
return storedCdr.AnswerTime.Add(storedCdr.Usage), nil
}
func (storedCdr *StoredCdr) GetDuration(fieldName string) (time.Duration, error) {

View File

@@ -203,8 +203,8 @@ func (fsev FSEvent) GetAnswerTime(fieldName, timezone string) (t time.Time, err
return utils.ParseTimeDetectLayout(aTimeStr, timezone)
}
func (fsev FSEvent) GetEndTime() (t time.Time, err error) {
return utils.ParseTimeDetectLayout(fsev[END_TIME], config.CgrConfig().DefaultTimezone)
func (fsev FSEvent) GetEndTime(fieldName, timezone string) (t time.Time, err error) {
return utils.ParseTimeDetectLayout(fsev[END_TIME], timezone)
}
func (fsev FSEvent) GetDuration(fieldName string) (time.Duration, error) {

View File

@@ -8,7 +8,7 @@ the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without geven the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
@@ -32,9 +32,7 @@ const (
CGR_CONNUUID = "cgr_connid"
)
var smgen *GenericSessionManager
// Attempts to get the connId prgeviously set in the client state container
// Attempts to get the connId previously set in the client state container
func getClientConnId(clnt *rpc2.Client) string {
uuid, hasIt := clnt.State.Get(CGR_CONNUUID)
if !hasIt {
@@ -43,10 +41,6 @@ func getClientConnId(clnt *rpc2.Client) string {
return uuid.(string)
}
func SMGeneric() *GenericSessionManager {
return smgen
}
func NewGenericSessionManager(cfg *config.SmGenericConfig, rater engine.Connector, cdrsrv engine.Connector, timezone string) *GenericSessionManager {
gsm := &GenericSessionManager{cfg: cfg, rater: rater, cdrsrv: cdrsrv, timezone: timezone, conns: make(map[string]*rpc2.Client), sessions: NewSessions(), connMutex: new(sync.Mutex)}
return gsm

View File

@@ -129,8 +129,17 @@ func (self GenericEvent) GetAnswerTime(fieldName, timezone string) (time.Time, e
return utils.ParseTimeDetectLayout(result, timezone)
}
func (self GenericEvent) GetEndTime() (time.Time, error) {
return nilTime, nil
func (self GenericEvent) GetEndTime(fieldName, timezone string) (time.Time, error) {
var nilTime time.Time
aTime, err := self.GetAnswerTime(utils.META_DEFAULT, timezone)
if err != nil {
return nilTime, err
}
dur, err := self.GetDuration(utils.META_DEFAULT)
if err != nil {
return nilTime, err
}
return aTime.Add(dur), nil
}
func (self GenericEvent) GetDuration(fieldName string) (time.Duration, error) {

View File

@@ -177,8 +177,8 @@ func (kev KamEvent) GetSetupTime(fieldName, timezone string) (time.Time, error)
}
return utils.ParseTimeDetectLayout(sTimeStr, timezone)
}
func (kev KamEvent) GetEndTime() (time.Time, error) {
return utils.ParseTimeDetectLayout(kev[CGR_STOPTIME], config.CgrConfig().DefaultTimezone)
func (kev KamEvent) GetEndTime(fieldName, timezone string) (time.Time, error) {
return utils.ParseTimeDetectLayout(kev[CGR_STOPTIME], timezone)
}
func (kev KamEvent) GetDuration(fieldName string) (time.Duration, error) {
durStr := utils.FirstNonEmpty(kev[fieldName], kev[CGR_DURATION])

View File

@@ -159,9 +159,9 @@ func (osipsev *OsipsEvent) GetAnswerTime(fieldName, timezone string) (time.Time,
}
return utils.ParseTimeDetectLayout(aTimeStr, timezone)
}
func (osipsev *OsipsEvent) GetEndTime() (time.Time, error) {
func (osipsev *OsipsEvent) GetEndTime(fieldName, timezone string) (time.Time, error) {
var nilTime time.Time
aTime, err := osipsev.GetAnswerTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone)
aTime, err := osipsev.GetAnswerTime(utils.META_DEFAULT, timezone)
if err != nil {
return nilTime, err
}
@@ -227,7 +227,7 @@ func (osipsev *OsipsEvent) MissingParameter() bool {
if err != nil || aTime.Equal(nilTime) {
return true
}
endTime, err := osipsev.GetEndTime()
endTime, err := osipsev.GetEndTime(utils.META_DEFAULT, config.CgrConfig().DefaultTimezone)
if err != nil || endTime.Equal(nilTime) {
return true
}

View File

@@ -84,7 +84,7 @@ func TestOsipsEventGetValues(t *testing.T) {
eAnswerTime, _ := utils.ParseTimeDetectLayout("1406370499", "")
dur, _ := osipsEv.GetDuration(utils.META_DEFAULT)
pdd, _ := osipsEv.GetPdd(utils.META_DEFAULT)
endTime, _ := osipsEv.GetEndTime()
endTime, _ := osipsEv.GetEndTime(utils.META_DEFAULT, "")
if osipsEv.GetName() != "E_ACC_CDR" ||
osipsEv.GetCgrId("") != utils.Sha1("ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", setupTime.UTC().String()) ||
osipsEv.GetUUID() != "ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ" ||

View File

@@ -115,7 +115,7 @@ func (s *Session) debitLoop(runIdx int) {
// Stops the debit loop
func (s *Session) Close(ev engine.Event) error {
close(s.stopDebit) // Close the channel so all the sessionRuns listening will be notified
if _, err := ev.GetEndTime(); err != nil {
if _, err := ev.GetEndTime(utils.META_DEFAULT, s.sessionManager.Timezone()); err != nil {
utils.Logger.Err("Error parsing event stop time.")
for idx := range s.sessionRuns {
s.sessionRuns[idx].CallDescriptor.TimeEnd = s.sessionRuns[idx].CallDescriptor.TimeStart.Add(s.sessionRuns[idx].CallDescriptor.DurationIndex)