connectivitylayer/usbphonetlink/usbpnserver_exe/src/cusbpnscheduler.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivitylayer/usbphonetlink/usbpnserver_exe/src/cusbpnscheduler.cpp	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,135 @@
+/*
+* 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 the License "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:
+*
+*/
+
+// INCLUDE FILES
+#include    "cusbpnscheduler.h"
+#include    "cusbpnserver.h"
+#include    "usbpntrace.h"
+
+#include    "osttracedefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include    "cusbpnschedulerTraces.h"
+#endif
+
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES
+// CONSTANTS
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CUsbPnScheduler::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUsbPnScheduler::ConstructL()
+    {
+    OstTrace0( TRACE_NORMAL, CUSBPNSCHEDULER_CONSTRUCTL_ENTRY, "CUsbPnScheduler::ConstructL" );
+    C_TRACE( ( _T( "CUsbPnScheduler::ConstructL()" ) ) );
+
+    /* Create active scheduler */
+    CUsbPnScheduler* self = new (ELeave) CUsbPnScheduler;
+    CleanupStack::PushL(self);
+    CActiveScheduler::Install( self);
+
+    TInt err( KErrNone );
+
+    /* Create USB Phonet Link server */
+    self->iServer = CUsbPnServer::NewL();
+
+    /* Signal error code to client */
+    RProcess::Rendezvous( err );
+
+    if( err )
+        {
+        TRACE_ASSERT_ALWAYS;
+        User::Leave( err );
+        }
+
+    /* Start active scheduler (Wait loop) */
+    CActiveScheduler::Start();
+
+    /* Active scheduler stopped */
+    CleanupStack::PopAndDestroy(self);
+
+    OstTrace0( TRACE_NORMAL, CUSBPNSCHEDULER_CONSTRUCTL_EXIT, "CUsbPnScheduler::ConstructL - return void" );
+    C_TRACE( ( _T( "CUsbPnScheduler::ConstructL() - return void" ) ) );
+    }
+
+// Destructor
+CUsbPnScheduler::~CUsbPnScheduler()
+    {
+    OstTrace0( TRACE_NORMAL, CUSBPNSCHEDULER_CUSBPNSCHEDULER_DESTRUCTOR_ENTRY, "CUsbPnScheduler::~CUsbPnScheduler" );
+    C_TRACE( ( _T( "CUsbPnScheduler::~CUsbPnScheduler()" ) ) );
+
+    if( iServer )
+        {
+        delete iServer;
+        }
+
+    OstTrace0( TRACE_NORMAL, CUSBPNSCHEDULER_CUSBPNSCHEDULER_DESTRUCTOR_EXIT, "CUsbPnScheduler::~CUsbPnScheduler - return" );
+    C_TRACE( ( _T( "CUsbPnScheduler::~CUsbPnScheduler() - return" ) ) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CUsbPnScheduler::ThreadStart
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CUsbPnScheduler::ThreadStart( )
+    {
+    OstTrace0( TRACE_API, CUSBPNSCHEDULER_THREADSTART_ENTRY, "CUsbPnScheduler::ThreadStart" );
+    A_TRACE(_T("CUsbPnScheduler::ThreadStart()"));
+    TInt err(KErrNone);
+
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+
+#ifdef _DEBUG
+    // To make sure that cleanupstack will not grow before __UHEAP_MARKEND
+    // to prevent server panic in shut down in UDEB
+    TRAP( err, for( TInt i = 0; i < 20; i++) CleanupStack::PushL( ( TAny* )NULL );
+    CleanupStack::Pop(20);
+    );
+#endif
+
+    if(cleanup)
+        {
+        __UHEAP_MARK;
+        TRAP( err, ConstructL() );
+        __UHEAP_MARKEND;
+        delete cleanup;
+        }
+
+
+    OstTrace1( TRACE_API, CUSBPNSCHEDULER_THREADSTART_EXIT, "CUsbPnScheduler::ThreadStart - return %d", err );
+    A_TRACE((_T("CUsbPnScheduler::ThreadStart() - return %d"), err));
+    return err;
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+//  End of File