diff -r cfea66083b62 -r baacf668fe89 phoneapp/phoneringingtoneplayer/src/cphonetoneserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneringingtoneplayer/src/cphonetoneserver.cpp Fri Oct 15 12:58:46 2010 +0300 @@ -0,0 +1,157 @@ +/* +* Copyright (c) 2010 - 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Ringing tone server. +* +*/ + + +// INCLUDE FILES +#include +#include + +#include "phoneringingtonetrace.h" +#include "cphonetoneserver.h" +#include "cphonetoneserversession.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::CPhoneToneServer +// ----------------------------------------------------------------------------- +// +CPhoneToneServer::CPhoneToneServer() + : CServer2( EPriorityHigh ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::CPhoneToneServer <"); + PHONERINGINGTONE_PRINT("CPhoneToneServer::CPhoneToneServer >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::~CPhoneToneServer +// ----------------------------------------------------------------------------- +// +CPhoneToneServer::~CPhoneToneServer() + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::~CPhoneToneServer <"); + PHONERINGINGTONE_PRINT("CPhoneToneServer::~CPhoneToneServer >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::NewLC +// ----------------------------------------------------------------------------- +// +CPhoneToneServer* CPhoneToneServer::NewLC() + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::NewLC <"); + CPhoneToneServer* self = new( ELeave )CPhoneToneServer; + CleanupStack::PushL( self ); + self->ConstructL(); + PHONERINGINGTONE_PRINT("CPhoneToneServer::NewLC >"); + return self; + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::ConstructL +// ----------------------------------------------------------------------------- +// +void CPhoneToneServer::ConstructL() + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::ConstructL <"); + StartL( KRingingToneServerName ); + PHONERINGINGTONE_PRINT("CPhoneToneServer::ConstructL >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::NewSessionL +// ----------------------------------------------------------------------------- +// +CSession2* CPhoneToneServer::NewSessionL( const TVersion& /*aVersion*/, + const RMessage2& /*aMessage*/ ) const + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::NewSessionL <"); + if ( iHasConnection ) + { + // Server should be unique connectable. + User::Leave( KErrAccessDenied ); + //return NULL; + } + CSession2* session = CPhoneToneServerSession::NewL(*this ); + iHasConnection = ETrue; + PHONERINGINGTONE_PRINT("CPhoneToneServer::NewSessionL >"); + return session; + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::ThreadEntryFunc +// ----------------------------------------------------------------------------- +// +TInt CPhoneToneServer::ThreadEntryFunc( TAny* /*aPtr*/ ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::ThreadEntryFunc <"); + CTrapCleanup* cleanup = CTrapCleanup::New(); + CActiveScheduler* scheduler = new CActiveScheduler; + + // Check that all allocations were ok + if ( !cleanup || !scheduler ) + { + // Out of memory + delete scheduler; + delete cleanup; + return KErrNoMemory; + } + // Install active scheduler + CActiveScheduler::Install( scheduler ); + // Run the server + TRAPD( err, CPhoneToneServer::RunServerL() ); + // Uninstall active scheduler + CActiveScheduler::Install( NULL ); + // Cleanup + delete scheduler; + delete cleanup; + + PHONERINGINGTONE_PRINTF("CPhoneToneServer::ThreadEntryFunc - err(%d)",err); + PHONERINGINGTONE_PRINT("CPhoneToneServer::ThreadEntryFunc >"); + return err; + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::RunDown +// ----------------------------------------------------------------------------- +// +void CPhoneToneServer::RunDown() const + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::RunDown <"); + CActiveScheduler::Stop(); + PHONERINGINGTONE_PRINT("CPhoneToneServer::RunDown >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServer::RunServerL +// ----------------------------------------------------------------------------- +// +void CPhoneToneServer::RunServerL() + { + PHONERINGINGTONE_PRINT("CPhoneToneServer::RunServerL <"); + // Allocate server + CPhoneToneServer* server = CPhoneToneServer::NewLC(); + // Notify that we're running + RThread::Rendezvous( KErrNone ); + // Start active scheduler + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(); // server + PHONERINGINGTONE_PRINT("CPhoneToneServer::RunServerL >") + } + +// End of file. +