diff options
Diffstat (limited to 'pjlib/src/pj/os_core_symbian.cpp')
-rw-r--r-- | pjlib/src/pj/os_core_symbian.cpp | 34 |
1 files changed, 30 insertions, 4 deletions
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! |