mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 02:26:26 +05:00
Skel of FileCSVee
This commit is contained in:
14
ees/ee.go
14
ees/ee.go
@@ -19,15 +19,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package ees
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
type EventExporter interface {
|
||||
ExportEvent(cgrEv *utils.CGREvent) (err error)
|
||||
ExportEvent(cgrEv *utils.CGREvent) (err error) // called on each event to be exported
|
||||
OnEvicted(itmID string, value interface{}) // called when the exporter needs to terminate
|
||||
}
|
||||
|
||||
// NewEventExporter produces exporters
|
||||
func NewEventExporter(eeCfg *config.EventExporterCfg) (ee EventExporter, err error) {
|
||||
return
|
||||
func NewEventExporter(cgrCfg *config.CGRConfig, cfgIdx int) (ee EventExporter, err error) {
|
||||
switch cgrCfg.EEsCfg().Exporters[cfgIdx].Type {
|
||||
case utils.MetaFileCSV:
|
||||
return NewFileCSVee(cgrCfg, cfgIdx)
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported exporter type: <%s>", cgrCfg.EEsCfg().Exporters[cfgIdx].Type)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ func (eeS *EEService) V1ProcessEvent(cgrEv *utils.CGREventWithOpts) (err error)
|
||||
eeS.cfg.RLocks(config.EEsJson)
|
||||
defer eeS.cfg.RUnlocks(config.EEsJson)
|
||||
|
||||
for _, eeCfg := range eeS.cfg.EEsCfg().Exporters {
|
||||
for cfgIdx, eeCfg := range eeS.cfg.EEsCfg().Exporters {
|
||||
|
||||
if eeCfg.Flags.GetBool(utils.MetaAttributes) {
|
||||
var rplyEv engine.AttrSProcessEventReply
|
||||
@@ -114,7 +114,7 @@ func (eeS *EEService) V1ProcessEvent(cgrEv *utils.CGREventWithOpts) (err error)
|
||||
ee, has := eeS.ees[eeCfg.ID]
|
||||
eeS.eesMux.RUnlock()
|
||||
if !has {
|
||||
if ee, err = NewEventExporter(eeCfg); err != nil {
|
||||
if ee, err = NewEventExporter(eeS.cfg, cfgIdx); err != nil {
|
||||
return
|
||||
}
|
||||
eeS.ees[eeCfg.ID] = ee
|
||||
|
||||
45
ees/filecsv.go
Normal file
45
ees/filecsv.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Real-time Online/Offline Charging System (OerS) for Telecom & ISP environments
|
||||
Copyright (C) ITsysCOM GmbH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
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 even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package ees
|
||||
|
||||
import (
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
func NewFileCSVee(cgrCfg *config.CGRConfig, cfgIdx int) (fCsv *FileCSVee, err error) {
|
||||
fCsv = &FileCSVee{cgrCfg: cgrCfg, cfgIdx: cfgIdx}
|
||||
return
|
||||
}
|
||||
|
||||
// FileCSVee implements EventExporter interface for .csv files
|
||||
type FileCSVee struct {
|
||||
cgrCfg *config.CGRConfig
|
||||
cfgIdx int // index of config instance within ERsCfg.Readers
|
||||
}
|
||||
|
||||
// OnEvicted implements EventExporter
|
||||
func (fCsv *FileCSVee) OnEvicted(itmID string, value interface{}) {
|
||||
return
|
||||
}
|
||||
|
||||
// ExportEvent implements EventExporter
|
||||
func (fCsv *FileCSVee) ExportEvent(cgrEv *utils.CGREvent) (err error) {
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user