diff --git a/apier/v1/sessions.go b/apier/v1/sessions.go
index f261016bc..f3d48ab4e 100644
--- a/apier/v1/sessions.go
+++ b/apier/v1/sessions.go
@@ -19,162 +19,86 @@ along with this program. If not, see
package v1
import (
- "github.com/cenkalti/rpc2"
"github.com/cgrates/cgrates/sessions"
"github.com/cgrates/cgrates/utils"
)
-func NewSessionSv1(sm *sessions.SMGeneric) *SessionSv1 {
- return &SessionSv1{SMG: sm}
+func NewSessionSv1(sS *sessions.SessionS) *SessionSv1 {
+ return &SessionSv1{sS: sS}
}
// SessionSv1 exports RPC from SessionSv1
type SessionSv1 struct {
- SMG *sessions.SMGeneric
-}
-
-// Publishes BiJSONRPC methods exported by SessionSv1
-func (ssv1 *SessionSv1) Handlers() map[string]interface{} {
- return map[string]interface{}{
- utils.SessionSv1AuthorizeEvent: ssv1.BiRpcAuthorizeEvent,
- utils.SessionSv1AuthorizeEventWithDigest: ssv1.BiRpcAuthorizeEventWithDigest,
- utils.SessionSv1InitiateSession: ssv1.BiRpcInitiateSession,
- utils.SessionSv1InitiateSessionWithDigest: ssv1.BiRpcInitiateSessionWithDigest,
- utils.SessionSv1UpdateSession: ssv1.BiRpcUpdateSession,
- utils.SessionSv1SyncSessions: ssv1.BiRpcSyncSessions,
- utils.SessionSv1TerminateSession: ssv1.BiRpcTerminateSession,
- utils.SessionSv1ProcessCDR: ssv1.BiRpcProcessCDR,
- utils.SessionSv1ProcessEvent: ssv1.BiRpcProcessEvent,
- utils.SessionSv1GetActiveSessions: ssv1.BiRPCV1GetActiveSessions,
- utils.SessionSv1ForceDisconnect: ssv1.BiRPCV1ForceDisconnect,
- utils.SessionSv1GetPassiveSessions: ssv1.BiRPCV1GetPassiveSessions,
- utils.SessionSv1RegisterInternalBiJSONConn: ssv1.BiRPCv1RegisterInternalBiJSONConn,
- utils.SessionSv1Ping: ssv1.BiRPCPing,
- }
+ Ss *sessions.SessionS
}
func (ssv1 *SessionSv1) AuthorizeEvent(args *sessions.V1AuthorizeArgs,
rply *sessions.V1AuthorizeReply) error {
- return ssv1.SMG.BiRPCv1AuthorizeEvent(nil, args, rply)
+ return ssv1.Ss.BiRPCv1AuthorizeEvent(nil, args, rply)
}
func (ssv1 *SessionSv1) AuthorizeEventWithDigest(args *sessions.V1AuthorizeArgs,
rply *sessions.V1AuthorizeReplyWithDigest) error {
- return ssv1.SMG.BiRPCv1AuthorizeEventWithDigest(nil, args, rply)
+ return ssv1.Ss.BiRPCv1AuthorizeEventWithDigest(nil, args, rply)
}
func (ssv1 *SessionSv1) InitiateSession(args *sessions.V1InitSessionArgs,
rply *sessions.V1InitSessionReply) error {
- return ssv1.SMG.BiRPCv1InitiateSession(nil, args, rply)
+ return ssv1.Ss.BiRPCv1InitiateSession(nil, args, rply)
}
func (ssv1 *SessionSv1) InitiateSessionWithDigest(args *sessions.V1InitSessionArgs,
rply *sessions.V1InitReplyWithDigest) error {
- return ssv1.SMG.BiRPCv1InitiateSessionWithDigest(nil, args, rply)
+ return ssv1.Ss.BiRPCv1InitiateSessionWithDigest(nil, args, rply)
}
func (ssv1 *SessionSv1) UpdateSession(args *sessions.V1UpdateSessionArgs,
rply *sessions.V1UpdateSessionReply) error {
- return ssv1.SMG.BiRPCv1UpdateSession(nil, args, rply)
+ return ssv1.Ss.BiRPCv1UpdateSession(nil, args, rply)
}
func (ssv1 *SessionSv1) SyncSessions(args *string,
rply *string) error {
- return ssv1.SMG.BiRPCv1SyncSessions(nil, "", rply)
+ return ssv1.Ss.BiRPCv1SyncSessions(nil, "", rply)
}
func (ssv1 *SessionSv1) TerminateSession(args *sessions.V1TerminateSessionArgs,
rply *string) error {
- return ssv1.SMG.BiRPCv1TerminateSession(nil, args, rply)
+ return ssv1.Ss.BiRPCv1TerminateSession(nil, args, rply)
}
func (ssv1 *SessionSv1) ProcessCDR(cgrEv *utils.CGREvent, rply *string) error {
- return ssv1.SMG.BiRPCv1ProcessCDR(nil, cgrEv, rply)
+ return ssv1.Ss.BiRPCv1ProcessCDR(nil, cgrEv, rply)
}
func (ssv1 *SessionSv1) ProcessEvent(args *sessions.V1ProcessEventArgs,
rply *sessions.V1ProcessEventReply) error {
- return ssv1.SMG.BiRPCv1ProcessEvent(nil, args, rply)
+ return ssv1.Ss.BiRPCv1ProcessEvent(nil, args, rply)
}
-func (ssv1 *SessionSv1) GetActiveSessions(args map[string]string, rply *[]*sessions.ActiveSession) error {
- return ssv1.SMG.BiRPCV1GetActiveSessions(nil, args, rply)
-}
-
-func (ssv1 *SessionSv1) ForceDisconnect(args map[string]string, rply *string) error {
- return ssv1.SMG.BiRPCV1ForceDisconnect(nil, args, rply)
-}
-
-func (ssv1 *SessionSv1) GetPassiveSessions(args map[string]string, rply *[]*sessions.ActiveSession) error {
- return ssv1.SMG.BiRPCV1GetPassiveSessions(nil, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcAuthorizeEvent(clnt *rpc2.Client, args *sessions.V1AuthorizeArgs,
- rply *sessions.V1AuthorizeReply) error {
- return ssv1.SMG.BiRPCv1AuthorizeEvent(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcAuthorizeEventWithDigest(clnt *rpc2.Client, args *sessions.V1AuthorizeArgs,
- rply *sessions.V1AuthorizeReplyWithDigest) error {
- return ssv1.SMG.BiRPCv1AuthorizeEventWithDigest(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcInitiateSession(clnt *rpc2.Client, args *sessions.V1InitSessionArgs,
- rply *sessions.V1InitSessionReply) error {
- return ssv1.SMG.BiRPCv1InitiateSession(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcInitiateSessionWithDigest(clnt *rpc2.Client, args *sessions.V1InitSessionArgs,
- rply *sessions.V1InitReplyWithDigest) error {
- return ssv1.SMG.BiRPCv1InitiateSessionWithDigest(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcUpdateSession(clnt *rpc2.Client, args *sessions.V1UpdateSessionArgs,
- rply *sessions.V1UpdateSessionReply) error {
- return ssv1.SMG.BiRPCv1UpdateSession(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcSyncSessions(clnt *rpc2.Client, args *string,
- rply *string) error {
- return ssv1.SMG.BiRPCv1SyncSessions(clnt, "", rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcTerminateSession(clnt *rpc2.Client, args *sessions.V1TerminateSessionArgs,
- rply *string) error {
- return ssv1.SMG.BiRPCv1TerminateSession(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcProcessCDR(clnt *rpc2.Client, cgrEv *utils.CGREvent, rply *string) error {
- return ssv1.SMG.BiRPCv1ProcessCDR(clnt, cgrEv, rply)
-}
-
-func (ssv1 *SessionSv1) BiRpcProcessEvent(clnt *rpc2.Client, args *sessions.V1ProcessEventArgs,
- rply *sessions.V1ProcessEventReply) error {
- return ssv1.SMG.BiRPCv1ProcessEvent(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRPCV1GetActiveSessions(clnt *rpc2.Client, args map[string]string,
+func (ssv1 *SessionSv1) GetActiveSessions(args map[string]string,
rply *[]*sessions.ActiveSession) error {
- return ssv1.SMG.BiRPCV1GetActiveSessions(clnt, args, rply)
+ return ssv1.Ss.BiRPCv1GetActiveSessions(nil, args, rply)
}
-func (ssv1 *SessionSv1) BiRPCV1ForceDisconnect(clnt *rpc2.Client, args map[string]string,
- rply *string) error {
- return ssv1.SMG.BiRPCV1ForceDisconnect(clnt, args, rply)
-}
-
-func (ssv1 *SessionSv1) BiRPCV1GetPassiveSessions(clnt *rpc2.Client, args map[string]string,
+func (ssv1 *SessionSv1) GetActiveSessionsCount(args map[string]string,
rply *[]*sessions.ActiveSession) error {
- return ssv1.SMG.BiRPCV1GetPassiveSessions(clnt, args, rply)
+ return ssv1.Ss.BiRPCv1GetActiveSessionsCount(nil, args, rply)
}
-func (ssv1 *SessionSv1) BiRPCv1RegisterInternalBiJSONConn(clnt *rpc2.Client, args string,
+func (ssv1 *SessionSv1) ForceDisconnect(args map[string]string,
rply *string) error {
- return ssv1.SMG.BiRPCv1RegisterInternalBiJSONConn(clnt, args, rply)
+ return ssv1.Ss.BiRPCv1ForceDisconnect(nil, args, rply)
}
-func (ssv1 *SessionSv1) BiRPCPing(clnt *rpc2.Client, ign string, reply *string) error {
- return ssv1.Ping(ign, reply)
+func (ssv1 *SessionSv1) GetPassiveSessions(args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetPassiveSessions(nil, args, rply)
+}
+
+func (ssv1 *SessionSv1) GetPassiveSessionsCount(args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetPassiveSessionsCount(nil, args, rply)
}
func (ssv1 *SessionSv1) Ping(ign string, reply *string) error {
diff --git a/apier/v1/sessionsbirpc.go b/apier/v1/sessionsbirpc.go
new file mode 100644
index 000000000..e1d885289
--- /dev/null
+++ b/apier/v1/sessionsbirpc.go
@@ -0,0 +1,127 @@
+/*
+Real-time Online/Offline Charging System (OCS) 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
+*/
+
+package v1
+
+import (
+ "github.com/cenkalti/rpc2"
+ "github.com/cgrates/cgrates/sessions"
+ "github.com/cgrates/cgrates/utils"
+)
+
+// Bidirectional JSON methods following
+func (ssv1 *SessionSv1) Handlers() map[string]interface{} {
+ return map[string]interface{}{
+ utils.SessionSv1GetActiveSessions: ssv1.BiRPCv1GetActiveSessions,
+ utils.SessionSv1GetActiveSessionsCount: ssv1.BiRPCv1GetActiveSessionsCount,
+ utils.SessionSv1GetPassiveSessions: ssv1.BiRPCv1GetPassiveSessions,
+ utils.SessionSv1GetPassiveSessionsCount: ssv1.BiRPCv1GetPassiveSessionsCount,
+
+ utils.SessionSv1AuthorizeEvent: ssv1.BiRPCv1AuthorizeEvent,
+ utils.SessionSv1AuthorizeEventWithDigest: ssv1.BiRPCv1AuthorizeEventWithDigest,
+ utils.SessionSv1InitiateSession: ssv1.BiRPCv1InitiateSession,
+ utils.SessionSv1InitiateSessionWithDigest: ssv1.BiRPCv1InitiateSessionWithDigest,
+ utils.SessionSv1UpdateSession: ssv1.BiRPCv1UpdateSession,
+ utils.SessionSv1SyncSessions: ssv1.BiRPCv1SyncSessions,
+ utils.SessionSv1TerminateSession: ssv1.BiRPCv1TerminateSession,
+ utils.SessionSv1ProcessCDR: ssv1.BiRPCv1ProcessCDR,
+ utils.SessionSv1ProcessEvent: ssv1.BiRPCv1ProcessEvent,
+
+ utils.SessionSv1ForceDisconnect: ssv1.BiRPCv1ForceDisconnect,
+ utils.SessionSv1RegisterInternalBiJSONConn: ssv1.BiRPCv1RegisterInternalBiJSONConn,
+ utils.SessionSv1Ping: ssv1.BiRPCPing,
+ }
+}
+
+func (ssv1 *SessionSv1) BiRPCv1AuthorizeEvent(clnt *rpc2.Client, args *sessions.V1AuthorizeArgs,
+ rply *sessions.V1AuthorizeReply) error {
+ return ssv1.Ss.BiRPCv1AuthorizeEvent(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1AuthorizeEventWithDigest(clnt *rpc2.Client, args *sessions.V1AuthorizeArgs,
+ rply *sessions.V1AuthorizeReplyWithDigest) error {
+ return ssv1.Ss.BiRPCv1AuthorizeEventWithDigest(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1InitiateSession(clnt *rpc2.Client, args *sessions.V1InitSessionArgs,
+ rply *sessions.V1InitSessionReply) error {
+ return ssv1.Ss.BiRPCv1InitiateSession(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1InitiateSessionWithDigest(clnt *rpc2.Client, args *sessions.V1InitSessionArgs,
+ rply *sessions.V1InitReplyWithDigest) error {
+ return ssv1.Ss.BiRPCv1InitiateSessionWithDigest(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1UpdateSession(clnt *rpc2.Client, args *sessions.V1UpdateSessionArgs,
+ rply *sessions.V1UpdateSessionReply) error {
+ return ssv1.Ss.BiRPCv1UpdateSession(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1SyncSessions(clnt *rpc2.Client, args *string,
+ rply *string) error {
+ return ssv1.Ss.BiRPCv1SyncSessions(clnt, "", rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1TerminateSession(clnt *rpc2.Client, args *sessions.V1TerminateSessionArgs,
+ rply *string) error {
+ return ssv1.Ss.BiRPCv1TerminateSession(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1ProcessCDR(clnt *rpc2.Client, cgrEv *utils.CGREvent, rply *string) error {
+ return ssv1.Ss.BiRPCv1ProcessCDR(clnt, cgrEv, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1ProcessEvent(clnt *rpc2.Client, args *sessions.V1ProcessEventArgs,
+ rply *sessions.V1ProcessEventReply) error {
+ return ssv1.Ss.BiRPCv1ProcessEvent(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1GetActiveSessions(clnt *rpc2.Client, args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetActiveSessions(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1GetActiveSessionsCount(clnt *rpc2.Client, args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetActiveSessionsCount(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1GetPassiveSessions(clnt *rpc2.Client, args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetPassiveSessions(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1GetPassiveSessionsCount(clnt *rpc2.Client, args map[string]string,
+ rply *[]*sessions.ActiveSession) error {
+ return ssv1.Ss.BiRPCv1GetPassiveSessionsCount(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1ForceDisconnect(clnt *rpc2.Client, args map[string]string,
+ rply *string) error {
+ return ssv1.Ss.BiRPCv1ForceDisconnect(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCv1RegisterInternalBiJSONConn(clnt *rpc2.Client, args string,
+ rply *string) error {
+ return ssv1.Ss.BiRPCv1RegisterInternalBiJSONConn(clnt, args, rply)
+}
+
+func (ssv1 *SessionSv1) BiRPCPing(clnt *rpc2.Client, ign string, reply *string) error {
+ return ssv1.Ping(ign, reply)
+}
diff --git a/apier/v1/smg.go b/apier/v1/smg.go
new file mode 100644
index 000000000..b131b40eb
--- /dev/null
+++ b/apier/v1/smg.go
@@ -0,0 +1,63 @@
+/*
+Real-time Online/Offline Charging System (OCS) 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
+*/
+
+package v1
+
+import (
+ "github.com/cgrates/cgrates/sessions"
+)
+
+func NewSMGenericV1(sS *sessions.SessionS) *SMGenericV1 {
+ return &SMGenericV1{Ss: sS}
+}
+
+// Exports RPC from SMGeneric
+// DEPRECATED, use SessionSv1 instead
+type SMGenericV1 struct {
+ Ss *sessions.SessionS
+}
+
+// Returns MaxUsage (for calls in seconds), -1 for no limit
+func (smgv1 *SMGenericV1) GetMaxUsage(ev map[string]interface{},
+ maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1GetMaxUsage(nil, ev, maxUsage)
+}
+
+// Called on session start, returns the maximum number of seconds the session can last
+func (smgv1 *SMGenericV1) InitiateSession(ev map[string]interface{},
+ maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1InitiateSession(nil, ev, maxUsage)
+}
+
+// Interim updates, returns remaining duration from the rater
+func (smgv1 *SMGenericV1) UpdateSession(ev map[string]interface{},
+ maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1UpdateSession(nil, ev, maxUsage)
+}
+
+// Called on session end, should stop debit loop
+func (smgv1 *SMGenericV1) TerminateSession(ev map[string]interface{},
+ reply *string) error {
+ return smgv1.Ss.BiRPCV1TerminateSession(nil, ev, reply)
+}
+
+// Called on session end, should send the CDR to CDRS
+func (smgv1 *SMGenericV1) ProcessCDR(ev map[string]interface{},
+ reply *string) error {
+ return smgv1.Ss.BiRPCV1ProcessCDR(nil, ev, reply)
+}
diff --git a/apier/v1/smgbirpc.go b/apier/v1/smgbirpc.go
new file mode 100644
index 000000000..7cd2ed611
--- /dev/null
+++ b/apier/v1/smgbirpc.go
@@ -0,0 +1,64 @@
+/*
+Real-time Online/Offline Charging System (OCS) 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
+*/
+
+package v1
+
+import (
+ "github.com/cenkalti/rpc2"
+)
+
+// Publishes methods exported by SMGenericV1 as SMGenericV1 (so we can handle standard RPC methods via birpc socket)
+func (smgv1 *SMGenericV1) Handlers() map[string]interface{} {
+ return map[string]interface{}{
+ "SMGenericV1.GetMaxUsage": smgv1.BiRPCV1GetMaxUsage,
+ "SMGenericV1.InitiateSession": smgv1.BiRPCV1InitiateSession,
+ "SMGenericV1.UpdateSession": smgv1.BiRPCV1UpdateSession,
+ "SMGenericV1.TerminateSession": smgv1.BiRPCV1TerminateSession,
+ "SMGenericV1.ProcessCDR": smgv1.BiRPCV1ProcessCDR,
+ }
+}
+
+/// Returns MaxUsage (for calls in seconds), -1 for no limit
+func (smgv1 *SMGenericV1) BiRPCV1GetMaxUsage(clnt *rpc2.Client,
+ ev map[string]interface{}, maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1GetMaxUsage(clnt, ev, maxUsage)
+}
+
+// Called on session start, returns the maximum number of seconds the session can last
+func (smgv1 *SMGenericV1) BiRPCV1InitiateSession(clnt *rpc2.Client,
+ ev map[string]interface{}, maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1InitiateSession(clnt, ev, maxUsage)
+}
+
+// Interim updates, returns remaining duration from the rater
+func (smgv1 *SMGenericV1) BiRPCV1UpdateSession(clnt *rpc2.Client,
+ ev map[string]interface{}, maxUsage *float64) error {
+ return smgv1.Ss.BiRPCV1UpdateSession(clnt, ev, maxUsage)
+}
+
+// Called on session end, should stop debit loop
+func (smgv1 *SMGenericV1) BiRPCV1TerminateSession(clnt *rpc2.Client,
+ ev map[string]interface{}, reply *string) error {
+ return smgv1.Ss.BiRPCV1TerminateSession(clnt, ev, reply)
+}
+
+// Called on session end, should send the CDR to CDRS
+func (smgv1 *SMGenericV1) BiRPCV1ProcessCDR(clnt *rpc2.Client,
+ ev map[string]interface{}, reply *string) error {
+ return smgv1.Ss.BiRPCV1ProcessCDR(clnt, ev, reply)
+}
diff --git a/apier/v1/smgenericbirpcv1.go b/apier/v1/smgenericbirpcv1.go
deleted file mode 100644
index 0405e553f..000000000
--- a/apier/v1/smgenericbirpcv1.go
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-Real-time Online/Offline Charging System (OCS) 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
-*/
-
-package v1
-
-import (
- "github.com/cenkalti/rpc2"
- "github.com/cgrates/cgrates/sessions"
-)
-
-func NewSMGenericBiRpcV1(sm *sessions.SMGeneric) *SMGenericBiRpcV1 {
- return &SMGenericBiRpcV1{sm: sm}
-}
-
-type SMGenericBiRpcV1 struct {
- sm *sessions.SMGeneric
-}
-
-// Publishes methods exported by SMGenericBiRpcV1 as SMGenericV1 (so we can handle standard RPC methods via birpc socket)
-func (self *SMGenericBiRpcV1) Handlers() map[string]interface{} {
- return map[string]interface{}{
- "SMGenericV1.GetMaxUsage": self.GetMaxUsage,
- "SMGenericV1.InitiateSession": self.InitiateSession,
- "SMGenericV1.UpdateSession": self.UpdateSession,
- "SMGenericV1.TerminateSession": self.TerminateSession,
- "SMGenericV1.ChargeEvent": self.ChargeEvent,
- "SMGenericV1.ProcessCDR": self.ProcessCDR,
- "SMGenericV1.GetActiveSessions": self.GetActiveSessions,
- "SMGenericV1.GetActiveSessionsCount": self.GetActiveSessionsCount,
- "SMGenericV1.GetPassiveSessions": self.GetPassiveSessions,
- "SMGenericV1.GetPassiveSessionsCount": self.GetPassiveSessionsCount,
- "SMGenericV1.ReplicateActiveSessions": self.ReplicateActiveSessions,
- }
-}
-
-/// Returns MaxUsage (for calls in seconds), -1 for no limit
-func (self *SMGenericBiRpcV1) GetMaxUsage(clnt *rpc2.Client,
- ev map[string]interface{}, maxUsage *float64) error {
- return self.sm.BiRPCV1GetMaxUsage(clnt, ev, maxUsage)
-}
-
-// Called on session start, returns the maximum number of seconds the session can last
-func (self *SMGenericBiRpcV1) InitiateSession(clnt *rpc2.Client,
- ev map[string]interface{}, maxUsage *float64) error {
- return self.sm.BiRPCV1InitiateSession(clnt, ev, maxUsage)
-}
-
-// Interim updates, returns remaining duration from the rater
-func (self *SMGenericBiRpcV1) UpdateSession(clnt *rpc2.Client,
- ev map[string]interface{}, maxUsage *float64) error {
- return self.sm.BiRPCV1UpdateSession(clnt, ev, maxUsage)
-}
-
-// Called on session end, should stop debit loop
-func (self *SMGenericBiRpcV1) TerminateSession(clnt *rpc2.Client,
- ev map[string]interface{}, reply *string) error {
- return self.sm.BiRPCV1TerminateSession(clnt, ev, reply)
-}
-
-// Called on individual Events (eg SMS)
-func (self *SMGenericBiRpcV1) ChargeEvent(clnt *rpc2.Client,
- ev map[string]interface{}, maxUsage *float64) error {
- return self.sm.BiRPCV1ChargeEvent(clnt, ev, maxUsage)
-}
-
-// Called on session end, should send the CDR to CDRS
-func (self *SMGenericBiRpcV1) ProcessCDR(clnt *rpc2.Client,
- ev map[string]interface{}, reply *string) error {
- return self.sm.BiRPCV1ProcessCDR(clnt, ev, reply)
-}
-
-func (self *SMGenericBiRpcV1) GetActiveSessions(clnt *rpc2.Client,
- attrs map[string]string, reply *[]*sessions.ActiveSession) error {
- return self.sm.BiRPCV1GetActiveSessions(clnt, attrs, reply)
-}
-
-func (self *SMGenericBiRpcV1) GetActiveSessionsCount(clnt *rpc2.Client,
- attrs map[string]string, reply *int) error {
- return self.sm.BiRPCV1GetActiveSessionsCount(clnt, attrs, reply)
-}
-
-func (self *SMGenericBiRpcV1) GetPassiveSessions(clnt *rpc2.Client,
- attrs map[string]string, reply *[]*sessions.ActiveSession) error {
- return self.sm.BiRPCV1GetPassiveSessions(clnt, attrs, reply)
-}
-
-func (self *SMGenericBiRpcV1) GetPassiveSessionsCount(clnt *rpc2.Client,
- attrs map[string]string, reply *int) error {
- return self.sm.BiRPCV1GetPassiveSessionsCount(clnt, attrs, reply)
-}
-
-func (self *SMGenericBiRpcV1) ReplicateActiveSessions(clnt *rpc2.Client,
- args sessions.ArgsReplicateSessions, reply *string) error {
- return self.sm.BiRPCV1ReplicateActiveSessions(clnt, args, reply)
-}
-
-func (self *SMGenericBiRpcV1) ReplicatePassiveSessions(clnt *rpc2.Client,
- args sessions.ArgsReplicateSessions, reply *string) error {
- return self.sm.BiRPCV1ReplicateActiveSessions(clnt, args, reply)
-}
diff --git a/apier/v1/smgenericv1.go b/apier/v1/smgenericv1.go
deleted file mode 100644
index f7da7a31d..000000000
--- a/apier/v1/smgenericv1.go
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-Real-time Online/Offline Charging System (OCS) 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
-*/
-
-package v1
-
-import (
- "reflect"
- "strings"
-
- "github.com/cgrates/cgrates/sessions"
- "github.com/cgrates/cgrates/utils"
- "github.com/cgrates/rpcclient"
-)
-
-func NewSMGenericV1(sm *sessions.SMGeneric) *SMGenericV1 {
- return &SMGenericV1{SMG: sm}
-}
-
-// Exports RPC from SMGeneric
-type SMGenericV1 struct {
- SMG *sessions.SMGeneric
-}
-
-// Returns MaxUsage (for calls in seconds), -1 for no limit
-func (self *SMGenericV1) GetMaxUsage(ev map[string]interface{},
- maxUsage *float64) error {
- return self.SMG.BiRPCV1GetMaxUsage(nil, ev, maxUsage)
-}
-
-// Called on session start, returns the maximum number of seconds the session can last
-func (self *SMGenericV1) InitiateSession(ev map[string]interface{},
- maxUsage *float64) error {
- return self.SMG.BiRPCV1InitiateSession(nil, ev, maxUsage)
-}
-
-// Interim updates, returns remaining duration from the rater
-func (self *SMGenericV1) UpdateSession(ev map[string]interface{},
- maxUsage *float64) error {
- return self.SMG.BiRPCV1UpdateSession(nil, ev, maxUsage)
-}
-
-// Called on session end, should stop debit loop
-func (self *SMGenericV1) TerminateSession(ev map[string]interface{},
- reply *string) error {
- return self.SMG.BiRPCV1TerminateSession(nil, ev, reply)
-}
-
-// Called on individual Events (eg SMS)
-func (self *SMGenericV1) ChargeEvent(ev map[string]interface{},
- maxUsage *float64) error {
- return self.SMG.BiRPCV1ChargeEvent(nil, ev, maxUsage)
-}
-
-// Called on session end, should send the CDR to CDRS
-func (self *SMGenericV1) ProcessCDR(ev map[string]interface{},
- reply *string) error {
- return self.SMG.BiRPCV1ProcessCDR(nil, ev, reply)
-}
-
-func (self *SMGenericV1) GetActiveSessions(attrs map[string]string,
- reply *[]*sessions.ActiveSession) error {
- return self.SMG.BiRPCV1GetActiveSessions(nil, attrs, reply)
-}
-
-func (self *SMGenericV1) GetActiveSessionsCount(attrs map[string]string,
- reply *int) error {
- return self.SMG.BiRPCV1GetActiveSessionsCount(nil, attrs, reply)
-}
-
-func (self *SMGenericV1) GetPassiveSessions(attrs map[string]string,
- reply *[]*sessions.ActiveSession) error {
- return self.SMG.BiRPCV1GetPassiveSessions(nil, attrs, reply)
-}
-
-func (self *SMGenericV1) GetPassiveSessionsCount(attrs map[string]string,
- reply *int) error {
- return self.SMG.BiRPCV1GetPassiveSessionsCount(nil, attrs, reply)
-}
-
-func (self *SMGenericV1) SetPassiveSessions(args sessions.ArgsSetPassiveSessions,
- reply *string) error {
- return self.SMG.BiRPCV1SetPassiveSessions(nil, args, reply)
-}
-
-func (self *SMGenericV1) ReplicateActiveSessions(args sessions.ArgsReplicateSessions,
- reply *string) error {
- return self.SMG.BiRPCV1ReplicateActiveSessions(nil, args, reply)
-}
-
-func (self *SMGenericV1) ReplicatePassiveSessions(args sessions.ArgsReplicateSessions,
- reply *string) error {
- return self.SMG.BiRPCV1ReplicatePassiveSessions(nil, args, reply)
-}
-
-// rpcclient.RpcClientConnection interface
-func (self *SMGenericV1) Call(serviceMethod string,
- args interface{}, reply interface{}) error {
- methodSplit := strings.Split(serviceMethod, ".")
- if len(methodSplit) != 2 {
- return rpcclient.ErrUnsupporteServiceMethod
- }
- method := reflect.ValueOf(self).MethodByName(methodSplit[1])
- if !method.IsValid() {
- return rpcclient.ErrUnsupporteServiceMethod
- }
- params := []reflect.Value{reflect.ValueOf(args), reflect.ValueOf(reply)}
- ret := method.Call(params)
- if len(ret) != 1 {
- return utils.ErrServerError
- }
- if ret[0].Interface() == nil {
- return nil
- }
- err, ok := ret[0].Interface().(error)
- if !ok {
- return utils.ErrServerError
- }
- return err
-}
diff --git a/sessions/sessions.go b/sessions/sessions.go
index 2b2a14540..4437785e9 100644
--- a/sessions/sessions.go
+++ b/sessions/sessions.go
@@ -2341,8 +2341,8 @@ func (sS *SessionS) BiRPCv1SyncSessions(clnt rpcclient.RpcClientConnection,
return nil
}
-// BiRPCV1ForceDisconnect will force disconnecting sessions matching sessions
-func (sS *SessionS) BiRPCV1ForceDisconnect(clnt rpcclient.RpcClientConnection,
+// BiRPCv1ForceDisconnect will force disconnecting sessions matching sessions
+func (sS *SessionS) BiRPCv1ForceDisconnect(clnt rpcclient.RpcClientConnection,
fltr map[string]string, reply *string) error {
for fldName, fldVal := range fltr {
if fldVal == "" {