Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
ae739913
Commit
ae739913
authored
Sep 23, 2008
by
Yun Liu
Browse files
Adding the initialization of sip manager in manageimpl
parent
41643411
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/managerimpl.cpp
View file @
ae739913
...
...
@@ -37,13 +37,16 @@
#include
"manager.h"
#include
"account.h"
#include
"sipaccount.h"
#include
"audio/audiolayer.h"
#include
"audio/alsalayer.h"
#include
"audio/pulselayer.h"
#include
"audio/tonelist.h"
#include
"accountcreator.h"
// create new account
#include
"voiplink.h"
#include
"sipvoiplink.h"
#include
"sipmanager.h"
#include
"user_cfg.h"
...
...
@@ -83,6 +86,10 @@ ManagerImpl::ManagerImpl (void)
_nbIncomingWaitingCall
=
0
;
_hasTriedToRegister
=
false
;
// SIP Link
_sipManager
=
NULL
;
_sipManagerInitlized
=
false
;
// initialize random generator for call id
srand
(
time
(
NULL
));
...
...
@@ -114,6 +121,12 @@ ManagerImpl::init()
{
// Load accounts, init map
loadAccountMap
();
//Initialize sip manager
if
(
_sipManagerInitlized
)
{
_sipManager
->
sipCreate
();
_sipManager
->
sipInit
();
}
initVolume
();
...
...
@@ -144,6 +157,7 @@ ManagerImpl::init()
// initRegisterAccounts was here, but we doing it after the gui loaded...
// the stun detection is long, so it's a better idea to do it after getEvents
initZeroconf
();
}
void
ManagerImpl
::
terminate
()
...
...
@@ -229,6 +243,7 @@ ManagerImpl::outgoingCall(const std::string& accountid, const CallID& id, const
ManagerImpl
::
answerCall
(
const
CallID
&
id
)
{
stopTone
(
false
);
_debug
(
"Try to answer call: %s
\n
"
,
id
.
data
());
AccountID
accountid
=
getAccountFromCall
(
id
);
if
(
accountid
==
AccountNULL
)
{
_debug
(
"Answering Call: Call doesn't exists
\n
"
);
...
...
@@ -558,7 +573,7 @@ ManagerImpl::isWaitingCall(const CallID& id) {
bool
ManagerImpl
::
incomingCall
(
Call
*
call
,
const
AccountID
&
accountId
)
{
_debug
(
"Incoming call
\n
"
);
_debug
(
"Incoming call
%s
\n
"
,
call
->
getCallId
().
data
()
);
associateCallToAccount
(
call
->
getCallId
(),
accountId
);
...
...
@@ -582,8 +597,9 @@ ManagerImpl::incomingCall(Call* call, const AccountID& accountId)
from
.
append
(
number
);
from
.
append
(
">"
);
}
_dbus
->
getCallManager
()
->
incomingCall
(
accountId
,
call
->
getCallId
(),
from
);
// Reduce volume of the other pulseaudio-connected audio applications
if
(
getConfigInt
(
PREFERENCES
,
CONFIG_PA_VOLUME_CTRL
)
)
_audiodriver
->
reducePulseAppsVolume
();
...
...
@@ -948,7 +964,7 @@ ManagerImpl::behindNat(const std::string& svr, int port)
}
// Firewall address
//
_debug("STUN server: %s\n", svr.data());
_debug
(
"STUN server: %s
\n
"
,
svr
.
data
());
return
getStunInfo
(
stunSvrAddr
,
port
);
}
...
...
@@ -2109,6 +2125,7 @@ ManagerImpl::associateCallToAccount(const CallID& callID, const AccountID& accou
if
(
accountExists
(
accountID
)
)
{
// account id exist in AccountMap
ost
::
MutexLock
m
(
_callAccountMapMutex
);
_callAccountMap
[
callID
]
=
accountID
;
_debug
(
"Associate Call %s with Account %s
\n
"
,
callID
.
data
(),
accountID
.
data
());
return
true
;
}
else
{
return
false
;
...
...
@@ -2175,7 +2192,22 @@ ManagerImpl::loadAccountMap()
accountType
=
getConfigString
(
*
iter
,
CONFIG_ACCOUNT_TYPE
);
if
(
accountType
==
"SIP"
)
{
if
(
!
_sipManagerInitlized
)
{
// Initialize the SIP Link Manager
_sipManager
=
new
SIPManager
();
_sipManagerInitlized
=
true
;
}
tmpAccount
=
AccountCreator
::
createAccount
(
AccountCreator
::
SIP_ACCOUNT
,
*
iter
);
// Determine whether to use stun for the current account or not
int
useStun
=
Manager
::
instance
().
getConfigInt
(
tmpAccount
->
getAccountID
(),
SIP_USE_STUN
);
if
(
useStun
==
1
)
{
_sipManager
->
setStunServer
(
Manager
::
instance
().
getConfigString
(
tmpAccount
->
getAccountID
(),
SIP_STUN_SERVER
).
data
());
}
}
else
if
(
accountType
==
"IAX"
)
{
tmpAccount
=
AccountCreator
::
createAccount
(
AccountCreator
::
IAX_ACCOUNT
,
*
iter
);
...
...
@@ -2241,6 +2273,24 @@ ManagerImpl::getAccountLink(const AccountID& accountID)
return
0
;
}
pjsip_regc
*
getSipRegcFromID
(
const
AccountID
&
id
)
{
/*SIPAccount *tmp = dynamic_cast<SIPAccount *>getAccount(id);
if(tmp != NULL)
return tmp->getSipRegc();
else*/
return
NULL
;
}
/**
* Return the instance of sip manager
*/
SIPManager
*
ManagerImpl
::
getSipManager
()
{
return
_sipManager
;
}
#ifdef TEST
/**
...
...
src/managerimpl.h
View file @
ae739913
...
...
@@ -47,6 +47,7 @@ class CodecDescriptor;
class
GuiFramework
;
class
TelephoneTone
;
class
VoIPLink
;
class
SIPManager
;
#ifdef USE_ZEROCONF
class
DNSService
;
...
...
@@ -810,6 +811,13 @@ class ManagerImpl {
*/
bool
isCurrentCall
(
const
CallID
&
callId
);
/**
* Get the _regc in each sip account
* @param AccountID Account ID
* @return pjsip_regc* The regc in the account
*/
//pjsip_regc *getSipRegcFromID(const AccountID& id);
private:
/**
* Create .PROGNAME directory in home user and create
...
...
@@ -964,13 +972,6 @@ class ManagerImpl {
*/
bool
associateCallToAccount
(
const
CallID
&
callID
,
const
AccountID
&
accountID
);
/** Return the AccountID from a CallID
* Protected by mutex
* @param callID the CallID in the list
* @return AccountID The accountID associated or "" if the callID is not found
*/
AccountID
getAccountFromCall
(
const
CallID
&
callID
);
/** Remove a CallID/AccountID association
* Protected by mutex
* @param callID the CallID to remove
...
...
@@ -1007,6 +1008,14 @@ class ManagerImpl {
*/
Account
*
getAccount
(
const
AccountID
&
accountID
);
public:
/** Return the AccountID from a CallID
* Protected by mutex
* @param callID the CallID in the list
* @return AccountID The accountID associated or "" if the callID is not found
*/
AccountID
getAccountFromCall
(
const
CallID
&
callID
);
/**
* Get the voip link from the account pointer
* @param accountID Account ID to get
...
...
@@ -1014,11 +1023,25 @@ class ManagerImpl {
*/
VoIPLink
*
getAccountLink
(
const
AccountID
&
accountID
);
private:
/**
* The SIPManager provides sip operation facilities for all sip accounts
*/
SIPManager
*
_sipManager
;
/** Whether the _SIPManager has been initialized */
bool
_sipManagerInitlized
;
#ifdef TEST
bool
testCallAccountMap
();
bool
testAccountMap
();
#endif
public:
/**
* Retuun the instance of sip manager
*/
SIPManager
*
getSipManager
();
};
#endif // __MANAGER_H__
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment