Properly reload gateway after it has been edited.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16478 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
João Mesquita
2010-01-23 16:15:59 +00:00
parent 25a4270e3d
commit 035e603634
4 changed files with 46 additions and 13 deletions

View File

@@ -385,6 +385,7 @@ void FSHost::generalEventHandler(switch_event_t *event)
}
else if (strcmp(event->subclass_name, "sofia::gateway_del") == 0)
{
qDebug() << "We are deleted...";
QSharedPointer<Account> acc = _accounts.take(switch_event_get_header_nil(event, "Gateway"));
if (!acc.isNull())
emit delAccount(acc);
@@ -400,6 +401,40 @@ void FSHost::generalEventHandler(switch_event_t *event)
}
}
void FSHost::accountReloadCmd(QSharedPointer<Account> acc)
{
QString res;
QString arg = QString("profile softphone killgw %1").arg(acc.data()->getName());
connect(this, SIGNAL(delAccount(QSharedPointer<Account>)), this, SLOT(accountReloadSlot(QSharedPointer<Account>)));
if (g_FSHost.sendCmd("sofia", arg.toAscii().data() , &res) != SWITCH_STATUS_SUCCESS)
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not killgw %s from profile softphone.\n",
acc.data()->getName().toAscii().data());
}
_reloading_Accounts.append(acc.data()->getName());
qDebug() << "We are reloading...";
}
void FSHost::accountReloadSlot(QSharedPointer<Account> acc)
{
if (_reloading_Accounts.contains(acc.data()->getName()))
{
_reloading_Accounts.takeAt(_reloading_Accounts.indexOf(acc.data()->getName(), 0));
QString res;
if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n");
return;
}
if (_reloading_Accounts.isEmpty())
disconnect(this, SLOT(accountReloadSlot(QSharedPointer<Account>)));
qDebug() << "We are rescanning...";
}
}
switch_status_t FSHost::sendCmd(const char *cmd, const char *args, QString *res)
{
switch_status_t status = SWITCH_STATUS_FALSE;