mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Updated KamailioAgent GetActiveSessionIDs API
This commit is contained in:
committed by
Dan Christian Bogos
parent
5830d9fcf0
commit
0fa2ad793e
@@ -362,8 +362,8 @@ func (sma *AsteriskAgent) V1GetActiveSessionIDs(ignParam string,
|
||||
for _, mpIface := range slMpIface {
|
||||
sIDs = append(sIDs, &sessions.SessionID{
|
||||
OriginHost: strings.Split(sma.cgrCfg.AsteriskAgentCfg().AsteriskConns[sma.astConnIdx].Address, ":")[0],
|
||||
OriginID: mpIface["id"].(string)},
|
||||
)
|
||||
OriginID: utils.IfaceAsString(mpIface["id"]),
|
||||
})
|
||||
}
|
||||
*sessionIDs = sIDs
|
||||
return nil
|
||||
|
||||
@@ -423,12 +423,11 @@ func (fsa *FSsessions) V1GetActiveSessionIDs(_ string,
|
||||
utils.FreeSWITCHAgent, err.Error(), connIdx))
|
||||
continue
|
||||
}
|
||||
aChans := fsock.MapChanData(activeChanStr)
|
||||
for _, fsAChan := range aChans {
|
||||
for _, fsAChan := range fsock.MapChanData(activeChanStr) {
|
||||
sIDs = append(sIDs, &sessions.SessionID{
|
||||
OriginHost: fsa.cfg.EventSocketConns[connIdx].Alias,
|
||||
OriginID: fsAChan["uuid"]},
|
||||
)
|
||||
OriginID: fsAChan["uuid"],
|
||||
})
|
||||
}
|
||||
}
|
||||
*sessionIDs = sIDs
|
||||
|
||||
@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package agents
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
@@ -398,22 +397,29 @@ func (ka *KamailioAgent) V1DisconnectSession(args utils.AttrDisconnectSession, r
|
||||
|
||||
// V1GetActiveSessionIDs returns a list of CGRIDs based on active sessions from agent
|
||||
func (ka *KamailioAgent) V1GetActiveSessionIDs(ignParam string, sessionIDs *[]*sessions.SessionID) (err error) {
|
||||
for _, evapi := range ka.conns {
|
||||
kamEv, _ := json.Marshal(map[string]string{utils.Event: CGR_DLG_LIST})
|
||||
if err = evapi.Send(string(kamEv)); err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("<%s> failed sending event, error %s",
|
||||
utils.KamailioAgent, err.Error()))
|
||||
return
|
||||
kamEv := utils.ToJSON(map[string]string{utils.Event: CGR_DLG_LIST})
|
||||
var sentDLG int
|
||||
for i, evapi := range ka.conns {
|
||||
if err := evapi.Send(kamEv); err != nil {
|
||||
utils.Logger.Err(fmt.Sprintf("<%s> failed sending event to connIdx<%v>, error %s",
|
||||
utils.KamailioAgent, i, err.Error()))
|
||||
continue
|
||||
}
|
||||
sentDLG++
|
||||
}
|
||||
for range ka.conns {
|
||||
if sentDLG == 0 {
|
||||
return
|
||||
}
|
||||
tm := time.NewTimer(config.CgrConfig().GeneralCfg().ReplyTimeout)
|
||||
for i := 0; i < sentDLG; i++ {
|
||||
select {
|
||||
case sIDs := <-ka.activeSessionIDs:
|
||||
*sessionIDs = append(*sessionIDs, sIDs...)
|
||||
case <-time.After(5 * time.Second):
|
||||
case <-tm.C:
|
||||
return errors.New("timeout executing dialog list")
|
||||
}
|
||||
}
|
||||
tm.Stop()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user