updated fsock library && fsagent

This commit is contained in:
gezimblliku
2024-08-21 09:22:23 +02:00
committed by Dan Christian Bogos
parent a07a8dd952
commit 94bde601b0
4 changed files with 29 additions and 25 deletions

View File

@@ -283,33 +283,34 @@ func (sm *FSsessions) onChannelHangupComplete(fsev FSEvent, connIdx int) {
// Connects to the freeswitch mod_event_socket server and starts
// listening for events.
func (sm *FSsessions) Connect() error {
func (fsa *FSsessions) Connect() error {
eventFilters := map[string][]string{"Call-Direction": {"inbound"}}
errChan := make(chan error)
for connIdx, connCfg := range sm.cfg.EventSocketConns {
fSock, err := fsock.NewFSock(connCfg.Address, connCfg.Password, connCfg.Reconnects, 0, utils.FibDuration,
sm.createHandlers(), eventFilters, utils.Logger, connIdx, true)
connErr := make(chan error)
for connIdx, connCfg := range fsa.cfg.EventSocketConns {
fSock, err := fsock.NewFSock(
connCfg.Address, connCfg.Password,
connCfg.Reconnects, 0,
0, utils.FibDuration,
fsa.createHandlers(), eventFilters,
utils.Logger, connIdx, true, connErr)
if err != nil {
return err
}
if !fSock.Connected() {
return errors.New("could not connect to FreeSWITCH")
return errors.New("Could not connect to FreeSWITCH")
}
sm.conns[connIdx] = fSock
fsa.conns[connIdx] = fSock
utils.Logger.Info(fmt.Sprintf("<%s> successfully connected to FreeSWITCH at: <%s>", utils.FreeSWITCHAgent, connCfg.Address))
go func(fsock *fsock.FSock) { // Start reading in own goroutine, return on error
if err := fsock.ReadEvents(); err != nil {
errChan <- err
}
}(fSock)
fsSenderPool := fsock.NewFSockPool(5, connCfg.Address, connCfg.Password, 1, sm.cfg.MaxWaitConnection, 0, utils.FibDuration,
make(map[string][]func(string, int)), make(map[string][]string), utils.Logger.GetSyslog(), connIdx, true)
fsSenderPool := fsock.NewFSockPool(5, connCfg.Address, connCfg.Password, 1, fsa.cfg.MaxWaitConnection,
0, 0, utils.FibDuration,
make(map[string][]func(string, int)), make(map[string][]string),
utils.Logger, connIdx, true, nil)
if fsSenderPool == nil {
return errors.New("cannot connect FreeSWITCH senders pool")
return errors.New("Cannot connect FreeSWITCH senders pool")
}
sm.senderPools[connIdx] = fsSenderPool
fsa.senderPools[connIdx] = fsSenderPool
}
err := <-errChan // Will keep the Connect locked until the first error in one of the connections
err := <-connErr // Will keep the Connect locked until the first error in one of the connections
return err
}
@@ -419,14 +420,16 @@ func (fsa *FSsessions) V1GetActiveSessionIDs(ignParam 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"],
})
}
}
if len(sIDs) == 0 {
return utils.ErrNoActiveSession
}
*sessionIDs = sIDs
return
}

View File

@@ -23,6 +23,7 @@ import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/sessions"
"github.com/cgrates/cgrates/utils"
"github.com/cgrates/fsock"
)
@@ -127,7 +128,7 @@ func TestFSsessionsV1GetActiveSessionIDsErrorHandling(t *testing.T) {
sm := &FSsessions{}
var sessionIDs []*sessions.SessionID
err := sm.V1GetActiveSessionIDs("", &sessionIDs)
if err != nil {
if err == nil || err != utils.ErrNoActiveSession {
t.Errorf("Unexpected error: %v", err)
}
if len(sessionIDs) != 0 {

2
go.mod
View File

@@ -12,7 +12,7 @@ require (
github.com/cenkalti/rpc2 v1.0.3
github.com/cgrates/aringo v0.0.0-20220525160735-b5990313d99e
github.com/cgrates/birpc v1.3.1-0.20211117095917-5b0ff29f3084
github.com/cgrates/fsock v0.0.0-20231222174700-7257ce894e23
github.com/cgrates/fsock v0.0.0-20240522220429-b6cc1d96fd2b
github.com/cgrates/kamevapi v0.0.0-20240307160311-26273f03eedf
github.com/cgrates/ltcache v0.0.0-20240411152156-e673692056db
github.com/cgrates/radigo v0.0.0-20240123163129-491c899df727

4
go.sum
View File

@@ -29,8 +29,8 @@ github.com/cgrates/aringo v0.0.0-20220525160735-b5990313d99e h1:jbScwE0ebeCBD9Cs
github.com/cgrates/aringo v0.0.0-20220525160735-b5990313d99e/go.mod h1:v+wPvWvfle06wQ7WBJZGXvrF+CWA0CrReh+c3PuXaAU=
github.com/cgrates/birpc v1.3.1-0.20211117095917-5b0ff29f3084 h1:YIEepjEOjeHaFrewWaar/JkXYiDgO7gRw/R1zWITxEw=
github.com/cgrates/birpc v1.3.1-0.20211117095917-5b0ff29f3084/go.mod h1:z/PmNnDPqSQALedKJv5T8+eXIq6XHa9J0St1YsvAVns=
github.com/cgrates/fsock v0.0.0-20231222174700-7257ce894e23 h1:AElRJimochzP6ghx3/sVtV0oPyqiAMwd3ovo4s5YnqM=
github.com/cgrates/fsock v0.0.0-20231222174700-7257ce894e23/go.mod h1:5A9wag324AzIlaDd7tpPDAg26ouUO1orarAq7Vxr4As=
github.com/cgrates/fsock v0.0.0-20240522220429-b6cc1d96fd2b h1:PQzDye+0GcgJ3cKG5NcAOjdRyX0v76ZFkolu3X70fbs=
github.com/cgrates/fsock v0.0.0-20240522220429-b6cc1d96fd2b/go.mod h1:bKByLko2HF33K+PbiiToAgevrrbr96C+7Pp3HGS6oag=
github.com/cgrates/kamevapi v0.0.0-20240307160311-26273f03eedf h1:GbMJzvtwdX1OCEmsqSts/cRCIcIMvo8AYtC2dQExWlg=
github.com/cgrates/kamevapi v0.0.0-20240307160311-26273f03eedf/go.mod h1:oEq/JbubkOD2pXHvDy4r7519NkxriONisrnVpkCaNJw=
github.com/cgrates/ltcache v0.0.0-20240411152156-e673692056db h1:JRgzMS5kJ1WxaveoZ1YG/FowUDxFQXD3GjCHR7rH0Gk=