--- a/services/terminalmodeservice/src/upnptmappserverservice.cpp Tue Aug 31 16:06:48 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-/**
-* Copyright (c) 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: CUpnpTmAppServerService class implementation.
-*
-*/
-
-
-// System includes
-#include <upnpdevice.h>
-#include <upnpservice.h>
-
-//User includes
-#include "upnptmappserverservice.h"
-#include "upnptmserverdevice.h"
-#include "upnptmserverimpl.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "upnptmappserverserviceTraces.h"
-#endif
-
-
-//Defines different action names ,their arguments and their related state variables
-_LIT8(KGetApplicationList, "GetApplicationList");
-_LIT8(KLaunchApp, "LaunchApplication");
-_LIT8(KTerminateApp, "TerminateApplication");
-_LIT8(KGetAppStatus, "GetApplicationStatus");
-_LIT8(KAppFilter, "AppListingFilter");
-_LIT8(KProfileId, "ProfileID");
-_LIT8(KAppListing, "AppListing");
-_LIT8(KAppId , "AppID");
-_LIT8(KAppStatus, "AppStatus");
-_LIT8(KAppLaunchUri, "AppURI");
-_LIT8(KAppTerminateResult, "TerminationResult");
-_LIT8(KArgTypeAppList, "A_ARG_TYPE_AppList");
-_LIT8(KArgTypeAppStatus, "A_ARG_TYPE_AppStatus");
-_LIT8(KArgTypeAppStatusUpdate, "AppStatusUpdate");
-_LIT8(KArgTypeAppListUpdate, "AppListUpdate");
-_LIT8(KStatusTrue, "True");
-_LIT8(KStatusFalse, "False");
-
-
-// ================= MEMBER FUNCTIONS ==============================================
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::CUpnpTmAppServerService
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------------
-//
-CUpnpTmAppServerService::CUpnpTmAppServerService( CUpnpDevice& aUpnpDevice,CUpnpTmServerImpl& aTmServerImpl ):
- CUpnpServiceImplementation(aUpnpDevice),iUpnpDevice(aUpnpDevice), iTmServerImpl(aTmServerImpl)
- {
-
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::~CUpnpTmAppServerService
-// C++ default destructor
-// ---------------------------------------------------------------------------------
-//
-CUpnpTmAppServerService::~CUpnpTmAppServerService()
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_CUPNPTMAPPSERVERSERVICE_ENTRY );
- if ( iHttpServerSession )
- {
- iHttpServerSession->Stop();
- }
- delete iHttpServerSession;
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_CUPNPTMAPPSERVERSERVICE_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::ConstructL
-// Two-phased constructor.
-// Initialize variables, set parent service and create XML reader.
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::ConstructL( const TDesC& aDescriptionPath )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_CONSTRUCTL_ENTRY );
- _LIT8( KServiceType, "TmApplicationServer:1" );
- BaseConstructL( aDescriptionPath, KServiceType);
-
- SetStateVariableL( KArgTypeAppList, KEmptyString, EFalse );
- SetStateVariableL( KArgTypeAppStatus, KEmptyString, EFalse );
- SetStateVariableL( KArgTypeAppStatusUpdate, KEmptyString, EFalse );
- SetStateVariableL( KArgTypeAppListUpdate, KEmptyString, EFalse );
- ConstructHttpL( );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_CONSTRUCTL_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::ConstructHttpL
-// Method is used to start the HTTP Server
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::ConstructHttpL( )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_CONSTRUCTHTTPL_ENTRY );
- iHttpServerSession = CUpnpHttpServerSession::NewL( CUpnpSettings::GetIapL(),*this );
- iHttpServerSession->DefaultRuntime().SetCreator( *this );
- iHttpServerSession->StartL();
- iTmServerImpl.GenerateUrlComponents(*iHttpServerSession);
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_CONSTRUCTHTTPL_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------------
-//
-CUpnpTmAppServerService* CUpnpTmAppServerService::NewL(CUpnpDevice& aUpnpDevice, const TDesC& aDescriptionPath,
- CUpnpTmServerImpl& aTmServerImp )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_NEWL_ENTRY );
- CUpnpTmAppServerService* appServerService = new (ELeave) CUpnpTmAppServerService(aUpnpDevice, aTmServerImp);
- CleanupStack::PushL( appServerService );
- appServerService->ConstructL( aDescriptionPath );
- CleanupStack::Pop( appServerService );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_NEWL_EXIT );
- return appServerService;
- }
-
-// ----------------------------------------------------------------------------------------------
-// CUpnpTmAppServerService::ActionReceivedLD
-// @param aAction action received from the client
-// ----------------------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::ActionReceivedLD( CUpnpAction* aAction )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_ACTIONRECEIVEDLD_ENTRY );
- if ( !aAction )
- {
- User::Leave( KErrNotFound );
- }
- CleanupStack::PushL( aAction );
- TUpnpErrorCode eCode = EHttpOk;
-
- // Get the name, saves calls in the if-else statements
- TPtrC8 name( aAction->Name() );
- // Verify the action and do the operation(s)
- if ( name.Compare( KGetApplicationList ) == 0 )
- {
- eCode = GetAppListActionL( aAction );
- }
- else if ( name.Compare( KLaunchApp ) == 0 )
- {
- eCode = LaunchAppActionL( aAction );
- }
- else if ( name.Compare( KTerminateApp ) == 0 )
- {
- eCode = TerminateAppActionL ( aAction );
- }
- else if ( name.Compare( KGetAppStatus) == 0 )
- {
- eCode = GetAppStatusActionL( aAction );
- }
- else
- {
- eCode = EInvalidAction;
- }
- SendL( aAction, eCode );
- CleanupStack::PopAndDestroy( aAction );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_ACTIONRECEIVEDLD_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::GetAppListActionL
-// @param aAction pointer to upnp action object
-// @return Returns upnp error code
-// ---------------------------------------------------------------------------------
-//
-TUpnpErrorCode CUpnpTmAppServerService::GetAppListActionL( CUpnpAction* aAction )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_GETAPPLISTACTIONL_ENTRY );
- // Fetch the value for app listing filter argument
- const TDesC8& filter = aAction->ArgumentValue(KAppFilter);
- // Validate the AppListing filter string
- // AppListingFilter input argument can contain wither wildcard(*) or
- // a well formatted string
- if ( ( filter.Compare(KWildCard ) != KErrNone ) && ( filter.Find(Keq) == KErrNotFound ))
- {
- // The filter string is having neither wildcard(*) nor a proper string( =" is missing )
- OstTrace0( TRACE_ERROR, DUP2_CUPNPTMAPPSERVERSERVICE_GETAPPLISTACTIONL, "CUpnpTmAppServerService::GetAppListActionL" );
- return EInvalidArgs; // invalid AppListingFilter argument
- }
-
- // Fetch the value for profile ID argument
- TUint profileIdInt;
- ConvertDescriptorToInt( aAction->ArgumentValue(KProfileId), profileIdInt );
- OstTrace1( TRACE_NORMAL, CUPNPTMAPPSERVERSERVICE_GETAPPLISTACTIONL, "CUpnpTmAppServerService::GetAppListActionL;profileIdInt=%u", profileIdInt );
-
- TTerminalModeErrorCode ret;
- const TDesC8& appList = iTmServerImpl.GetApplicationListL( filter,profileIdInt,ret );
- if ( ret != ETerminalModeSuccess )
- {
- OstTrace1( TRACE_ERROR, DUP1_CUPNPTMAPPSERVERSERVICE_GETAPPLISTACTIONL, "CUpnpTmAppServerService::GetAppListActionL;ret=%d", ret );
- return TUpnpErrorCode( ret );
- }
- aAction->SetArgumentL( KAppListing, appList );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_GETAPPLISTACTIONL_EXIT );
- return EHttpOk;
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::LaunchAppActionL
-// @param aAction pointer to upnp action object
-// @return Returns upnp error code
-// ---------------------------------------------------------------------------------
-//
-TUpnpErrorCode CUpnpTmAppServerService::LaunchAppActionL( CUpnpAction* aAction )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_LAUNCHAPPACTIONL_ENTRY );
- TUint appIdInt;
- TUint profileIdInt;
- // Validates the input parameters
- if ( ( ConvertDescriptorToInt( aAction->ArgumentValue(KAppId), appIdInt ) != KErrNone )
- || ( ConvertDescriptorToInt( aAction->ArgumentValue(KProfileId), profileIdInt ) != KErrNone ))
- {
- OstTraceExt2( TRACE_ERROR, CUPNPTMAPPSERVERSERVICE_LAUNCHAPPACTIONL, "CUpnpTmAppServerService::LaunchAppActionL;appIdInt=%u;profileIdInt=%u", appIdInt, profileIdInt );
- return EInvalidArgs; // either invalid app ID or invalid profile ID
- }
-
- RBuf8 launchUrl;
- TTerminalModeErrorCode ret = iTmServerImpl.LaunchApp( appIdInt,profileIdInt,launchUrl );
-
- if ( ret != ETerminalModeSuccess )
- {
- // Error is returned
- launchUrl.Close();
- OstTrace0( TRACE_ERROR, DUP1_CUPNPTMAPPSERVERSERVICE_LAUNCHAPPACTIONL, "CUpnpTmAppServerService::LaunchAppActionL" );
- return TUpnpErrorCode( ret );
- }
- CleanupClosePushL(launchUrl);
- aAction->SetArgumentL( KAppLaunchUri , launchUrl );
-
- CleanupStack::PopAndDestroy(&launchUrl);
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_LAUNCHAPPACTIONL_EXIT );
- return EHttpOk;
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::TerminateAppActionL
-// @param aAction pointer to upnp action object
-// @return Returns upnp error code
-// ---------------------------------------------------------------------------------
-//
-TUpnpErrorCode CUpnpTmAppServerService::TerminateAppActionL( CUpnpAction* aAction )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_TERMINATEAPPACTIONL_ENTRY );
- // Validates the input parameters
- TUint appIdInt;
- TUint profileIdInt;
- if ( ( ConvertDescriptorToInt( aAction->ArgumentValue(KAppId), appIdInt ) != KErrNone )
- || ( ConvertDescriptorToInt( aAction->ArgumentValue(KProfileId), profileIdInt ) != KErrNone ))
- {
- OstTraceExt2( TRACE_ERROR, CUPNPTMAPPSERVERSERVICE_TERMINATEAPPACTIONL, "CUpnpTmAppServerService::TerminateAppActionL;appIdInt=%u;profileIdInt=%u", appIdInt, profileIdInt );
- return EInvalidArgs; // either invalid app ID or invalid profile ID
- }
-
- TTerminalModeErrorCode ret = iTmServerImpl.TerminateApp( appIdInt,profileIdInt );
- if ( ret != ETerminalModeSuccess )
- {
- // Error is returned
- aAction->SetArgumentL( KAppTerminateResult,KStatusFalse );
- OstTrace0( TRACE_ERROR, DUP1_CUPNPTMAPPSERVERSERVICE_TERMINATEAPPACTIONL, "CUpnpTmAppServerService::TerminateAppActionL" );
- return TUpnpErrorCode( ret );
- }
- aAction->SetArgumentL( KAppTerminateResult,KStatusTrue);
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_TERMINATEAPPACTIONL_EXIT );
- return EHttpOk;
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::GetAppStatusActionL
-// @param aAction Pointer to upnp action object
-// @return Returns upnp error code
-// ---------------------------------------------------------------------------------
-//
-TUpnpErrorCode CUpnpTmAppServerService::GetAppStatusActionL( CUpnpAction* aAction )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_GETAPPSTATUSACTIONL_ENTRY );
- const TDesC8& appId= aAction->ArgumentValue(KAppId);
- // Check if the appID argument has either wildcard character(*)
- // or a valid integer as its value
- TUint appIdInt;
- if ( (( appId.Compare( KWildCard ) != KErrNone ) &&
- ( ConvertDescriptorToInt( appId, appIdInt ) != KErrNone )) )
- {
- OstTrace1( TRACE_ERROR, CUPNPTMAPPSERVERSERVICE_GETAPPSTATUSACTIONL, "CUpnpTmAppServerService::GetAppStatusActionL;appIdInt=%u", appIdInt );
- return EInvalidArgs; // invalid input argument
- }
- RBuf8 appStatusBuf;
- CleanupClosePushL(appStatusBuf);
- TTerminalModeErrorCode ret;
- iTmServerImpl.GetAppStatusL( appId, appStatusBuf, ret);
-
- if ( ret != ETerminalModeSuccess )
- {
- CleanupStack::PopAndDestroy(&appStatusBuf);
- OstTrace0( TRACE_ERROR, DUP1_CUPNPTMAPPSERVERSERVICE_GETAPPSTATUSACTIONL, "CUpnpTmAppServerService::GetAppStatusActionL" );
- return TUpnpErrorCode( ret );
- }
- aAction->SetArgumentL( KAppStatus, appStatusBuf );
-
- CleanupStack::PopAndDestroy(&appStatusBuf);
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_GETAPPSTATUSACTIONL_EXIT );
- return EHttpOk;
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::NewTransactionL
-// This method is invoked whenever http request related to icon file transfer
-// arrives to http server from remote client
-// @param aMethod Http message method ( GET, HEAD or POST )
-// @param aUri Http message request uri
-// @param aSender IP address of the Http message sender
-// @param[out] aTrans Returns newly created transaction object
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::NewTransactionL( const TDesC8& aMethod, const TDesC8& aUri,
- const TInetAddr& /*aSender*/, CUpnpHttpServerTransaction*& aResultTrans )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_NEWTRANSACTIONL_ENTRY );
- if ( aMethod != KHttpPost() )
- {
- iTmServerImpl.GetIconInfoL(aUri, aResultTrans);
- }
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_NEWTRANSACTIONL_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::HttpEventLD
-// Provides file transfer completion status
-// Notifies about the HTTP events, errors.
-// Handling of http events is not provided in Terminal Mode Service
-// @param aMessage the HTTP message
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::HttpEventLD( CUpnpHttpMessage* /*aMessage*/ )
- {
-
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::AppStatusUpdateEventL
-// Notifies the client about the status updates.
-// @param aStatusUpdateBuffer Buffer holding the update status information.
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::AppStatusUpdateEventL( const TDesC8& aStatusUpdateBuffer )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_APPSTATUSUPDATEEVENTL_ENTRY );
- SetStateVariableL( KArgTypeAppStatusUpdate, aStatusUpdateBuffer, EFalse );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_APPSTATUSUPDATEEVENTL_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::AppListUpdateEventL
-// Notifies the client about the app list updates.
-// @param aListUpdateBuffer Buffer holding the update app list information.
-// ---------------------------------------------------------------------------------
-//
-void CUpnpTmAppServerService::AppListUpdateEventL( const TDesC8& aListUpdateBuffer )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_APPLISTUPDATEEVENTL_ENTRY );
- SetStateVariableL( KArgTypeAppListUpdate, aListUpdateBuffer, EFalse );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_APPLISTUPDATEEVENTL_EXIT );
- }
-
-// ---------------------------------------------------------------------------------
-// CUpnpTmAppServerService::ConvertDescriptorToInt
-// Utility method to convert descriptor's data to integer
-// @param aDes Descriptor whose integer equivalent have to be calculated
-// @param aIntVal[out] Integer value
-// @return Returns error code
-// ---------------------------------------------------------------------------------
-//
-TInt CUpnpTmAppServerService::ConvertDescriptorToInt( const TDesC8& aDes, TUint& aIntVal )
- {
- OstTraceFunctionEntry0( CUPNPTMAPPSERVERSERVICE_CONVERTDESCRIPTORTOINT_ENTRY );
- aIntVal = KErrNone;
- TLex8 lex( aDes );
- OstTrace1( TRACE_NORMAL, CUPNPTMAPPSERVERSERVICE_CONVERTDESCRIPTORTOINT, "CUpnpTmAppServerService::ConvertDescriptorToInt;aIntVal=%u", aIntVal );
- OstTraceFunctionExit0( CUPNPTMAPPSERVERSERVICE_CONVERTDESCRIPTORTOINT_EXIT );
- return lex.Val(aIntVal);
- }
-
-//End of File