--- a/hti/HtiCommPlugins/HtiBtCommPlugin/HtiBtCommServer/src/HtiBtCommServer.cpp Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/*
-* Copyright (c) 2009 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: This file contains the implementation of the
-* CHtiBtCommServer class.
-* CHtiBtCommServer handles Symbian server side operations
-* such as server starting and client session creation.
-*
-*/
-
-
-// INCLUDE FILES
-#include "HtiBtClientServerCommon.h"
-#include "HtiBtCommServer.h"
-#include "HtiBtCommServerSession.h"
-#include "Logger.h"
-
-#include <e32base.h>
-#include <e32std.h>
-#include <e32svr.h>
-#include <e32uid.h>
-
-// CONSTANTS
-// For memory allocations
-const TUint KBtCommServerHeapSizeMin = 0x6000;
-const TUint KBtCommServerHeapSizeMax = 0x20000;
-const TUint KBtCommServerStackSize = 0x8000;
-
-
-//*****************************************************************************
-//
-// Class CHtiBtCommServer
-//
-//*****************************************************************************
-
-/*---------------------------------------------------------------------------*/
-CHtiBtCommServer::CHtiBtCommServer( TInt aPriority )
- : CServer2( aPriority, ESharableSessions )
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: CHtiBtCommServer()")))
- __DECLARE_NAME(_S( "CHtiBtCommServer" ));
- }
-
-/*---------------------------------------------------------------------------*/
-void CHtiBtCommServer::ConstructL()
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: ConstructL()")))
- }
-
-/*---------------------------------------------------------------------------*/
-CHtiBtCommServer* CHtiBtCommServer::NewL()
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: NewL()"));)
-
- CHtiBtCommServer *pS =
- new (ELeave) CHtiBtCommServer( EBtCommServerPriority );
- CleanupStack::PushL( pS );
- __ASSERT_ALWAYS( pS != NULL, PanicServer( ESvrCreateServer ) );
-
- pS->ConstructL();
- CleanupStack::Pop( pS );
- User::SetProcessCritical( User::ENotCritical );
- User::SetCritical( User::ENotCritical );
- LOGFW(InfoLog(_L("Server was started")))
- return pS;
- }
-
-/*---------------------------------------------------------------------------*/
-CHtiBtCommServer::~CHtiBtCommServer()
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: ~CHtiBtCommServer()")))
- }
-
-/*---------------------------------------------------------------------------*/
-void CHtiBtCommServer::SessionFreed()
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: SessionFreed(): Stopping active scheduler"));)
- iSession = NULL; // iSession is owned by server framework, not deleted here
- CActiveScheduler::Stop();
- LOGFW(DebugLog(_L("CHtiBtCommServer: SessionFreed(): Done"));)
- }
-
-/*---------------------------------------------------------------------------*/
-void CHtiBtCommServer::SessionCreated( CHtiBtCommServerSession* aSession )
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: SessionCreated()"));)
- iSession = aSession;
- }
-
-/*---------------------------------------------------------------------------*/
-CSession2* CHtiBtCommServer::NewSessionL( const TVersion &aVersion,
- const RMessage2& aMessage ) const
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: NewSessionL() - IPC V2"));)
- aMessage.IsNull();
- if ( iSession )
- User::Leave( KErrAlreadyExists ); // Allow only one session
-
- // Check that server is the right version
- TVersion ver( KBtCommServerMajorVersionNumber,
- KBtCommServerMinorVersionNumber,
- KBtCommServerBuildVersionNumber );
- if ( !User::QueryVersionSupported( ver, aVersion ) )
- {
- User::Leave( KErrNotSupported );
- }
- return CHtiBtCommServerSession::NewL( (CHtiBtCommServer*)this );
- }
-
-/*---------------------------------------------------------------------------*/
-GLDEF_C TInt CHtiBtCommServer::ThreadFunction( TAny* anArg )
- {
- LOGFW(_L("CHtiBtCommServer: ThreadFunction(): Starting"));
-
- __UHEAP_MARK;
-
- CTrapCleanup* cleanup = CTrapCleanup::New();
-
- // Convert argument into semaphore reference
- RSemaphore& semaphore = *(RSemaphore*)anArg;
-
- // Start scheduler...
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Installing active scheduler"));)
- CActiveScheduler *pA = new CActiveScheduler;
- __ASSERT_ALWAYS( pA != NULL, PanicServer( EMainSchedulerError ) );
- CActiveScheduler::Install( pA );
-
- CHtiBtCommServer* pS = NULL;
- TRAPD(err,
- // ...and server
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Creating server instance"));)
- pS = CHtiBtCommServer::NewL();
- )
-
- if ( err != KErrNone )
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Failed creating server instance"));)
- }
-
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Starting server"));)
- __ASSERT_ALWAYS( pS->Start(KBtCommServerName) == KErrNone,
- PanicServer( ESvrStartServer ) ); // Make first request pending,
-
- // Signal that server has started
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Signalling client: server is up and running"));)
- semaphore.Signal();
-
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Waiting for server's death"));)
- // Start receiving requests from clients
- CActiveScheduler::Start();
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Server was stopped"));)
- LOGFW(InfoLog(_L("Server was stopped")))
- delete pS;
- LOGFW(DebugLog(_L("CHtiBtCommServer: ThreadFunction(): Server was deleted"));)
-
- // Finished
- delete pA;
- pA = NULL;
-
- // Destroy clean-up stack
- delete cleanup;
- cleanup = NULL;
-
- __UHEAP_MARKEND;
- return KErrNone;
- }
-
-/*---------------------------------------------------------------------------*/
-GLDEF_C void PanicServer( TBtCommServerPanic aPanic )
- {
- LOGFW(DebugLog(_L("CHtiBtCommServer: PanicServer()"));)
- _LIT( KTxtServerPanic, "BtCommServer panic" );
- User::Panic( KTxtServerPanic, aPanic );
- }
-
-/*---------------------------------------------------------------------------*/
-EXPORT_C TInt StartThread()
- {
-// LOGFW(_L("CHtiBtCommServer: StartThread()"));
- TInt res = KErrNone;
-
- // Create server - if one of this name does not already exist
- TFindServer findBtCommServer( KBtCommServerName );
- TFullName name;
- if ( findBtCommServer.Next( name ) != KErrNone ) // Server doesn't exist
- {
- // Create a semaphore to know when thread initialization has finished
- RSemaphore semaphore;
- semaphore.CreateLocal(0);
-
-// LOGFW(_L("CHtiBtCommServer: Created Semaphore...\n"));
-
- // Create new server thread and thread's main function
- RThread thread;
- res = thread.Create( KBtCommServerName,
- CHtiBtCommServer::ThreadFunction,
- KBtCommServerStackSize,
- KBtCommServerHeapSizeMin,
- KBtCommServerHeapSizeMax,
- &semaphore );
-
-
- if ( res == KErrNone ) // Thread created ok - now start it going
- {
-// LOGFW(_L("CHtiBtCommServer: StartThread() - Create OK"));
-
- thread.SetPriority( EPriorityNormal );
-// TRequestStatus stat1;
-// thread.Logon(stat1);
-
- thread.Resume(); // Start it going
-
- semaphore.Wait(); // Wait until it's initialized
-
- thread.Close(); // No longer interest in the other thread
- }
- else // Thread not created ok
- {
- // No further interest in it
-// LOGFW(_L("CHtiBtCommServer: StartThread() - Create FAIL"));
- thread.Close();
- }
- semaphore.Close();
- }
- return res;
- }
-
-/*---------------------------------------------------------------------------*/
-GLDEF_C TInt E32Main()
- {
- return KErrNone;
- }
-
-// End of the file