From dbeb703e133db47a744bec62a7c990f7ef0750d5 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 26 Oct 2007 05:25:35 +0000 Subject: Ticket #403: Ability to specify RConnection instance etc in PJLIB Symbian git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1525 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pj/os_core_symbian.cpp | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'pjlib/src/pj/os_core_symbian.cpp') diff --git a/pjlib/src/pj/os_core_symbian.cpp b/pjlib/src/pj/os_core_symbian.cpp index f13365a5..8f96ce09 100644 --- a/pjlib/src/pj/os_core_symbian.cpp +++ b/pjlib/src/pj/os_core_symbian.cpp @@ -153,10 +153,19 @@ TInt CPjTimeoutTimer::RunError(TInt aError) PjSymbianOS::PjSymbianOS() : isSocketServInitialized_(false), isResolverInitialized_(false), - console_(NULL), selectTimeoutTimer_(NULL) + console_(NULL), selectTimeoutTimer_(NULL), + appSocketServ_(NULL), appConnection_(NULL), appHostResolver_(NULL) { } +// Set parameters +void PjSymbianOS::SetParameters(pj_symbianos_params *params) +{ + appSocketServ_ = (RSocketServ*) params->rsocketserv; + appConnection_ = (RConnection*) params->rconnection; + appHostResolver_ = (RHostResolver*) params->rhostresolver; +} + // Get PjSymbianOS instance PjSymbianOS *PjSymbianOS::Instance() { @@ -179,7 +188,10 @@ TInt PjSymbianOS::Initialize() return err; #endif - if (!isSocketServInitialized_) { + /* Only create RSocketServ if application doesn't specify it + * in the parameters + */ + if (!isSocketServInitialized_ && appSocketServ_ == NULL) { err = socketServ_.Connect(); if (err != KErrNone) goto on_error; @@ -187,8 +199,13 @@ TInt PjSymbianOS::Initialize() isSocketServInitialized_ = true; } - if (!isResolverInitialized_) { - err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream); + if (!isResolverInitialized_ && appHostResolver_ == NULL) { + if (Connection()) + err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream, + *Connection()); + else + err = hostResolver_.Open(SocketServ(), KAfInet, KSockStream); + if (err != KErrNone) goto on_error; @@ -260,6 +277,15 @@ PJ_DEF(pj_uint32_t) pj_getpid(void) } +/* Set Symbian specific parameters */ +PJ_DEF(pj_status_t) pj_symbianos_set_params(pj_symbianos_params *prm) +{ + PJ_ASSERT_RETURN(prm != NULL, PJ_EINVAL); + PjSymbianOS::Instance()->SetParameters(prm); + return PJ_SUCCESS; +} + + /* * pj_init(void). * Init PJLIB! -- cgit v1.2.3