summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/os_core_symbian.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src/pj/os_core_symbian.cpp')
-rw-r--r--pjlib/src/pj/os_core_symbian.cpp34
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!