void CSuplProxyPrivacySession::NewPrivacyRequest(const RMessage2& aMessage) { LBSLOG(ELogP1, "CSuplProxyPrivacySession::NewPrivacyRequest() Begin\n"); TLbsNetSessionId sessionId; iPrivacyProtocol.GetNextSessionId(sessionId); TPckg<TUint32> pkgReqId(sessionId.SessionNum()); TInt error = aMessage.Write(0,pkgReqId); if(error != KErrNone) { aMessage.Complete(error); return; } RSemaphore semaphore; error = semaphore.Open(aMessage, 3, EOwnerThread); if(error != KErrNone) { aMessage.Complete(error); return; } semaphore.Signal(); semaphore.Close(); PrivacyRequest(aMessage, sessionId.SessionNum()); LBSLOG(ELogP1, "CSuplProxyPrivacySession::NewPrivacyRequest() End\n"); }
/** Submit a verify location request. @param aMessage The message from the client. */ void CSuplProxyPrivacySession::VerifyLocationRequest(const RMessage2& aMessage) { LBSLOG(ELogP1, "CSuplProxyPrivacySession::VerifyLocationRequest() Begin\n"); TLbsNetSessionId sessionId; iPrivacyProtocol.GetNextSessionId(sessionId); TPckg<TInt> pkgReqId(sessionId.SessionNum()); TInt error = aMessage.Write(0,pkgReqId); if(error != KErrNone) { aMessage.Complete(error); return; } RSemaphore semaphore; error = semaphore.Open(aMessage, 3, EOwnerThread); if(error != KErrNone) { aMessage.Complete(error); return; } semaphore.Signal(); semaphore.Close(); CSuplProxyPrivacyRequestInfo* requestInfo = NULL; TRAPD(err, requestInfo = CSuplProxyPrivacyRequestInfo::NewL(aMessage)); if (err != KErrNone) { // Error creating request info object, complete with the error and return aMessage.Complete(err); return; } requestInfo->SetRequestId(sessionId.SessionNum()); TLbsExternalRequestInfo2 extRequestInfo; TPckg<TLbsExternalRequestInfo2> extRequestInfoPkg(extRequestInfo); aMessage.Read(1,extRequestInfoPkg); requestInfo->SetRequestInfo(extRequestInfo); TLbsNetPosRequestPrivacy netPosRequestPrivacy; TPckg<TLbsNetPosRequestPrivacy> netPosRequestPrivacyPkg(netPosRequestPrivacy); aMessage.Read(2,netPosRequestPrivacyPkg); requestInfo->SetRequestPrivacy(netPosRequestPrivacy); requestInfo->SetIsResponseRequired(ETrue); if (!IsRequestInfoValid(*requestInfo)) { aMessage.Panic(KPosPrivacyPanicCategory, EPosPrivSrvPanicInvalidArguments); delete requestInfo; return; } iPrivacyProtocol.VerifyLocationRequest(requestInfo); // The message should be completed later in this case LBSLOG(ELogP1, "CSuplProxyPrivacySession::VerifyLocationRequest() End\n"); }
// ----------------------------------------------------------------------------- // RUsbPnClient::ConnectL // (other items were commented in a header). // ----------------------------------------------------------------------------- // EXPORT_C void RUsbPnClient::ConnectL() { OstTrace0( TRACE_BORDER, RUSBPNCLIENT_CONNECTL_ENTRY, "RUsbPnClient::ConnectL" ); A_TRACE( ( _T( "RUsbPnClient::ConnectL()" ) ) ); TInt err( KErrNone ); // Create USB Phonet Link Server session err = CreateSession( KUsbPnServerName, TVersion(1,0,0)); if ( err == KErrNotFound ) { // Session not created // Find lock semaphore for server process creation TFindSemaphore lock( KUsbPnServerName ); TFullName semaphoreName; err = lock.Next( semaphoreName ); if ( err == KErrNotFound ) { // Lock is not enabled OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL, "RUsbPnClient::ConnectL() - semaphore not found, start server" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - semaphore not found, start server" ) ) ); RSemaphore startLock; // Create lock User::LeaveIfError( startLock.CreateGlobal( KUsbPnServerName, 0, EOwnerProcess ) ); /********************************************/ /* Start the USB Phonet Link process process */ TRequestStatus status; RProcess server; User::LeaveIfError( server.Create( KUsbPnServerName, TPtrC( NULL, 0), EOwnerThread ) ); server.Rendezvous( status ); if( status != KRequestPending ) { server.Kill(0); // Abort startup } else { server.Resume(); // Logon OK -> start the server } OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP1, "RUsbPnClient::ConnectL() - waiting server response" ); E_TRACE( ( _T( "RUsbPnClient::ConnectL() - waiting server response" ) ) ); User::WaitForRequest( status ); // Wait for start or death // we can't use the 'exit reason' if the server panicked as this // is the panic 'reason' and may be '0' which cannot be distinguished // from KErrNone TInt err = status.Int(); if (err == KErrNone && (server.ExitType() == EExitPanic || server.ExitType() == EExitKill)) { err = KErrServerTerminated; } server.Close(); if( err ) { OstTrace1( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP2, "RUsbPnClient::ConnectL() - waiting server response status; err=%d", err ); E_TRACE( ( _T( "RUsbPnClient::ConnectL() - waiting server response status: %d" ), err ) ); TRACE_ASSERT_ALWAYS; User::LeaveIfError( err ); } /* End of starting process */ /********************************************/ OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP3, "RUsbPnClient::ConnectL() - server is started, signal other clients" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - server is started, signal other clients" ) ) ); // Signal other clients startLock.Signal( KMaxTInt ); // Close semaphore startLock.Close(); } else { // Lock is enabled RSemaphore startLock; // Open lock semaphore User::LeaveIfError( startLock.Open( lock ) ); OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP4, "RUsbPnClient::ConnectL() - server is starting, wait for signal" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - server is starting, wait for signal" ) ) ); // Wait for signal startLock.Wait(); OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP5, "RUsbPnClient::ConnectL() - signal received" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - signal received" ) ) ); // Close semaphore startLock.Close(); } // Create USB Phonet Link server session OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP6, "RUsbPnClient::ConnectL() - Create session" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - Create session" ) ) ); User::LeaveIfError( CreateSession( KUsbPnServerName, TVersion(1,0,0) ) ); OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP7, "RUsbPnClient::ConnectL() - session created1" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - session created1" ) ) ); } else if ( err ) { OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP8, "RUsbPnClient::ConnectL() - session not created, reason uknown" ); E_TRACE( ( _L( "RUsbPnClient::ConnectL() - session not created, reason uknown" ) ) ); TRACE_ASSERT_ALWAYS; User::Leave( err ); } else { OstTrace0( TRACE_INTERNALS, RUSBPNCLIENT_CONNECTL_DUP9, "RUsbPnClient::ConnectL() - session created2" ); E_TRACE( ( _T( "RUsbPnClient::ConnectL() - session created2" ) ) ); } OstTrace0( TRACE_BORDER, RUSBPNCLIENT_CONNECTL_EXIT, "RUsbPnClient::ConnectL() - return void" ); A_TRACE( ( _T( "RUsbPnClient::ConnectL() - return void" ) ) ); }