backsteppingsrv/src/bsserversession.cpp
changeset 0 79c6a41cd166
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/backsteppingsrv/src/bsserversession.cpp	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2007 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:  Server session for BS engine
+ *
+*/
+
+
+// INCLUDE FILES
+#include "bsserver.h"
+#include "bsengine.h"
+#include "bsengineglobals.h"
+
+#include "bsserversession.h"
+#include "bspanic.h"
+#include "bsdebug.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBSServerSession* CBSServerSession::NewL( CBSServer* aServer )
+    {
+    CBSServerSession* self = CBSServerSession::NewLC( aServer );
+    CleanupStack::Pop( self ) ;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CBSServerSession* CBSServerSession::NewLC( CBSServer* aServer )
+    {
+    CBSServerSession* self = new ( ELeave ) CBSServerSession(aServer);
+    CleanupStack::PushL( self );
+    self->ConstructL( ) ;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::~CBSServerSession
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CBSServerSession::~CBSServerSession()
+    {
+    if ( iBSServer )
+        {
+        iBSServer->Engine().RemoveAppRecord( iAppUid );
+        iBSServer->DecrementSessions( );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::ReadTextL
+// 
+// -----------------------------------------------------------------------------
+//
+HBufC8* CBSServerSession::ReadTextLC( const RMessage2& aMessage, TInt aSlot )
+    {
+    TInt length = aMessage.GetDesMaxLength( aSlot );
+    HBufC8* result = HBufC8::NewLC( length );
+    TPtr8 ptr(result->Des( ));
+    User::LeaveIfError( aMessage.Read( aSlot, ptr ) );
+
+    DEBUG(("ReadTextL slot (%d) - %S", aSlot, result));
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::ServiceL
+// Handle client requests.
+// -----------------------------------------------------------------------------
+//
+void CBSServerSession::ServiceL( const RMessage2& aMessage )
+    {
+    DEBUG(("CBSServerSession::ServiceL"));
+    HBufC8* state(NULL);
+    TInt result(0);
+    switch ( aMessage.Function( ) )
+        {
+        case EBSEngineInitialize:
+            iAppUid = TUid::Uid( aMessage.Int0( ) );
+            DEBUG(("EBSEngineInitialize %x", iAppUid.iUid));
+            aMessage.Complete( EBSEngineCommandWasConsumed );
+            break;
+        case EBSEngineHandleActivationEvent:
+            state = ReadTextLC( aMessage, 0 );
+            DEBUG(("EBSEngineHandleActivationEvent 0x%X, %S, 0x%X",
+                            iAppUid.iUid, state, aMessage.Int1() ));
+            result = iBSServer->Engine().
+            HandleActivationEventL( iAppUid, *state, aMessage.Int1( ) );
+            CleanupStack::PopAndDestroy( state );
+            aMessage.Complete( result );
+            break;
+        case EBSEngineHandleBackCommand:
+            state = ReadTextLC( aMessage, 0 );
+
+            DEBUG(("EBSEngineHandleBackCommand 0x%X, %S",
+                            iAppUid.iUid, state));
+            result = iBSServer->Engine().
+            HandleBackEventL( iAppUid, *state, aMessage.Int1( ) );
+            CleanupStack::PopAndDestroy( state );
+            aMessage.Complete( result );
+            break;
+        default:
+            TBSEnginePanic tmp = EBSEngineBadRequest;
+            iBSServer->PanicClient( aMessage, tmp );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::CBSServerSession
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CBSServerSession::CBSServerSession( CBSServer* aServer ) :
+    CSession2()
+    {
+    iBSServer = aServer;
+    iBSServer->IncrementSessions( );
+    }
+
+// -----------------------------------------------------------------------------
+// CBSServerSession::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CBSServerSession::ConstructL()
+    {
+    DEBUG(("CBSServerSession::ConstructL"));
+
+    }
+
+// End of File