mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
updated fsock library && fsagent
This commit is contained in:
committed by
Dan Christian Bogos
parent
a07a8dd952
commit
94bde601b0
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
2
go.mod
@@ -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
4
go.sum
@@ -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=
|
||||
|
||||
Reference in New Issue
Block a user