contextframework/cfw/src/cfclient/CFClientImpl.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfw/src/cfclient/CFClientImpl.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,574 @@
+/*
+* Copyright (c) 2002-2008 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:  CFClientImpl class implementation.
+*
+*/
+
+
+// SYSTEM INCLUDE FILES
+#include <cfcontextdataobject.h>
+
+// USER INCLUDES
+#include "CFClientImpl.h"
+#include "cfactionsubscription.h"
+#include "cftrace.h"
+#include "cfcontextservice.h"
+#include "cfactionservice.h"
+#include "cfscriptservice.h"
+
+CCFClientImpl* CCFClientImpl::NewL(
+    MCFListener& aListener )
+    {
+    FUNC_LOG;
+    
+    CCFClientImpl* self = CCFClientImpl::NewLC( aListener );
+    CleanupStack::Pop( self );
+    
+    return self;
+    }
+
+CCFClientImpl* CCFClientImpl::NewLC(
+    MCFListener& aListener )
+    {
+    FUNC_LOG;
+    
+    CCFClientImpl* self = new( ELeave ) CCFClientImpl;
+    
+    CleanupStack::PushL( self );
+    self->ConstructL( aListener );
+    
+    return self;
+    }
+    
+CCFClientImpl::~CCFClientImpl()
+    {
+    FUNC_LOG;
+
+    delete iContextService;
+    delete iActionService;
+    delete iScriptService;
+    iCFClientSession.Close();
+    }
+    
+void CCFClientImpl::ConstructL( MCFListener& aListener )
+    {
+    FUNC_LOG;
+    
+    // Connect to cfserver
+    iCFClientSession.ConnectL();
+    
+    // Create services
+    iContextService = CCFContextService::NewL( iCFClientSession, aListener );
+    iActionService = CCFActionService::NewL( iCFClientSession, aListener );
+    iScriptService = CCFScriptService::NewL( iCFClientSession, aListener );
+    }
+    
+CCFClientImpl::CCFClientImpl()
+    {
+    FUNC_LOG;
+    }
+
+// METHODS
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DefineContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DefineContext( const TDesC& aContextSource,
+    const TDesC& aContextType,
+    const TSecurityPolicy& aSecurityPolicy )
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Defining context through CFClient: [%S: %S]",
+        &aContextSource,
+        &aContextType );
+    
+    TInt err = iContextService->DefineContext( aContextSource,
+        aContextType,
+        aSecurityPolicy, aSecurityPolicy );
+
+    ERROR_1( err, "Define context failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DefineContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DefineContext( const TDesC& aContextSource,
+    const TDesC& aContextType,
+    const TSecurityPolicy& aReadPolicy,
+    const TSecurityPolicy& aWritePolicy )
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Defining context through CFClient: [%S: %S]",
+        &aContextSource,
+        &aContextType );
+        
+    TInt err = iContextService->DefineContext( aContextSource,
+        aContextType,
+        aReadPolicy, aWritePolicy );
+
+    ERROR_1( err, "Define context failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::PublishContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::PublishContext( CCFContextObject& aContext )
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Publishing context through CFClient: [%S: %S]",
+        &aContext.Source(),
+        &aContext.Type() );
+    
+    TRAPD( err, iContextService->PublishContextL( aContext ) );
+        
+    ERROR_1( err, "Publish context failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::PublishContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::PublishContext( CCFContextObject& aContext,
+    CCFContextDataObject& aData )
+    {
+    FUNC_LOG;
+
+    INFO_2( "Publishing context through CFClient: [%S: %S]",
+        &aContext.Source(),
+        &aContext.Type() );
+    INFO_1( "Publishing context data through CFClient: [%x]",
+        aData.Uid() );
+    
+    TRAPD( err, iContextService->PublishContextL( aContext, aData ) );
+        
+    ERROR_1( err, "Publish context failed with code: %d", err );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::SubscribeContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::SubscribeContext( CCFContextSubscription& aSubscription )
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Subscribing context through CFClient: [%S: %S]",
+        &aSubscription.ContextSource(),
+        &aSubscription.ContextType() );
+    
+    TRAPD( err, iContextService->SubscribeContextL( aSubscription ) );
+    
+    ERROR_1( err, "Subscribe context failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::Unsubscribe
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::UnsubscribeContext( CCFContextSubscription& aSubscription )
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Unsubscribing context through CFClient: [%S: %S]",
+        &aSubscription.ContextSource(),
+        &aSubscription.ContextType() );
+
+    TRAPD( err, iContextService->UnsubscribeContextL( aSubscription ) );
+    
+    ERROR_1( err, "Unsubscribe context failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::RequestContext
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::RequestContext( CCFContextQuery& aContextQuery,
+    RContextObjectArray& aRequestResults)
+    {
+    FUNC_LOG;
+    
+    INFO_2( "Requesting context through CFClient: [%S: %S]",
+        &aContextQuery.Source(),
+        &aContextQuery.Type() );
+
+    TRAPD( err, iContextService->RequestContextL(
+        aContextQuery, aRequestResults ) );
+
+    ERROR_1( err, "Request context failed with code: %d", err );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::RequestContextSet
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::RequestContextSet( RContextQueryArray& aContextQuerySet,
+    RContextObjectArray& aRequestResults)
+    {
+    FUNC_LOG;
+    
+    TInt count = aContextQuerySet.Count();
+    for( TInt i = 0; i < count; i++ )
+        {
+        INFO_2( "Requesting context through CFClient: [%S: %S]",
+            &aContextQuerySet[i]->Source(),
+            &aContextQuerySet[i]->Type() );
+        }
+    
+    TRAPD( err, iContextService->RequestContextSetL(
+        aContextQuerySet, aRequestResults ) );
+
+    ERROR_1( err, "Request context set failed with code: %d", err );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::SubscribeAction
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::SubscribeAction( CCFActionSubscription& aSubscription )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Subscribing action through CFClient: [%S]",
+        &aSubscription.ActionIdentifier() );
+    
+    TRAPD( err, iActionService->SubscribeActionL( aSubscription ) );
+    
+    ERROR_1( err, "Subscribe action failed with code: %d", err );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::UnsubscribeAction
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::UnsubscribeAction( CCFActionSubscription& aSubscription )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Unsubscribing action through CFClient: [%S]",
+        &aSubscription.ActionIdentifier() );
+    
+    TRAPD( err, iActionService->UnsubscribeActionL( aSubscription ) );
+    
+    ERROR_1( err, "Unsubscribe action failed with code: %d", err );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::RegisterScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::RegisterScript( const TDesC& aScript, TInt& aScriptId )
+    {
+    FUNC_LOG;
+    
+    INFO( "Registering script through CFClient" );
+
+    TInt scriptId = iScriptService->RegisterScript( aScript );
+    if (scriptId < 0)
+    	{
+    	ERROR_1( scriptId, "Script registering failed with code: %d",
+    		scriptId );
+    	return scriptId; // returned as an error
+    	}
+    else 
+    	{
+    	aScriptId = scriptId;
+    	return KErrNone;
+    	}
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::RegisterScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::RegisterScript( const TDesC& aScriptFileName,
+    const TDesC8& aScript,
+    TInt& aScriptId )
+    {
+    FUNC_LOG;
+    
+    INFO( "Registering script through CFClient" );
+
+    TInt scriptId = iScriptService->RegisterScript(
+        aScript, aScriptFileName );
+    if (scriptId < 0)
+    	{
+    	ERROR_1( scriptId, "Script registering failed with code: %d",
+    		scriptId );
+    	return scriptId; // returned as an error
+    	}
+    else 
+    	{
+    	aScriptId = scriptId;
+    	return KErrNone;
+    	}
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DeregisterScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DeregisterScript( TInt aScriptId )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Deregistering script with id [%d] through CFClient", aScriptId );
+
+    TInt err = iScriptService->DeregisterScript( aScriptId );
+    
+    ERROR( err, "Script deregistering failed!" );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DefineAction
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DefineAction( const TDesC& aActionIdentifier,
+    const TSecurityPolicy& aSecurityPolicy )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Defining action through CFClient: [%S]", &aActionIdentifier );
+    
+    TInt err = iActionService->DefineAction(
+        aActionIdentifier,
+        aSecurityPolicy );
+    
+    ERROR_1( err, "Define action failed with code: %d", err );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::SaveContextSourceSetting
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::SaveContextSourceSetting( const TDesC& aSettingFilename,
+    const TUid& aContextSourceUid )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Installing context source setting [%S] through CFClient",
+            &aSettingFilename );
+    
+    TInt err = iContextService->InstallContextSourceSetting( aSettingFilename,
+            aContextSourceUid );
+    
+    ERROR_1( err, "Installing context source setting [%S] through CFClient failed",
+            &aSettingFilename );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DeleteContextSourceSetting
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DeleteContextSourceSetting( const TDesC& aSettingFilename,
+    const TUid& aContextSourceUid )
+    {
+    FUNC_LOG;
+    
+    INFO_1( "Uninstalling context source setting [%S] through CFClient",
+            &aSettingFilename );
+    
+    TInt err = iContextService->UninstallContextSourceSetting( aSettingFilename,
+            aContextSourceUid );
+    
+    ERROR_1( err, "Uninstalling context source setting [%S] through CFClient failed",
+            &aSettingFilename );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DeleteContextSourceSettings
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DeleteContextSourceSettings( const TUid& aContextSourceUid )
+    {
+    FUNC_LOG;
+    
+    INFO( "Uninstalling context source settings through CFClient" );
+    
+    TInt err = iContextService->UninstallContextSourceSettings(
+            aContextSourceUid );
+    
+    ERROR( err, "Uninstalling context source settings through CFClient failed" );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::SaveScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::SaveScript( const TDesC& aScriptFileName,
+    TInt& aScriptId )
+    {
+    FUNC_LOG;
+    
+    INFO( "Register and save script through CFClient" );
+
+    TInt err = iScriptService->SaveScript( aScriptFileName );
+    if( err >= KErrNone )
+        {
+        aScriptId = err;
+        err = KErrNone;
+        }
+    
+    ERROR( err, "Register and save script through CFClient failed" );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::SaveScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::SaveScript( const TDesC& aScriptFileName,
+    const TDesC8& aScript,
+    TInt& aScriptId )
+    {
+    FUNC_LOG;
+
+    INFO( "Register and save script stream through CFClient" );
+
+    TInt err = iScriptService->SaveScript(
+        aScript, aScriptFileName );
+    if( err >= KErrNone )
+        {
+        aScriptId = err;
+        err = KErrNone;
+        }
+    
+    ERROR( err, "Register and save script stream through CFClient failed" );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DeleteScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DeleteScript( const TDesC& aScriptFileName )
+    {
+    FUNC_LOG;
+    
+    INFO( "Deregister and delete script through CFClient" );
+    
+    TInt err = iScriptService->DeleteScript( aScriptFileName );
+    
+    ERROR( err, "Deregister and delete script through CFClient failed" );
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::DeleteScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::DeleteScripts()
+    {
+    FUNC_LOG;
+    
+    INFO( "Deregister and delete scripts through CFClient" );
+    
+    TInt err = iScriptService->DeleteScripts();
+    
+    ERROR( err, "Deregister and delete scripts through CFClient failed" );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::UpgradeRomScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::UpgradeRomScript( const TDesC& aScriptFileName )
+    {
+    FUNC_LOG;
+    
+    INFO( "Upgrade rom script through CFClient" );
+
+    TInt err = iScriptService->UpgradeRomScript( aScriptFileName );
+    
+    ERROR( err, "Upgrade rom script through CFClient failed" );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::UpgradeRomScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::UpgradeRomScript( const TDesC& aScriptFileName,
+    const TDesC8& aScript )
+    {
+    FUNC_LOG;
+    
+    INFO( "Upgrade rom script des through CFClient" );
+
+    TInt err = iScriptService->UpgradeRomScriptDes( aScriptFileName, aScript );
+    
+    ERROR( err, "Upgrade rom script des through CFClient failed" );
+
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+// CCFClientImpl::RestoreRomScript
+//----------------------------------------------------------------------------
+//
+TInt CCFClientImpl::RestoreRomScript( const TDesC& aScriptFileName )
+    {
+    FUNC_LOG;
+    
+    INFO( "Restore rom script through CFClient" );
+
+    TInt err = iScriptService->RestoreRomScript( aScriptFileName );
+    
+    ERROR( err, "Restore rom script through CFClient failed" );
+
+    return err;
+    }
+
+// End of file