# HG changeset patch # User hgs # Date 1282562808 -10800 # Node ID 3bc36dbd63c2ae25a4d0d0a952e28006c4bbda5a # Parent d88d70d98bbc2e73e6b19c4cc84f37572ccd823e 201033 diff -r d88d70d98bbc -r 3bc36dbd63c2 tsrc/conf/ats_apitests.txt --- a/tsrc/conf/ats_apitests.txt Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -;Run \vado\videoplayer\tsrc\testing\tools\genATSdrop.pl from -;the tsrc folder to create ATS3 drop. -DEVICE INSERT_DEVICE -EMAIL INSERT_EMAIL -FLASH INSERT_FLASH_IMAGE -FLASH INSERT_FLASH_IMAGE -FLASH INSERT_FLASH_IMAGE -SIS \VideoApp_Domain\videoplayer\videoplayerapp\mpxvideoplayer\sis\VideoPlayer.sisx -INC ..\..\videoutils_plat\videoconnutility_api\tsrc\conf\atsconf.txt -INC ..\..\videoutils_plat\videoscheduler_api\tsrc\conf\atsconf.txt diff -r d88d70d98bbc -r 3bc36dbd63c2 tsrc/group/bld.inf --- a/tsrc/group/bld.inf Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2006 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: Build information file for Generic test modules under videoutils* -*/ - - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -PRJ_TESTMMPFILES -#include "../../videoutils_plat/videoconnutility_api/tsrc/group/bld.inf" -#include "../../videoutils_plat/videoscheduler_api/tsrc/group/bld.inf" diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/BWINS/CseSchedulerClientU.DEF --- a/videoscheduler/SchedulerClient/BWINS/CseSchedulerClientU.DEF Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -EXPORTS - ??0CCseScheduledProgram@@IAE@XZ @ 1 NONAME ; CCseScheduledProgram::CCseScheduledProgram(void) - ??1CCseScheduledProgram@@UAE@XZ @ 2 NONAME ; CCseScheduledProgram::~CCseScheduledProgram(void) - ??1CCseSchedulerApi@@UAE@XZ @ 3 NONAME ; CCseSchedulerApi::~CCseSchedulerApi(void) - ?AddSchedule@CCseSchedulerApi@@QBEHAAVCCseScheduledProgram@@@Z @ 4 NONAME ; int CCseSchedulerApi::AddSchedule(class CCseScheduledProgram &) const - ?AppUid@CCseScheduledProgram@@QBEJXZ @ 5 NONAME ; long CCseScheduledProgram::AppUid(void) const - ?ApplicationData@CCseScheduledProgram@@QAE?AVTPtrC8@@XZ @ 6 NONAME ; class TPtrC8 CCseScheduledProgram::ApplicationData(void) - ?DbIdentifier@CCseScheduledProgram@@QBEKXZ @ 7 NONAME ; unsigned long CCseScheduledProgram::DbIdentifier(void) const - ?DebugDump@CCseScheduledProgram@@QBEXXZ @ 8 NONAME ; void CCseScheduledProgram::DebugDump(void) const - ?EndTime@CCseScheduledProgram@@QAEAAVTTime@@XZ @ 9 NONAME ; class TTime & CCseScheduledProgram::EndTime(void) - ?ExternalizeL@CCseScheduledProgram@@QAEXAAVRWriteStream@@@Z @ 10 NONAME ; void CCseScheduledProgram::ExternalizeL(class RWriteStream &) - ?ExternalizeLength@CCseScheduledProgram@@QAEHXZ @ 11 NONAME ; int CCseScheduledProgram::ExternalizeLength(void) - ?GetOverlappingSchedules@CCseSchedulerApi@@QAEHAAVCCseScheduledProgram@@AAV?$RPointerArray@VCCseScheduledProgram@@@@@Z @ 12 NONAME ; int CCseSchedulerApi::GetOverlappingSchedules(class CCseScheduledProgram &, class RPointerArray &) - ?GetSchedule@CCseSchedulerApi@@QBEHKPAVCCseScheduledProgram@@@Z @ 13 NONAME ; int CCseSchedulerApi::GetSchedule(unsigned long, class CCseScheduledProgram *) const - ?GetSchedulesByAppUid@CCseSchedulerApi@@QBEHJAAV?$RPointerArray@VCCseScheduledProgram@@@@@Z @ 14 NONAME ; int CCseSchedulerApi::GetSchedulesByAppUid(long, class RPointerArray &) const - ?GetSchedulesByPluginUid@CCseSchedulerApi@@QBEHJAAV?$RPointerArray@VCCseScheduledProgram@@@@@Z @ 15 NONAME ; int CCseSchedulerApi::GetSchedulesByPluginUid(long, class RPointerArray &) const - ?GetSchedulesByTime@CCseSchedulerApi@@QBEHABVTTime@@0AAV?$RPointerArray@VCCseScheduledProgram@@@@@Z @ 16 NONAME ; int CCseSchedulerApi::GetSchedulesByTime(class TTime const &, class TTime const &, class RPointerArray &) const - ?GetSchedulesByType@CCseSchedulerApi@@QBEHJAAV?$RPointerArray@VCCseScheduledProgram@@@@@Z @ 17 NONAME ; int CCseSchedulerApi::GetSchedulesByType(long, class RPointerArray &) const - ?InternalizeL@CCseScheduledProgram@@QAEXAAVRReadStream@@@Z @ 18 NONAME ; void CCseScheduledProgram::InternalizeL(class RReadStream &) - ?Name@CCseScheduledProgram@@QBE?AVTPtrC8@@XZ @ 19 NONAME ; class TPtrC8 CCseScheduledProgram::Name(void) const - ?NewL@CCseScheduledProgram@@SAPAV1@AAV1@@Z @ 20 NONAME ; class CCseScheduledProgram * CCseScheduledProgram::NewL(class CCseScheduledProgram &) - ?NewL@CCseScheduledProgram@@SAPAV1@XZ @ 21 NONAME ; class CCseScheduledProgram * CCseScheduledProgram::NewL(void) - ?NewL@CCseSchedulerApi@@SAPAV1@XZ @ 22 NONAME ; class CCseSchedulerApi * CCseSchedulerApi::NewL(void) - ?PluginType@CCseScheduledProgram@@QBEJXZ @ 23 NONAME ; long CCseScheduledProgram::PluginType(void) const - ?PluginUid@CCseScheduledProgram@@QBEJXZ @ 24 NONAME ; long CCseScheduledProgram::PluginUid(void) const - ?RemoveSchedule@CCseSchedulerApi@@QBEHK@Z @ 25 NONAME ; int CCseSchedulerApi::RemoveSchedule(unsigned long) const - ?ScheduleType@CCseScheduledProgram@@QBEJXZ @ 26 NONAME ; long CCseScheduledProgram::ScheduleType(void) const - ?SetAppUid@CCseScheduledProgram@@QAEXJ@Z @ 27 NONAME ; void CCseScheduledProgram::SetAppUid(long) - ?SetApplicationDataL@CCseScheduledProgram@@QAEXABVTDesC8@@@Z @ 28 NONAME ; void CCseScheduledProgram::SetApplicationDataL(class TDesC8 const &) - ?SetDbIdentifier@CCseScheduledProgram@@QAEXK@Z @ 29 NONAME ; void CCseScheduledProgram::SetDbIdentifier(unsigned long) - ?SetEndTime@CCseScheduledProgram@@QAEXABVTTime@@@Z @ 30 NONAME ; void CCseScheduledProgram::SetEndTime(class TTime const &) - ?SetName@CCseScheduledProgram@@QAEXABVTDesC8@@@Z @ 31 NONAME ; void CCseScheduledProgram::SetName(class TDesC8 const &) - ?SetPluginType@CCseScheduledProgram@@QAEXJ@Z @ 32 NONAME ; void CCseScheduledProgram::SetPluginType(long) - ?SetPluginUid@CCseScheduledProgram@@QAEXJ@Z @ 33 NONAME ; void CCseScheduledProgram::SetPluginUid(long) - ?SetScheduleType@CCseScheduledProgram@@QAEXJ@Z @ 34 NONAME ; void CCseScheduledProgram::SetScheduleType(long) - ?SetStartTime@CCseScheduledProgram@@QAEXABVTTime@@@Z @ 35 NONAME ; void CCseScheduledProgram::SetStartTime(class TTime const &) - ?StartTime@CCseScheduledProgram@@QAEAAVTTime@@XZ @ 36 NONAME ; class TTime & CCseScheduledProgram::StartTime(void) - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/EABI/CseSchedulerClientU.DEF --- a/videoscheduler/SchedulerClient/EABI/CseSchedulerClientU.DEF Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -EXPORTS - _ZN16CCseSchedulerApi23GetOverlappingSchedulesER20CCseScheduledProgramR13RPointerArrayIS0_E @ 1 NONAME - _ZN16CCseSchedulerApi4NewLEv @ 2 NONAME - _ZN16CCseSchedulerApiD0Ev @ 3 NONAME - _ZN16CCseSchedulerApiD1Ev @ 4 NONAME - _ZN16CCseSchedulerApiD2Ev @ 5 NONAME - _ZN20CCseScheduledProgram10SetEndTimeERK5TTime @ 6 NONAME - _ZN20CCseScheduledProgram12ExternalizeLER12RWriteStream @ 7 NONAME - _ZN20CCseScheduledProgram12InternalizeLER11RReadStream @ 8 NONAME - _ZN20CCseScheduledProgram12SetPluginUidEl @ 9 NONAME - _ZN20CCseScheduledProgram12SetStartTimeERK5TTime @ 10 NONAME - _ZN20CCseScheduledProgram13SetPluginTypeEl @ 11 NONAME - _ZN20CCseScheduledProgram15ApplicationDataEv @ 12 NONAME - _ZN20CCseScheduledProgram15SetDbIdentifierEm @ 13 NONAME - _ZN20CCseScheduledProgram15SetScheduleTypeEl @ 14 NONAME - _ZN20CCseScheduledProgram17ExternalizeLengthEv @ 15 NONAME - _ZN20CCseScheduledProgram19SetApplicationDataLERK6TDesC8 @ 16 NONAME - _ZN20CCseScheduledProgram4NewLERS_ @ 17 NONAME - _ZN20CCseScheduledProgram4NewLEv @ 18 NONAME - _ZN20CCseScheduledProgram7EndTimeEv @ 19 NONAME - _ZN20CCseScheduledProgram7SetNameERK6TDesC8 @ 20 NONAME - _ZN20CCseScheduledProgram9SetAppUidEl @ 21 NONAME - _ZN20CCseScheduledProgram9StartTimeEv @ 22 NONAME - _ZN20CCseScheduledProgramC1Ev @ 23 NONAME - _ZN20CCseScheduledProgramC2Ev @ 24 NONAME - _ZN20CCseScheduledProgramD0Ev @ 25 NONAME - _ZN20CCseScheduledProgramD1Ev @ 26 NONAME - _ZN20CCseScheduledProgramD2Ev @ 27 NONAME - _ZNK16CCseSchedulerApi11AddScheduleER20CCseScheduledProgram @ 28 NONAME - _ZNK16CCseSchedulerApi11GetScheduleEmP20CCseScheduledProgram @ 29 NONAME - _ZNK16CCseSchedulerApi14RemoveScheduleEm @ 30 NONAME - _ZNK16CCseSchedulerApi18GetSchedulesByTimeERK5TTimeS2_R13RPointerArrayI20CCseScheduledProgramE @ 31 NONAME - _ZNK16CCseSchedulerApi18GetSchedulesByTypeElR13RPointerArrayI20CCseScheduledProgramE @ 32 NONAME - _ZNK16CCseSchedulerApi20GetSchedulesByAppUidElR13RPointerArrayI20CCseScheduledProgramE @ 33 NONAME - _ZNK16CCseSchedulerApi23GetSchedulesByPluginUidElR13RPointerArrayI20CCseScheduledProgramE @ 34 NONAME - _ZNK20CCseScheduledProgram10PluginTypeEv @ 35 NONAME - _ZNK20CCseScheduledProgram12DbIdentifierEv @ 36 NONAME - _ZNK20CCseScheduledProgram12ScheduleTypeEv @ 37 NONAME - _ZNK20CCseScheduledProgram4NameEv @ 38 NONAME - _ZNK20CCseScheduledProgram6AppUidEv @ 39 NONAME - _ZNK20CCseScheduledProgram9DebugDumpEv @ 40 NONAME - _ZNK20CCseScheduledProgram9PluginUidEv @ 41 NONAME - _ZTI16CCseSchedulerApi @ 42 NONAME ; ## - _ZTI19RCseSchedulerClient @ 43 NONAME ; ## - _ZTI20CCseScheduledProgram @ 44 NONAME ; ## - _ZTI20RCseSchedulerService @ 45 NONAME ; ## - _ZTI24RCseSchedulerServiceBase @ 46 NONAME ; ## - _ZTV16CCseSchedulerApi @ 47 NONAME ; ## - _ZTV19RCseSchedulerClient @ 48 NONAME ; ## - _ZTV20CCseScheduledProgram @ 49 NONAME ; ## - _ZTV20RCseSchedulerService @ 50 NONAME ; ## - _ZTV24RCseSchedulerServiceBase @ 51 NONAME ; ## - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/group/CseSchedulerClient.mmp --- a/videoscheduler/SchedulerClient/group/CseSchedulerClient.mmp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2006 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: This is a project specification file for Common Scheduling Engine / client* -*/ - - - - -#include -#include - -//OPTION ARMCC --asm --interleave -ALWAYS_BUILD_AS_ARM - -TARGET cseschedulerclient.dll -TARGETTYPE dll -UID 0x1000008d 0x10281F1F - -CAPABILITY CAP_ECOM_PLUGIN DRM - -// ECom Dll recognition UID followed by the unique UID for this dll - -SOURCEPATH ../src -SOURCE CCseSchedulerAPI.cpp -SOURCE RCseSchedulerClient.cpp -SOURCE RCseSchedulerService.cpp -SOURCE RCseSchedulerServiceBase.cpp -SOURCE CCseScheduledProgram.cpp - - -USERINCLUDE ../inc -USERINCLUDE ../../inc - -MW_LAYER_SYSTEMINCLUDE - -SOURCEPATH ../data - -LIBRARY euser.lib -LIBRARY efsrv.lib -LIBRARY bafl.lib -LIBRARY flogger.lib -LIBRARY estor.lib - -LANGUAGE_IDS diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/group/bld.inf --- a/videoscheduler/SchedulerClient/group/bld.inf Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2004-2005 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 - -PRJ_PLATFORMS -WINSCW ARMV5 - -PRJ_EXPORTS -../rom/videoschedulerclient.iby CORE_MW_LAYER_IBY_EXPORT_PATH(videoschedulerclient.iby) -PRJ_MMPFILES -CseSchedulerClient.mmp diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/rom/videoschedulerclient.iby --- a/videoscheduler/SchedulerClient/rom/videoschedulerclient.iby Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +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 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: -* -*/ - - -#ifndef __VIDEOSCHEDULERCLIENT_IBY__ -#define __VIDEOSCHEDULERCLIENT_IBY__ - -#include - -file=ABI_DIR\BUILD_DIR\CseSchedulerClient.dll SHARED_LIB_DIR\CseSchedulerClient.dll - -#endif // __VIDEOSCHEDULERCLIENT_IBY__ diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/src/CCseScheduledProgram.cpp --- a/videoscheduler/SchedulerClient/src/CCseScheduledProgram.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,552 +0,0 @@ -/* -* Copyright (c) 2006 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: This class contains data for scheduled programs.* -*/ - - - - -// INCLUDES -#include // Header file for this class -#include "CseDebug.h" // Debug macros - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// --------------------------------------------------------------------------- -// CCseScheduledProgram::CCseScheduledProgram() -// -// --------------------------------------------------------------------------- -EXPORT_C CCseScheduledProgram::CCseScheduledProgram() : - iStartTime( 0 ), - iEndTime( 0 ), - iAppUid( 0 ), - iPluginUid( 0 ), - iDbIdentifier( 0 ), - iScheduleType ( ECseOther ), - iPluginType( ECseUniPlugin ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::CCseScheduledProgram"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::NewL"); - - CCseScheduledProgram* self = new ( ELeave ) CCseScheduledProgram(); - CleanupStack::PushL( self ); - self->ConstructL(); - self->SetName( aProg.Name() ); - self->SetStartTime( aProg.StartTime() ); - self->SetEndTime( aProg.EndTime() ); - self->SetAppUid( aProg.AppUid() ); - self->SetPluginUid( aProg.PluginUid() ); - self->SetDbIdentifier( aProg.DbIdentifier() ); - self->SetApplicationDataL( aProg.ApplicationData() ); - self->SetScheduleType( aProg.ScheduleType() ); - self->SetPluginType( aProg.PluginType() ); - CleanupStack::Pop( self ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::NewL"); - - CCseScheduledProgram* self = new ( ELeave ) CCseScheduledProgram(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::ConstructL"); - iAppData = HBufC8::NewL( 0 ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::~CCseScheduledProgram"); - delete iAppData; - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::SetScheduleType"); - iScheduleType = aScheduleType; - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::SetApplicationData"); - delete iAppData; - iAppData = NULL; - iAppData = aAppData.AllocL(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::ApplicationData"); - return *iAppData; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::InternalizeL -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::InternalizeL( RReadStream& aStream ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::InternalizeL"); - TUint32 lower( 0 ); - TUint32 upper( 0 ); - TInt32 buffLen( 0 ); - - // Name - buffLen = aStream.ReadInt32L(); - aStream.ReadL( iName, buffLen ); - - // Start time - lower = aStream.ReadUint32L(); - upper = aStream.ReadUint32L(); - TInt64 time( 0 ); - time = (TInt64) lower; - TInt64 longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - iStartTime = time; - - // End time - lower = aStream.ReadUint32L(); - upper = aStream.ReadUint32L(); - time = (TInt64) lower; - longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - iEndTime = time; - - // Application UID - iAppUid = aStream.ReadInt32L(); - - // Notifier plug-in UID - iPluginUid = aStream.ReadInt32L(); - - // Db identifier - iDbIdentifier = aStream.ReadUint32L(); - - // Schedule type - iScheduleType = aStream.ReadInt32L(); - - // Plugin type - iPluginType = aStream.ReadInt32L(); - - // Application data length - buffLen = aStream.ReadInt32L(); - - // Application data - delete iAppData; - iAppData = NULL; - iAppData = HBufC8::NewL( buffLen ); - TPtr8 ptr( iAppData->Des() ); - aStream.ReadL( ptr, buffLen ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::ExternalizeL"); - TInt64 temp( 0 ); - TUint32 lower( 0 ); - TUint32 upper( 0 ); - TInt32 buffLen( 0 ); - - // Name - buffLen = iName.Length(); - aStream.WriteInt32L( buffLen ); - aStream.WriteL( iName ); - // Start time - temp = iStartTime.Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - aStream.WriteUint32L( lower ); - aStream.WriteUint32L( upper ); - - // End time - temp = iEndTime.Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - aStream.WriteUint32L( lower ); - aStream.WriteUint32L( upper ); - - // Application UID - aStream.WriteInt32L( iAppUid ); - - // Notifier plug-in UID - aStream.WriteInt32L( iPluginUid ); - - // DbIdentifier - aStream.WriteUint32L( iDbIdentifier ); - - // Schedule type - aStream.WriteInt32L( iScheduleType ); - - // Schedule type - aStream.WriteInt32L( iPluginType ); - - // Application data length - buffLen = iAppData->Length(); - aStream.WriteInt32L( buffLen ); - - // Application data - aStream.WriteL( *iAppData ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::ExternalizeLength"); - TInt retValue( 0 ); - retValue = sizeof( iStartTime ) - +sizeof( iEndTime ) - +sizeof( iAppUid ) - +sizeof( iPluginUid ) - +sizeof( iDbIdentifier ) - +sizeof( iScheduleType ) - +sizeof( iPluginType ) - +sizeof( TInt32 ) // Application data length - +sizeof( TInt32 ) // Name length - +iName.Size( ) // Name - +iAppData->Size( ); // Application data size - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduledProgram::SetPluginType"); - iPluginType = aPluginType; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetName -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetName( const TDesC8& aName ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetName"); - iName = aName; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetDbIdentifier -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetDbIdentifier( const TUint32 aDbIdentifier ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetDbIdentifier"); - iDbIdentifier = aDbIdentifier; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetStartTime -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetStartTime( const TTime& aStartTime ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetStartTime"); - iStartTime = aStartTime; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetEndTime -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetEndTime( const TTime& aEndTime ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetEndTime"); - iEndTime = aEndTime; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetAppUid -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetAppUid( const TInt32 aAppUid ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetAppUid"); - iAppUid = aAppUid; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::SetPluginUid -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::SetPluginUid( const TInt32 aPluginUid ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetPluginUid"); - iPluginUid = aPluginUid; - } - - -// Getters for the instance data -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::GetPluginType -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt32 CCseScheduledProgram::PluginType() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::PluginType"); - return iPluginType; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::Name -// ----------------------------------------------------------------------------- -// -EXPORT_C TPtrC8 CCseScheduledProgram::Name() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::Name"); - return iName; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::DbIdentifier -// ----------------------------------------------------------------------------- -// -EXPORT_C TUint32 CCseScheduledProgram::DbIdentifier() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::DbIdentifier"); - return iDbIdentifier; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::StartTime -// ----------------------------------------------------------------------------- -// -EXPORT_C TTime& CCseScheduledProgram::StartTime() - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::SetDbIdentifier"); - return iStartTime; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::EndTime -// ----------------------------------------------------------------------------- -// -EXPORT_C TTime& CCseScheduledProgram::EndTime() - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::EndTime"); - return iEndTime; - } - - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::ScheduleType -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt32 CCseScheduledProgram::ScheduleType() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::ScheduleType"); - return iScheduleType; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::AppUid -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt32 CCseScheduledProgram::AppUid() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::Appuid"); - return iAppUid; - } - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::PluginUid -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt32 CCseScheduledProgram::PluginUid() const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::PluginUid"); - return iPluginUid; - } - - -// ----------------------------------------------------------------------------- -// CCseScheduledProgram::DebugDump -// ----------------------------------------------------------------------------- -// -EXPORT_C void CCseScheduledProgram::DebugDump() const - { -#ifdef _DEBUG - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduledProgram::DebugDump"); - - // Write schedule name - // Change 8-bit buffer to 16-bit. - HBufC* writeBuff = NULL; - TRAPD( err, writeBuff = HBufC::NewL( iName.Length() ) ); - if(err == KErrNone) - { - TPtr writePtr = writeBuff->Des(); - writePtr.Copy( iName ); - CSELOGSTRING2_HIGH_LEVEL("Schedule name: %S", writeBuff); - } - else - { - CSELOGSTRING2_HIGH_LEVEL("Schedule name: %S", &iName); - } - - // Start time - TBuf<100> startTimeBuf; - _LIT( KDateTimeFormat,"%1%*D/%2%*M/%3%*Y %H:%T:%S" ); - TRAP( err, iStartTime.FormatL( startTimeBuf, KDateTimeFormat ) ); - if ( KErrNone == err ) - { - CSELOGSTRING2_HIGH_LEVEL("Schedule start time: %S", &startTimeBuf); - } - - // End time - TBuf<100> endTimeBuf; - TRAP( err, iEndTime.FormatL( endTimeBuf, KDateTimeFormat ) ); - if ( KErrNone == err ) - { - CSELOGSTRING2_HIGH_LEVEL("Schedule end time: %S", &endTimeBuf); - } - - // Application UID - CSELOGSTRING2_HIGH_LEVEL("Schedule application uid: 0x%x", (unsigned)iAppUid); - - // Plugin UID - CSELOGSTRING2_HIGH_LEVEL("Schedule plugin uid: 0x%x", (unsigned)iPluginUid); - - // Application data - // Write only length of data - CSELOGSTRING2_HIGH_LEVEL("Schedule application data length: %d", iAppData->Length() ); - - // DB identifier - CSELOGSTRING2_HIGH_LEVEL("Schedule DB identifier: %x", iDbIdentifier); - - // Schedule type - switch(iScheduleType) - { - case ECseReminder: - CSELOGSTRING_HIGH_LEVEL("Schedule type: ECseReminder"); - break; - - case ECseRecording: - CSELOGSTRING_HIGH_LEVEL("Schedule type: ECseRecording"); - break; - - case ECseProgramGuideUpdate: - CSELOGSTRING_HIGH_LEVEL("Schedule type: ECseProgramGuideUpdate"); - break; - - case ECseScheduleDownload: - CSELOGSTRING_HIGH_LEVEL("Schedule type: ECseScheduleDownload"); - break; - - case ECseOther: - CSELOGSTRING_HIGH_LEVEL("Schedule type: ECseOther"); - break; - - default: - break; - } - delete writeBuff; - writeBuff = NULL; - - CSELOGSTRING_HIGH_LEVEL("<< // Header file for this class -#include // Represent one schedule in database -#include // Common defines for client and server -#include // Client common methods (server start up etc) -#include "CseDebug.h" // Debug macros -#include - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ============================ MEMBER FUNCTIONS =============================== -// FUNCTION PROTOTYPES - -// ============================ MEMBER FUNCTIONS =============================== - - -// ----------------------------------------------------------------------------- -// CCseSchedulerApi::CCseSchedulerApi -// -// ----------------------------------------------------------------------------- -// -CCseSchedulerApi::CCseSchedulerApi() - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::CCseSchedulerApi"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::NewL"); - CCseSchedulerApi* self = new ( ELeave ) CCseSchedulerApi(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::ConstructL"); - User::LeaveIfError( iClient.Connect() ); - User::LeaveIfError( iService.Open( iClient ) ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::~CCseSchedulerApi"); - iService.Close(); - iClient.Close(); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::AddSchedule"); - TRAPD( err, iService.AddScheduleL( aData ) ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::RemoveSchedule"); - TRAPD( err, iService.RemoveScheduleL( aDbIdentifier ) ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerApi::GetSchedule"); - TRAPD( err, iService.GetScheduleL( aDbIdentifier, aProg ) ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::GetSchedulesByAppUid"); - TRAPD( err, iService.GetSchedulesL( aAppUid, aArray ) ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::GetSchedulesByPluginUid"); - TRAPD( err, iService.GetSchedulesByPluginUidL( aPluginUid, aArray ) ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::GetSchedulesByType"); - TRAPD( err, iService.GetSchedulesByTypeL( aType, aArray ) ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::GetSchedulesByTime"); - TRAPD( err, iService.GetSchedulesByTimeL( aBeginning, aEnd, aArray ) ); - CSELOGSTRING_HIGH_LEVEL("<<& aResultArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerApi::GetOverlappingSchedules"); - TRAPD( err, iService.GetOverlappingSchedulesL( aProgram, aResultArray ) ); - CSELOGSTRING_HIGH_LEVEL("<< // Header for this class -#include "CseDebug.h" // Debug macros -#include // Common defines for client and server -#include -#include - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -const TUint KSchedulingDefaultMessageSlots( 4 ); -const TUint KSchedulingNumberOfServerStartupAttempts( 2 ); - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// LOCAL FUNCTION PROTOTYPES -static TInt StartServer(); -static TInt CreateServerProcess(); - -// FORWARD DECLARATIONS -// None - -// ============================= LOCAL FUNCTIONS =============================== -// ----------------------------------------------------------------------------- -// StartServer -// Returns: Error code -// ----------------------------------------------------------------------------- -// -static TInt StartServer() - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerClient::StartServer"); - TFindServer findServer( KCseSchedulerServerName ); - TFullName name; - - // Server already running? - if ( !findServer.Next( name ) ) - { - return KErrNone; - } - - TInt result( CreateServerProcess() ); - - CSELOGSTRING2_HIGH_LEVEL("<<>>RCseSchedulerClient::CreateServerProcess"); - RProcess server; - TInt result( server.Create( KCseSchedulerServerFileName , _L( "" ) ) ); - - if ( result ) - { - return result; - } - - // Makes the server eligible for execution. - TRequestStatus reqStatus; - server.Rendezvous(reqStatus); - - server.Resume(); - - User::WaitForRequest(reqStatus); - - if( reqStatus.Int() != KErrNone ) - { - server.Close(); - } - - CSELOGSTRING2_HIGH_LEVEL("<<>>RCseSchedulerClient::RCseSchedulerClient"); - // None - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerClient::~RCseSchedulerClient"); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerClient::Connect"); - TInt ret( KErrNotFound ); - TInt retry( KSchedulingNumberOfServerStartupAttempts ); - do - { - // Start - ret = StartServer(); - if ( ret!=KErrNone && ret!=KErrAlreadyExists ) - { - return ret; - } - - // Subsession - ret = CreateSession( KCseSchedulerServerName, Version(), KSchedulingDefaultMessageSlots ); - if ( ret != KErrNotFound && ret != KErrServerTerminated ) - { - return ret; - } - - retry--; - } - while( retry >= 0 ); - - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerClient::Close"); - - TIpcArgs args( TIpcArgs::ENothing ); - SendReceive( ECseServCloseSession, args ); - - RHandleBase::Close(); - - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerClient::Version"); - - return( TVersion( KCseServMajorVersionNumber, - KCseServMinorVersionNumber, - KCseServBuildVersionNumber ) ); - } - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerClient/src/RCseSchedulerService.cpp --- a/videoscheduler/SchedulerClient/src/RCseSchedulerService.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,659 +0,0 @@ -/* -* Copyright (c) 2006 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: Implementation of Scheduler engine client's Service* -*/ - - - - - -// INCLUDE FILES -#include // Header fo this class -#include // Represent one schedule in database -#include "CseDebug.h" // Debug macros -#include // Client common methods (server start up etc) -#include - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None. - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -// None. - -// ============================ MEMBER FUNCTIONS =============================== - - -// ----------------------------------------------------------------------------- -// RCseSchedulerService::RCseSchedulerService -// -// ----------------------------------------------------------------------------- -// -RCseSchedulerService::RCseSchedulerService() : RCseSchedulerServiceBase() - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::RCseSchedulerService"); - // None - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerService::~RCseSchedulerService"); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerService::AddScheduleL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - // First we to "externalize" (put CCseScheduledProgram-class content to array) - // information from given scheduled program. - HBufC8* msg = HBufC8::NewLC( aData.ExternalizeLength() ); - HBufC8* id = HBufC8::NewLC( 4 ); - TPtr8 ptr( msg->Des() ); - TPtr8 idPtr( id->Des() ); - - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( ptr ); - aData.ExternalizeL( writeStream ); - CleanupStack::PopAndDestroy( &writeStream ); - - TIpcArgs args( &ptr, &idPtr ); - - // Send array to server side. - User::LeaveIfError( SendReceive( ECseAddSchedule, args ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idPtr ); - aData.SetDbIdentifier( readStream.ReadUint32L() ); - CleanupStack::PopAndDestroy( &readStream ); - - CleanupStack::PopAndDestroy( id ); - CleanupStack::PopAndDestroy( msg ); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerService::RemoveScheduleL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Put integer value to stream - HBufC8* msg = HBufC8::NewL( 4 ); - CleanupStack::PushL( msg ); - TPtr8 ptr( msg->Des() ); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( ptr ); - writeStream.WriteUint32L( aDbIdentifier ); - CleanupStack::PopAndDestroy( &writeStream ); - - TIpcArgs args( &ptr ); - - // Send stream to server side - User::LeaveIfError( SendReceive( ECseRemoveSchedule, args ) ); - CleanupStack::PopAndDestroy( msg ); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerService::GetScheduleL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - if ( !aProg ) - { - User::Leave( KErrArgument ); - } - // Buffer for DbIdentifier - HBufC8* msgDbId = HBufC8::NewLC( 4 ); - TPtr8 dbIdPtr( msgDbId->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuff = HBufC8::NewLC( 4 ); - TPtr8 lengthPtr( lengthBuff->Des() ); - TInt length( 0 ); - - // Initialize DbIdentifier - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( dbIdPtr ); - writeStream.WriteUint32L( aDbIdentifier ); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &dbIdPtr, &lengthPtr ); - - // Ask for message length - User::LeaveIfError( SendReceive( ECseGetScheduleLength, args ) ); - - // Read length from the message - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthPtr ); - length = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Now ask for the scheduled program information - HBufC8* programBuffer = HBufC8::NewLC( length ); - TPtr8 programPtr( programBuffer->Des() ); - - TIpcArgs progArgs( &dbIdPtr, &programPtr ); - User::LeaveIfError( SendReceive( ECseGetSchedule, progArgs ) ); - - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( programPtr ); - aProg->InternalizeL( readStr ); - CleanupStack::PopAndDestroy( &readStr ); - - CleanupStack::PopAndDestroy( programBuffer ); - CleanupStack::PopAndDestroy( lengthBuff ); - CleanupStack::PopAndDestroy( msgDbId ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::GetSchdulesL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Buffer for app UID - HBufC8* msgAppUid = HBufC8::NewLC( 4 ); - TPtr8 appUidPtr( msgAppUid->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuff = HBufC8::NewLC( 4 ); - TPtr8 lengthPtr( lengthBuff->Des() ); - TInt length( 0 ); - - // Write App Uid - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( appUidPtr ); - writeStream.WriteInt32L( aAppUid ); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &appUidPtr, &lengthPtr ); - - // Ask for message length - User::LeaveIfError( SendReceive( ECseGetScheduleArrayLengthByAppUid, args ) ); - - // Read length from the message - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthPtr ); - length = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Now ask for the scheduled program information - HBufC8* programBuffer = HBufC8::NewLC( length ); - TPtr8 programPtr( programBuffer->Des() ); - - TIpcArgs progArgs( &appUidPtr, &programPtr ); - User::LeaveIfError( SendReceive( ECseGetSchedulesByAppUid, progArgs ) ); - - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( programPtr ); - - // read number of items in stream - TInt itemCount ( 0 ); - itemCount = readStr.ReadInt32L(); - - // read all items from stream to array - for ( TInt i = 0; i < itemCount; i++ ) - { - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - prog->InternalizeL( readStr ); - aArray.AppendL( prog ); - CleanupStack::Pop( prog ); - } - - readStr.Close(); - - CleanupStack::PopAndDestroy( &readStr ); - CleanupStack::PopAndDestroy( programBuffer ); - CleanupStack::PopAndDestroy( lengthBuff ); - CleanupStack::PopAndDestroy( msgAppUid ); - CSELOGSTRING_HIGH_LEVEL("<<& aResultArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::GetOverlappingSchedulesL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Buffer for schedule data - HBufC8* schedData = HBufC8::NewLC( sizeof( TInt32 ) + // type - sizeof( TInt64 ) + // start time - sizeof( TInt64 ) ); // end time - TPtr8 schedDataPtr( schedData->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuf = HBufC8::NewLC( sizeof( TInt32 ) ); - TPtr8 lengthBufPtr( lengthBuf->Des() ); - TUint32 length( 0 ); - - // Schedule type - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( schedDataPtr ); - writeStream.WriteInt32L( aProgram.ScheduleType() ); - - // Start time - TInt64 temp( 0 ); - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Change TTime to stream format. - temp = aProgram.StartTime().Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - writeStream.WriteUint32L( lower ); - writeStream.WriteUint32L( upper ); - - // End time - temp = aProgram.EndTime().Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - writeStream.WriteUint32L( lower ); - writeStream.WriteUint32L( upper ); - - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &schedDataPtr, &lengthBufPtr ); - - // Ask for db id - User::LeaveIfError( SendReceive( ECseGetOverlappingSchedulesLength, args ) ); - - // Read length - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthBufPtr ); - length = readStream.ReadUint32L(); - CleanupStack::PopAndDestroy( &readStream ); - - if ( length > 0 ) - { - HBufC8* schedulesBuf = HBufC8::NewLC( length + - sizeof( TInt32 ) ); // item count as TInt32 - TPtr8 schedulesPtr( schedulesBuf->Des() ); - - TIpcArgs schedArgs( &schedDataPtr, &schedulesPtr ); - - User::LeaveIfError( SendReceive( ECseGetOverlappingSchedules, schedArgs ) ); - - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( schedulesPtr ); - // read item count - TInt32 count( readStr.ReadInt32L() ); - - // read all items from stream to array - for ( TInt i = 0; i < count; i++ ) - { - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - prog->InternalizeL( readStr ); - aResultArray.AppendL( prog ); - CleanupStack::Pop( prog ); - } - - readStr.Close(); - CleanupStack::PopAndDestroy( &readStr ); - CleanupStack::PopAndDestroy( schedulesBuf ); - } - - CleanupStack::PopAndDestroy( lengthBuf ); - CleanupStack::PopAndDestroy( schedData ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::GetSchedulesByPluginUidL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Buffer for app UID - HBufC8* msgPluginUid = HBufC8::NewLC( 4 ); - TPtr8 pluginUidPtr( msgPluginUid->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuff = HBufC8::NewLC( 4 ); - TPtr8 lengthPtr( lengthBuff->Des() ); - TInt length( 0 ); - - // Write App Uid - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( pluginUidPtr ); - writeStream.WriteInt32L( aPluginUid ); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &pluginUidPtr, &lengthPtr ); - - // Ask for message length - User::LeaveIfError( SendReceive( ECseGetScheduleArrayLengthByPluginUid, args ) ); - - // Read length from the message - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthPtr ); - length = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Now ask for the scheduled program information - HBufC8* programBuffer = HBufC8::NewLC( length ); - TPtr8 programPtr( programBuffer->Des() ); - - TIpcArgs progArgs( &pluginUidPtr, &programPtr ); - User::LeaveIfError( SendReceive( ECseGetSchedulesByPluginUid, progArgs ) ); - - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( programPtr ); - - // read number of items in stream - TInt itemCount ( 0 ); - itemCount = readStr.ReadInt32L(); - - // read all items from stream to array - for ( TInt i = 0; i < itemCount; i++ ) - { - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - prog->InternalizeL( readStr ); - aArray.AppendL( prog ); - CleanupStack::Pop( prog ); - } - - readStr.Close(); - - CleanupStack::PopAndDestroy( &readStr ); - CleanupStack::PopAndDestroy( programBuffer ); - CleanupStack::PopAndDestroy( lengthBuff ); - CleanupStack::PopAndDestroy( msgPluginUid ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::GetSchedulesByTypeL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Buffer for app UID - HBufC8* msgScheduleType = HBufC8::NewLC( 4 ); - TPtr8 typePtr( msgScheduleType->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuff = HBufC8::NewLC( 4 ); - TPtr8 lengthPtr( lengthBuff->Des() ); - TInt length( 0 ); - - // Write App Uid - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( typePtr ); - writeStream.WriteInt32L( aType ); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &typePtr, &lengthPtr ); - - // Ask for message length - User::LeaveIfError( SendReceive( ECseGetScheduleArrayLengthByType, args ) ); - - // Read length from the message - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthPtr ); - length = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Now ask for the scheduled program information - HBufC8* programBuffer = HBufC8::NewLC( length ); - TPtr8 programPtr( programBuffer->Des() ); - - TIpcArgs progArgs( &typePtr, &programPtr ); - User::LeaveIfError( SendReceive( ECseGetSchedulesByType, progArgs ) ); - - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( programPtr ); - - // read number of items in stream - TInt itemCount ( 0 ); - itemCount = readStr.ReadInt32L(); - - // read all items from stream to array - for ( TInt i = 0; i < itemCount; i++ ) - { - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - prog->InternalizeL( readStr ); - aArray.AppendL( prog ); - CleanupStack::Pop( prog ); - } - - readStr.Close(); - - CleanupStack::PopAndDestroy( &readStr ); - CleanupStack::PopAndDestroy( programBuffer ); - CleanupStack::PopAndDestroy( lengthBuff ); - CleanupStack::PopAndDestroy( msgScheduleType ); - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) const - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerService::GetSchedulesByTimeL"); - if ( !SubSessionHandle() ) - { - User::Leave( ECseNoSubsessionHandle ); - } - - // Buffer for schedule data - HBufC8* timeframe = HBufC8::NewLC( sizeof( TInt64 ) + // start time - sizeof( TInt64 ) ); // end time - - TPtr8 timeframePtr( timeframe->Des() ); - - // Buffer for incoming message length - HBufC8* lengthBuf = HBufC8::NewLC( sizeof( TInt32 ) ); - TPtr8 lengthBufPtr( lengthBuf->Des() ); - TUint32 length( 0 ); - - // Schedule type - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( timeframePtr ); - - // Start time - TInt64 temp( 0 ); - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Change TTime to stream format. - temp = aBeginning.Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - writeStream.WriteUint32L( lower ); - writeStream.WriteUint32L( upper ); - - // End time - temp = aEnd.Int64(); - lower = (0x00000000FFFFFFFFULL) & temp; - upper = (0x00000000FFFFFFFFULL) & (temp >> 32); - writeStream.WriteUint32L( lower ); - writeStream.WriteUint32L( upper ); - - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - // Set args for IPC - TIpcArgs args( &timeframePtr, &lengthBufPtr ); - - // Ask for db id - User::LeaveIfError( SendReceive( ECseGetScheduleArrayLengthByTimeframe, args ) ); - - // Read length - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( lengthBufPtr ); - length = readStream.ReadUint32L(); - CleanupStack::PopAndDestroy( &readStream ); - - if ( length > 0 ) - { - HBufC8* schedulesBuf = HBufC8::NewLC( length + - sizeof( TInt32 ) ); // item count as TInt32 - TPtr8 schedulesPtr( schedulesBuf->Des() ); - - TIpcArgs schedArgs( &timeframePtr, &schedulesPtr ); - - User::LeaveIfError( SendReceive( ECseGetSchedulesByTimeframe, schedArgs ) ); - - RDesReadStream readStr; - CleanupClosePushL( readStr ); - readStr.Open( schedulesPtr ); - // read item count - TInt32 count( readStr.ReadInt32L() ); - - // read all items from stream to array - for ( TInt i = 0; i < count; i++ ) - { - // Internalize (change stream to CCseScheduledProgram-class) stream that we got. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - prog->InternalizeL( readStr ); - aArray.AppendL( prog ); - CleanupStack::Pop( prog ); - } - - readStr.Close(); - CleanupStack::PopAndDestroy( &readStr ); - CleanupStack::PopAndDestroy( schedulesBuf ); - } - - CleanupStack::PopAndDestroy( lengthBuf ); - CleanupStack::PopAndDestroy( timeframe ); - CSELOGSTRING_HIGH_LEVEL("<< // Client common methods (open, close etc) -#include // Client common methods (server start up etc) -#include "CseDebug.h" // Debug macros -#include // Common defines for client and server - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None. - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -// None. - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// RCseSchedulerServiceBase::RCseSchedulerServiceBase -// -// ----------------------------------------------------------------------------- -// -RCseSchedulerServiceBase::RCseSchedulerServiceBase() - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerServiceBase::RCseSchedulerServiceBase"); - CSELOGSTRING_HIGH_LEVEL("<<>>~RCseSchedulerServiceBase::~RCseSchedulerServiceBase"); - CSELOGSTRING_HIGH_LEVEL("<<<~RCseSchedulerServiceBase::~RCseSchedulerServiceBase"); - } - -// ----------------------------------------------------------------------------- -// RCseSchedulerServiceBase::Open -// -// ----------------------------------------------------------------------------- -// -TInt RCseSchedulerServiceBase::Open( RCseSchedulerClient& aClient ) - { - CSELOGSTRING_HIGH_LEVEL(">>>RCseSchedulerServiceBase::Open"); - __ASSERT_ALWAYS( aClient.Handle(), PanicClient( KErrBadHandle ) ); - iClient = &aClient; - - TIpcArgs args( TIpcArgs::ENothing ); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerServiceBase::Close"); - RSubSessionBase::CloseSubSession( ECseServCloseSubSession ); - CSELOGSTRING_HIGH_LEVEL("<<>>RCseSchedulerServiceBase::PanicClient"); - _LIT( KCseRTPClientFault, "CseRTPApi Client Fault" ); - User::Panic( KCseRTPClientFault, aFault ); - } - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/data/102750D5.rss --- a/videoscheduler/SchedulerServer/data/102750D5.rss Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* 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 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 - -RESOURCE STARTUP_ITEM_INFO CseSchedulerServer -{ - executable_name = "!:\\sys\\bin\\CseSchedulerServer.exe"; - recovery = EStartupItemExPolicyNone; -} diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/group/ScheduleServer.mmp --- a/videoscheduler/SchedulerServer/group/ScheduleServer.mmp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2006 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: Project definition file* -*/ - - - - -#include -#include - -//OPTION ARMCC --asm --interleave -ALWAYS_BUILD_AS_ARM - -TARGET cseschedulerserver.exe -#if !defined(__SERIES60_30__) && !defined(__SERIES60_31__) && !defined(__SERIES60_32__) -EPOCSTACKSIZE 0x10000 -#else -EPOCSTACKSIZE 0x5000 -#endif // !defined(__SERIES60_30__) && !defined(__SERIES60_31__) && !defined(__SERIES60_32__) - -targettype exe -UID 0x1000008c 0x102750D6 -VENDORID VID_DEFAULT -SECUREID 0x102750D6 -CAPABILITY CAP_SERVER -DRM -AllFiles - -SOURCEPATH ../src -SOURCE CCseSchedulerServer.cpp -SOURCE CCseScheduleDB.cpp -SOURCE CCseSchedulerTimer.cpp -SOURCE CCseSchedulerServerSession.cpp -SOURCE CCseSchedulerServerEngine.cpp -SOURCE CCseSchedulerPluginControllerBase.cpp -SOURCE CCseSchedulerUniPluginController.cpp -SOURCE CCseSchedulerMultiPluginController.cpp -SOURCE CCseSchedulerPluginStarter.cpp -SOURCE CCseSchedulerLandLord.cpp -SOURCE CCseSchedulerThreadPacket.cpp -SOURCE CCseSemaphoreController.cpp -SOURCEPATH ../data - -START RESOURCE 102750D5.rss -END // RESOURCE - -USERINCLUDE ../inc -USERINCLUDE ../../inc - -MW_LAYER_SYSTEMINCLUDE - -LIBRARY euser.lib -LIBRARY efsrv.lib -LIBRARY bafl.lib -LIBRARY flogger.lib -LIBRARY edbms.lib -LIBRARY ws32.lib -LIBRARY apgrfx.lib -LIBRARY apparc.lib -LIBRARY estor.lib -LIBRARY cseschedulerclient.lib -LIBRARY ecom.lib diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/group/bld.inf --- a/videoscheduler/SchedulerServer/group/bld.inf Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2004-2005 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 - -PRJ_PLATFORMS -WINSCW ARMV5 - -PRJ_EXPORTS -../rom/videoschedulerserver.iby CORE_MW_LAYER_IBY_EXPORT_PATH(videoschedulerserver.iby) -PRJ_MMPFILES -ScheduleServer.mmp diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseScheduleDB.h --- a/videoscheduler/SchedulerServer/inc/CCseScheduleDB.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,447 +0,0 @@ -/* -* Copyright (c) 2006 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: header file for CCseScheduleDB class* -*/ - - - -#ifndef _CCSESCHEDULEDB_H -#define _CCSESCHEDULEDB_H - -#include -#include // RDbStoreDatabase -#include // RFs -#include -#include - -// CONSTANTS -const int KCseCustomSqlLength = 256; -const int KCseDbCompactTimeout = 30000000; - -// Constant for filename definition -_LIT( KCseScheduleDBName, "CseSchedules.db" ); -// Database table -_LIT( KCseDatabaseTable, "CseDatabase" ); -_LIT( KCseDatabaseVersionCol, "DbVersion" ); -_LIT( KCseDatabaseReserved1Col, "DbReserved1" ); -_LIT( KCseDatabaseReserved2Col, "DbReserved2" ); - -// Program table -_LIT( KCseScheduleTable, "ScheduleEvent" ); -_LIT( KCseScheduleDbKeyCol, "Key" ); -_LIT( KCseScheduleNameCol, "Name" ); -_LIT( KCseScheduleStartTimeCol, "StartTime" ); -_LIT( KCseScheduleEndTimeCol, "EndTime" ); -_LIT( KCseScheduleApplicationUIDCol, "ApplicationUID" ); -_LIT( KCseSchedulePlugInUIDCol, "PlugInUID" ); -_LIT( KCseScheduleTypeCol, "Type" ); -_LIT( KCseScheduleApplicationSpecificCol, "ApplicationSpecificData" ); -_LIT( KCseScheduleRunCountCol, "ScheduleRunCount" ); -_LIT( KCseScheduleStateCol, "ScheduleState" ); -_LIT( KCseSchedulePluginTypeCol, "PluginType" ); -_LIT( KCseScheduleReserved1Col, "ScheduleReserved1" ); -_LIT( KCseScheduleReserved2Col, "ScheduleReserved2" ); - -class CCseScheduledProgram; - -/** -* Version of CleanupXxxxPushL() that can be used to 'ResetAndDestroy' -* the supplied object if the clean-up stack unwinds. -*/ -template -class CleanupResetAndDestroy - { - public: - inline static void PushL( T& aRef ); - private: - static void ResetAndDestroy( TAny *aPtr ); - }; - -template - inline void CleanupResetAndDestroyPushL( T& aRef ); - -template -inline void CleanupResetAndDestroy::PushL( T& aRef ) - { - CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) ); - } - -template -void CleanupResetAndDestroy::ResetAndDestroy( TAny *aPtr ) - { - ( static_cast( aPtr ) )->ResetAndDestroy(); - } - -template -inline void CleanupResetAndDestroyPushL( T& aRef ) - { - CleanupResetAndDestroy::PushL( aRef ); - } - - -/** -* Schedule database. -*/ -class CCseScheduleDB : public CBase, - public MBackupObserver -{ - public: // Constructors and destructors - virtual ~CCseScheduleDB(); - - /** - * Two-phased constructor. - */ - IMPORT_C static CCseScheduleDB* NewL(); - - /** - * Enum for schedule state - */ - enum TCseScheduleState - { - ECseWaiting = 0, - ECseRunning - }; - - /** - * Enum for database access - */ - enum TCseDatabaseAccess - { - ECseDbOpen = 0, - ECseDbLocked - }; - - public: // Methods from MBackupObserver - void ChangeFileLockL(const TDesC &aFileName, TFileLockFlags aFlags); - - public: // New methods - /** - * Adds given schedule to database. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aData schedule to be added to database. - * @return None - */ - void AddScheduleL( CCseScheduledProgram& aData ); - - /** - * Removes schedule from database. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aData schedule to be removed from database. - * @return None - */ - void RemoveScheduleL( const TUint32 aDbIdentifier ); - - /** - * Finds start time of the schedule that is happening next from the database. - * Method will leave with KErrLocked -error code if Backup/Restore is going on. - * @return Start time of the next schedule. - */ - TTime GetNextScheduleTimeL(); - - /** - * Fills parameter array with schedules that have same starting time as - * paramter time. Method will leave with KErrLocked -error code if - * Backup/Restore is going on. - * @param aSchdeduleTime Start time of the schedules fetched. - * @param aNextScheduleArray Array containing schedules after call - * is completed. - * @return None - */ - void FillScheduleArrayByTimeL( const TTime& aScheduleTime, - RPointerArray& aNextScheduleArray ); - - /** - * Gets the given schedule from database. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aDbIdentifier Database identifier of the schedule fetched. - * @param aSchedule Pointer where schedule is stored when call - * is completed. - * @return None - */ - void GetScheduleByDbIdentifierL( const TUint32 aDbIdentifier, - CCseScheduledProgram* aSchedule ); - - /** - * Get application specific schedules from db. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aAppUid Application UID. - * @param aScheduleArray Array where to put scheduled events. - * @return None - */ - void GetApplicationSchedulesL( const TInt32 aAppUid, - RPointerArray& aArray ); - - /** - * Get overlapping schedules. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aType Schedule type (one from - * CCseScheduledProgram::TCseScheduleType) - * @param aStartTime Start time - * @param aEndTime End Time - * @param aResultArray On return, contains pointers to overlapping schedules - * empty if none found. - * @return None. - */ - void GetOverlappingSchedulesL( const TInt32 aType, - const TTime& aStartTime, - const TTime& aEndTime, - RPointerArray& aResultArray ); - - /** - * Increases runcount of given schedule in DB. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aDbIdentifier Database identifier of the schedule thats - * runcount is to be incremented - */ - void IncreaseRunCountL( const TUint32 aDbIdentifier ); - - /** - * Gets the runcount of give schedule. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aDbIdentifier DbIdentifier of the schedule whos runcount is fetched. - * @return Run count of the schedule. - */ - TInt32 GetRunCountL( const TUint32 aDbIdentifier ); - - /** - * Gets the state of give schedule. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aDbIdentifier DbIdentifier of the schedule whos state is fetched. - * @return Schedule state (one of the CCseScheduledDB::TCseScheduleState) - */ - TInt32 GetScheduleStateL( const TUint32 aDbIdentifier ); - - /** - * Sets the state of give schedule. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aDbIdentifier DbIdentifier of the schedule whos state is fetched. - * @param aState State to be set. - * @return None - */ - void SetScheduleStateL( const TUint32 aDbIdentifier, - const TInt32 aState ); - - /** - * Gets the startup schedules from the DB. When phone is set on, we try to run all - * schdeulus that were on run when the phone was set off (run count is bigger than 0). - * Method will leave with KErrLocked -error code if Backup/Restore is going on. - * @param aResultArray Array where schedules that were on run are stored. - * @return None - */ - void StartupSchedulesL( RPointerArray& aResultArray ); - - /** - * Get plugin specific schedules from db. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aPluginUid Application UID. - * @param aScheduleArray Array where to put scheduled events. - * @return None - */ - void GetSchedulesByPluginL( const TInt32 aPluginUid, - RPointerArray& aArray ); - - /** - * Get plugin specific schedules of specific type from db. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aType Schedule type - * @param aScheduleArray Array where to put scheduled events. - * @return None - */ - void GetSchedulesByTypeL( const TInt32 aType, - RPointerArray& aArray ); - - /** - * Get schedules in given timeframe. Method will leave with - * KErrLocked -error code if Backup/Restore is going on. - * @param aBeginning Start time of timeframe - * @param aEnd End Time of timeframe - * @param aResultArray On return, contains pointers to overlapping schedules - * empty if none found. - * @return None. - */ - void GetSchedulesByTimeframeL( const TTime& aStartTime, - const TTime& aEndTime, - RPointerArray& aResultArray ); - - /** - * Gets all the uid's of different plugins that are in DB. - * KErrLocked -error code if Backup/Restore is going on. - * @param aPlugins On return, contains all the different plugin uid's in - * db. Empty if none found. - */ - void GetPluginsL( RArray& aPlugins ); - - /** - * Get the next happening time of schedule from database based on plugin uid. - * KErrLocked -error code if Backup/Restore is going on. - * @param aPluginUid Plugin uid in which to base the search - * @return Next start time of the schedule of given plugin Uid. - */ - TTime GetNextScheduleTimeByPluginL( TInt32 aPluginUid ); - - /** - * Gets all the schedules that are going to happen at the given time based on plugin uid. - * KErrLocked -error code if Backup/Restore is going on. - * @param aScheduleTime Start time in which to base the search - * @param aPluginUid Plugin uid in which to base the search - * @param aNextScheduleArray On return, contains pointers to schedules. - */ - void GetSchedulesByTimeAndPluginL( - const TTime& aScheduleTime, - TInt32 aPluginUid, - RPointerArray& aNextScheduleArray ); - - - private: - /** - * C++ default constructor. - */ - CCseScheduleDB(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // Methods - /** - * Checks the db version from db. If it is older than current one, destroy it - * and create new one. - * @return None - */ - void CheckDbVersionL(); - - /** - * Open DB or create new database if DB file is not found. - * @return None - */ - void OpenOrCreateDbL(); - - /** - * Create schedule table. - * @param aDatabase where to create schedule table. - * @return None - */ - void CreateScheduleTableL( RDbStoreDatabase& aDatabase ) const; - - /** - * Create database table. - * @param aDatabase where to create database table. - * @return None - */ - void CreateDatabaseTableL( RDbStoreDatabase& aDatabase ); - - /** - * Gets the database version number - * @param None - * @return None - */ - TInt GetDbVersionL( ); - - /** - * Set hardcoded database version to database. Used after creating new database. - * @param None - * @return None - */ - void SetDatabaseVersionL(); - - /** - * Removes existing database. - * @return None - */ - void RemoveDbL(); - - /** - * Static call back for CPeriodic. - * @param aThis Pointer to CCseScheduleDB so that we can - * direct call back to class. - * @return Always TFalse - */ - static TInt CompactCallback( TAny* aThis ); - - /** - * We want to compact database 30 seconds after last database operation. - * this resets 30 sec counter. - * @return None - */ - void ResetCompactTimer( ); - - /** - * Compacts database. - * @return None - */ - void CompactDb(); - - /** - * Closed Db file and sets iDbAccess to ECseDbLocked. - * @return None - */ - void CloseDbFile(); - - /** - * Closed Db file and sets iDbAccess to ECseDbOpen. - * @return None - */ - void OpenDbFileL(); - - /** - * Leaves with KErrLocked if iDbAccess is ECseDbLocked. - * @return None - */ - void LeaveIfDbLockedL() const; - - private: // Data - /** - * File server session is connected in construction and closed in - * destruction - */ - RFs iFsSession; - - /** - * File name of the database which to handle - */ - TFileName iDbFile; - - /** - * For database operations - */ - RDbStoreDatabase iScheduleDb; - - /** - * For creating and opening services database file. Own. - */ - CFileStore* iScheduleFileStore; - - /** - * Timer used in compacting database. Own. - */ - CPeriodic* iCompactTimer; - - /** - * SQL string for SQL calls - */ - TBuf iSqlSchedule; - - /** - * Status is database accessible - */ - TCseDatabaseAccess iDbAccess; - - /** - * Wrapper to get notification if backup/restore is - * about to happen. Own. - */ - CBaBackupSessionWrapper* iBackupWrapper; -}; -#endif _CCSESCHEDULEDB_H \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerLandLord.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerLandLord.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -/* -* Copyright (c) 2006 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: Header file for CCseSchedulerThreadCrossroads-class.* -*/ - - - - -#ifndef _CCSESCHEDULERLANDLORD_H -#define _CCSESCHEDULERLANDLORD_H - -// INCLUDES -#include -#include "MCseSemaphoreSignalObserver.h" - -// CONSTANTS -#define KThreadNameSize 19 - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class MCseScheduleObserver; -class RThread; -class CCseScheduledProgram; -class CCseSchedulerThreadPacket; -class CCseSemaphoreController; -class CActiveSchedulerWait; - -/** -* LandLord controlling shared data that is given to thread. After plugin thread is started, -* nothing should be accessed before thread has died. -* -* Also observes thread when it dies. -*/ -class CCseSchedulerLandLord : public CActive, - public MCseSemaphoreSignalObserver - -{ - public: // Constructors and destructors - /** - * Destructor. - */ - virtual ~CCseSchedulerLandLord(); - - /** - * Two-phased constructor. - * @param aObserver A pointer back to plugin controller. - */ - static CCseSchedulerLandLord* NewL( MCseScheduleObserver* aObserver ); - - private: // Constructors and destructors - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - /** - * C++ default constructor. - * @param aObserver A pointer back to plugin controller. - */ - CCseSchedulerLandLord( MCseScheduleObserver* aObserver ); - - public: - /** - * Set schedule to LandLord. - * @param aData CCseScheduledProgram to be set. - */ - void SetScheduleL( CCseScheduledProgram& aData ); - - /** - * Returns ThreadPacket of the LandLord - * @return pointer to ThreadPacket - */ - CCseSchedulerThreadPacket* ThreadPacket( ); - - /** - * Run plugin. Creates thread where the CCseSchedulerPluginStarter is run - * and sets itself observing when thread dies. - */ - void RunPluginL( ); - - /** - * Clears landlord. Uses semaphore to signal plugin thread that thread needs - * to be taken down. - * Synchronous. - */ - void ClearL(); - - /** - * Returns ETrue if LandLord is working (plugin is running). - */ - TBool IsWorking(); - - private: // CActive - /** - * RunL - * @return None - */ - void RunL(); - - /** - * RunError - * @return - */ - TInt RunError( TInt aError ); - - /** - * DoCancel - * @return None - */ - void DoCancel(); - - private: // from MCseSemaphoreSignalObserver - void SemaphoreSignalled( ); - - private: // New methods - /** - * Generates unique thread name to internal iThreadName-buffer. - */ - void GenerateThreadNameL(); - - /** - * Generates semaphores to signal thread shutdown and when shutdown - * is completed. - */ - void GenerateSemaphoresL( ); - - /** - * Starts or stops active wait. Used when thread needs to be taken down. - */ - void ActiveWait( TBool aStart ); - - private: // Data - /** - * Pointer back to plugin controller. Own. - */ - MCseScheduleObserver* iObserver; - - /** - * ThreadPacket. Contains data to be given plugin thread when run. Own. - */ - CCseSchedulerThreadPacket* iThreadPacket; - - /** - * Thread where plugin is run. - */ - RThread iThread; - - /** - * Unique thread name. Own. - */ - HBufC* iThreadName; - - /** - * ETrue if thread is running, EFalse if not. - */ - TBool iThreadRunning; - - /** - * Semaphore signalled when plugin is wanted to take down. - */ - RSemaphore iPluginShutdownSemaphore; - - /** - * Semaphore signalled when plugin has been taken down. - */ - RSemaphore iPluginShutdownCompleteSemaphore; - - /** - * ActiveSchedulerWait. Own. - */ - CActiveSchedulerWait* iActiveSchedulerWait; - - /** - * Checks once a while if plugin shutdown has been completed. - * Own. - */ - CCseSemaphoreController* iShutdownCompleteMonitor; - - /** - * ETrue if shutdown has been signalled to CCSeSchedulerPluginStarter. - * EFalse if not. - */ - TBool iTakedownRequested; -}; - -#endif //_CCSESCHEDULERLANDLORD_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerMultiPluginController.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerMultiPluginController.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -/* -* Copyright (c) 2006 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: Header for MultiPluginController-class* -*/ - - - - -#ifndef __CCSESCHEDULERMULTIPLUGINCONTROLLER_H -#define __CCSESCHEDULERMULTIPLUGINCONTROLLER_H - -// INCLUDES -#include "CCseSchedulerPluginControllerBase.h" - -// CONSTANTS -// None - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -class CCseSchedulerPluginStarter; -class CCseSchedulerLandLord; - -/** -* Controller for plugins that can be several in run at same time -*/ -class CCseSchedulerMultiPluginController : public CCseSchedulerPluginControllerBase - { - public: // Constructors and destructor - /** - * Two-phased constructor. - * @params aEngine reference to engine - * @params aPluginUid plugin uid of the plugin this plugin controller is made for - * @return CCseSchedulerPluginControllerBase pointer to CCseSchedulerPluginControllerBase class - */ - static CCseSchedulerMultiPluginController* NewL( CCseSchedulerServerEngine& aEngine, TInt32 aPluginUid ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerMultiPluginController(); - - public: // from CCseSchedulerPluginControllerBase - void ClearControllerL(); - - TBool IsControllerActive(); - - void RunPluginsL() ; - - void DoCleanUp() ; - - void ScheduleCompletedL( const TUint32 aDbIdentifier, TInt aCompletitionCode ); - - private: // Constructors and destructor - /** - * C++ default constructor. - */ - CCseSchedulerMultiPluginController( CCseSchedulerServerEngine& aEngine, TInt32 aPluginUid ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // New methods - /** - * Handles succesfully completed schedules. - * @param aDbIdentifier DbIdentifier of schedule just completed - */ - void ScheduleCompletedSuccesfullyL( const TUint32 aDbIdentifier ); - - /** - * Handles failed schedules. - * @param aDbIdentifier DbIdentifier of schedule just completed - * @param aCompletitionCode Error code of the completed schedule. - */ - void HandleScheduleErrorL( const TUint32 aDbIdentifier, - TUint32 aCompletitionCode ); - private: // Data - - /** - * LandLords. Owns data that is given to new thread and acts as observer to thread. - * Own. - */ - RPointerArray iLandLords; - }; - -#endif // __CCSESCHEDULERMULTIPLUGINCONTROLLER_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerPluginControllerBase.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerPluginControllerBase.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -/* -* Copyright (c) 2006 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: Header for PluginControllerBase-class* -*/ - - - - -#ifndef __CCSESCHEDULERPLUGINCONTROLLERBASE_H -#define __CCSESCHEDULERPLUGINCONTROLLERBASE_H - -// INCLUDES -#include -#include -#include -#include "MCseSchedulerTimerObserver.h" -#include "MCsePluginControllerObserver.h" - -// CONSTANTS -// None - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -class CCseScheduledProgram; -class CCseSchedulerTimer; -class CCseSchedulerServerEngine; - -/** -* Base class for plugin controllers. Handles all plugin related stuff except scheduling logic. -*/ -class CCseSchedulerPluginControllerBase : public CBase, - public MCseScheduleObserver, - public MCseSchedulerTimerObserver - { - public: // Constructors and destructor - /** - * Two-phased constructor. - * @params aEngine reference to engine - * @params aPluginUid plugin uid of the plugin this plugin controller is made for - * @return CCseSchedulerPluginControllerBase pointer to CCseSchedulerPluginControllerBase class - */ - static CCseSchedulerPluginControllerBase* NewL( MCsePluginControllerObserver& aEngine, TInt32 aPluginUid ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerPluginControllerBase(); - - protected: - /** - * C++ default constructor. - */ - CCseSchedulerPluginControllerBase( MCsePluginControllerObserver& aEngine, TInt32 aPluginUid ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - public: // from MCseScheduleObserver-class - /** - * Plugins uses this method to inform common scheduler engine that - * schedule is handled. - * @param aDbIdentifier DbIdentifier of scheduled program that just - * has been processed. - */ - virtual void ScheduleCompletedL( const TUint32 aDbIdentifier, TInt aCompletitionCode ); - - public: // from MCseSchedulerTimerObserver-class - /** - * Plugins uses this method to inform common scheduler engine that - * schedule is handled. - * @param aDbIdentifier DbIdentifier of scheduled program that just - * has been processed. - */ - virtual void TimerErrorL( const TInt32 aError ); - - /** - * Timer is up, run the Plugins!!! - */ - virtual void RunPluginsL( ); - - public: // New methods - - /** - * Sets plugin to be cleared after callstack break. - * @param aToBeCleared ETrue if controller needs to be cleared. - */ - void SetToBeCleared( TBool aToBeCleared ); - - /** - * Clears controller: clears (takes down all threads running for the plugin) - * all landlords. - */ - virtual void ClearControllerL(); - - /** - * Cleans the controller from LandLord(s) that aren't needed anymore. - */ - virtual void DoCleanUp( ); - - /** - * Sets schedules to controller. More precise information is found from Uni and Multi - * controller classes. - * @params aScheduleArrat Array of schedules to be set into controller. All given - * schedules should have same start time. - */ - virtual void SetSchedulesL( RPointerArray& aScheduleArray ); - - /** - * Gets plugin id. This Uid of the plugin going to be run when time is right. Can be - * used, for example, to find right kind of controller to a schedule. - * @return plugin Uid of the plugin used to run the schedule. - */ - TInt32 PluginUid( ); - - /** - * Checks if the plugin is obsolete (There are no more schedules to be run). - * @return ETrue if obsolete, EFalse if not. - */ - TBool IsObsolete() const; - - /** - * Checks if the plugin is set to be cleared. - * @return ETrue if set, EFalse if not. - */ - TBool IsToBeCleared(); - - /** - * Checks if there are active plugins in controller. - * @return ETrue if active plugins found, EFalse otherwise - */ - virtual TBool IsControllerActive(); - - protected: //data - /** - * Array containing schedules to be run. Own. - */ - RPointerArray iScheduleArray; - - /** - * Timer class. Own. - */ - CCseSchedulerTimer* iTimer; - - /** - * Reference to engine - */ - MCsePluginControllerObserver& iEngine; - - /** - * Uid of the plugin contrelled by this controller. - */ - TInt32 iPluginUid; - - /** - * Boolean indicating if this plugin controller is to cleared - * (plugin running is deleted). - */ - TBool iToBeCleared; - }; - -#endif // __CCSESCHEDULERPLUGINCONTROLLERBASE_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerPluginStarter.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerPluginStarter.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* -* Copyright (c) 2006 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: Header for PluginStarter-class* -*/ - - - -#ifndef __CCSESCHEDULERPLUGINSTARTER_H -#define __CCSESCHEDULERPLUGINSTARTER_H - -// INCLUDES -#include -#include -#include "MCseSemaphoreSignalObserver.h" - -// CONSTANTS -// None - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -class CCseSchedulerThreadPacket; -class CCseSchedulerPluginIF; -class CCseSchedulerLandLord; -class CCseSemaphoreController; - -/** -* Handles running and shutting down one plugin. Runs in seperate thread than rest of the SchedulerEngine -*/ -class CCseSchedulerPluginStarter : public CBase, - public MCseSemaphoreSignalObserver, - public MCsePluginObserver - { - public: // Constructors and destructor - /** - * Two-phased constructor. - * @param aThreadPacket Thread packet containing all the needed information to plugin - * to be run. - * @return CCseSchedulerPluginStarter pointer to CCseSchedulerPluginStarter class - */ - static CCseSchedulerPluginStarter* NewL( CCseSchedulerThreadPacket* aThreadPacket ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerPluginStarter(); - - public: // from MCsePluginObserver-class - void PluginCompleted( TInt aCompletitionValue ); - - public: // from MCseSemaphoreSignalObserver-class - void SemaphoreSignalled( ); - - public: // New methods - /** - * Creates plugin and runs schedule in it. - * @param aParam Any pointer that actually holds CCseThreadPacket - * @return KErrNone if succesful, otherwise common Symbian error codes. - */ - static TInt StartThread( TAny* aParam ); - - private: // Constructors and destructor - /** - * C++ default constructor. - */ - CCseSchedulerPluginStarter( CCseSchedulerThreadPacket* aThreadPacket ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // New methods - /** - * Called from actual StartThread. Creates CCseSchedulerPluginStarter. - * @param aParam Any pointer that actually holds CCseThreadPacket - */ - static void DoStartThreadL( TAny* aParam ); - - /** - * Creates plugin based on schedule and runs schedule in it. - */ - void RunPluginL( ); - - /** - * Plugin complete callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerPluginStarter-class - * @return Always EFalse. - */ - static TInt PluginCompleteCallback( TAny* aPtr ); - - /** - * Plugin complete callback handler. Stops active scheduler, sets completition value - * and runs down the plugin. - * @return Always EFalse - */ - TInt HandlePluginCompleteCallback(); - - private: // Data - /** - * Thread packet. Includes all needed information for plugin and the completiotion value. - * Own. - */ - CCseSchedulerThreadPacket* iThreadPacket; - - /** - * Plugin in run. Own. - */ - CCseSchedulerPluginIF* iPlugin; - - /** - * CIdle, used to break call stack when plugin completes. Own. - */ - CIdle* iCompletitionBreaker; - - /** - * Bool flagging if plugin is wanted to be shot down - */ - TBool iPluginRdyToTakedown; - - /** - * Semaphore monitor. Check once a while if shutdown semaphore is signalled. - */ - CCseSemaphoreController* iSemaphoreMonitor; - }; - -#endif // __CCSESCHEDULERPLUGINSTARTER_H \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerServer.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerServer.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* -* Copyright (c) 2006 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: Header for Scheduler Server class* -*/ - - - - -#ifndef __CCSESCHEDULERSERVER_H -#define __CCSESCHEDULERSERVER_H - -// INCLUDES -#include -#include "CseSchedulerServer.pan" // Panic codes - -// CONSTANTS -#define KCseSchedulerMinHeapSize 2*KMinHeapSize -#define KCseSchedulerMaxHeapSize 0x1F0000 - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class CCseSchedulerServerEngine; - -// CLASS DECLARATION -/** -* Server class -* -* @lib CseSchedulerServer.exe -*/ -class CCseSchedulerServer : public CPolicyServer - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CCseSchedulerServer* NewLC( ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerServer(); - - public: // New functions - - /** - * Thread function, creates cleanup stack for the thread. - * @return KErrNone - */ - static TInt ThreadFunction( ); - - /** - * Thread function, the active scheduler is installed and started. - * @return None. - */ - static void ThreadFunctionL( ); - - /** - * Panics server. - * @param aPanic panic code. - * @return None. - */ - static void PanicServer( TCseSchedulerServPanic aPanic ); - - /** - * Starts the server thread. - * @return None. - */ - static TInt StartThread(); - - /** - * Dec - * @return None. - */ - void Dec(); - - /** - * Inc - * @return None. - */ - void Inc(); - - /** - * Create new Session. - * @param aVersion server version number. - * @return CSharableSession pointer to new created session. - */ - CSession2* NewSessionL( const TVersion &aVersion, - const RMessage2& aMessage ) const; - - /** - * Gets engine object. - * @return CCseSchedulerServerEngine pointer. - */ - CCseSchedulerServerEngine* GetEngineObjectL(); - - /** - * Makes check if server is still needed (has schedules on run or active - * client), if not calls ActiveScheduler::Stop resulting server shutdown. - */ - void StopServer(); - - protected: // Functions from base classes - - /** - * From CPolicyServer, called by framework to perform - * custom security check for any client messages. - * - * @param aMsg Message. - * @param aAction Action. - * @param aMissing Security info. - * @return Result of security check. - */ - TCustomResult CustomSecurityCheckL( const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing ); - - /** - * Starter callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerUserInformer-class - * @return Always EFalse. - */ - static TInt StarterCallback( TAny* aPtr ); - - /** - * Starter callback handler. Checks if server is actually needed (there - * is client or schedules to be run). If engine is not needed, signals - * server to be deleted. - * @return Always EFalse - */ - TInt HandleStarterCallback(); - - - private: // Constructors and destructor - - /** - * C++ default constructor. - */ - CCseSchedulerServer(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL( ); - - private: // New functions - - /** - * Deletes scheduler engine. - * @return None. - */ - void DeleteSchedulerEngine(); - - - private: // Data - /** - * Object container index. Own. - */ - CObjectConIx* iContainerIx; - - /** - * Object container. Own. - */ - CObjectCon* iObjectCon; - - /** - * Number of sessions - */ - TInt iSessionCount; - - /** - * Engine object. Own. - */ - CCseSchedulerServerEngine* iSchedulerEngine; - - /** - * CIdle, used to break call stack when scheduler is started. Own. - */ - CPeriodic* iStarterBreaker; - }; - -#endif // __CCSESCHEDULERSERVER_H - -// End of File \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerServerEngine.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerServerEngine.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,328 +0,0 @@ -/* -* Copyright (c) 2006 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: Interface for Scheduler Server's Engine class* -*/ - - - - -#ifndef __CCSESCHEDULERSERVERENGINE_H -#define __CCSESCHEDULERSERVERENGINE_H - -// INCLUDES -#include // Observer so that CCseSchedulerTimer can inform engine. -#include "MCsePluginControllerObserver.h" // Observer so that CCseSchedulerTimer can inform engine. -#include "CseSchedulerServer.pan" // Panic codes - - -// CONSTANTS -// Usually we have only one scheduled event at a time so we set granularity to 1, but -// in some rare cases we migth have more so we have to use array. -const int KCseScheduleGranularity = 1; - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class CCseScheduleDB; -class CCseSchedulerTimer; -class CCseScheduledProgram; -class CCseSchedulerServerSession; -class CCseSchedulerServer; -class CCseSchedulerPluginControllerBase; - - -// CLASS DECLARATION -// None - -/** -* Server's "brain". Controls all subsession messages to current object for -* futher prosessing. Manages message list thru the reguest handler. Reads from -* the client address space and writes back to client address space. Controls -* sub objet request(s). -*/ -class CCseSchedulerServerEngine : public CObject, - public MCsePluginControllerObserver - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * @param Reference to scheduler server - * @return CCseSchedulerEngine pointer to CCseSchedulerEngine class - */ - static CCseSchedulerServerEngine* NewL( CCseSchedulerServer& aServer ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerServerEngine(); - - public: // From MCsePluginControllerObserver - - void ScheduleCompletedSuccesfullyL( const TUint32 aDbIdentifier ); - - void ScheduleCompletedWithErrorL( const TUint32 aDbIdentifier, TUint32 aCompletionCode ); - - void IncreaseScheduleRunCountL( const TUint32 aDbIdentifier ); - - TBool IsAllowedToRun( TUint32 aDbIdentifier ); - - void ScheduleNotValid( const TUint32 aDbIdentifier ); - - void RequestReschedule( ); - - void ClearingDone(); - - public: // New methods - /** - * Plugin complete callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerUserInformer-class - * @return Always EFalse. - */ - static TInt CompletitionCallback( TAny* aPtr ); - - /** - * Schedule complete callback handler. Removes schedule from "on run list", - * informs engine that schedule has comlete and checks if the plugin where - * schedule was run still needed. - * @return Always EFalse - */ - TInt HandleCompletitionCallback(); - - /** - * Cleaner callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerUserInformer-class - * @return Always EFalse. - */ - static TInt CleanerCallback( TAny* aPtr ); - - /** - * Cleaner callback handler. Goes through all plugin contollers and clears them - * (shutdowns all threads running plugins). - * @return Always EFalse - */ - TInt HandleCleanerCallback(); - - public: // From CObject - /** - * Overwrites CObjects Close. Sets the AccesCount to zero. - * @return None - */ - void Close(); - - public: // New functions - - /** - * Does the general message handling. - * @param aMessage contains data from the client. - * @return None. - */ - void GeneralServiceL( const RMessage2& aMessage ); - - /** - * Service cancellation. - * @param aMessage contains data from the client. - * @return None. - */ - void CancelService( const RMessage2& aMessage ); - - /** - * Checks if scheduler is active atm (schedules in run or waitint) - * @return ETrue if active and EFalse if not. - */ - TBool IsSchedulerActive() const; - - /** - * Reschedules engine (get new "next schedule" from database and - * resets timer). - * @return None. - */ - void RescheduleL(); - - /** - * Reschedules engine (get new "next schedule" from database and - * resets timer). - * @return None. - */ - void RescheduleByPluginL( TInt32 aPluginUid ); - - private: // Constructors and destructor - - /** - * C++ default constructor. - * @param Reference to scheduler server. - */ - CCseSchedulerServerEngine( CCseSchedulerServer& aServer ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - - private: // New functions - /** - * Panic the client on server side. - * @param aPanic Our panic code. - * @param aMessage A message from client - * @return None. - */ - void PanicClient( TCseSchedulerServPanic aPanic, - const RMessage2& aMessage ) const; - - /** - * Adds schedule to database - * @param aMessage A message from client - * @return None. - */ - void AddScheduleL( const RMessage2& aMessage ); - - /** - * Removes schedule from database - * @param aMessage A message from client - * @return None. - */ - void RemoveScheduleL( const RMessage2& aMessage ); - - /** - * Gets all schedules from database - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesL( const RMessage2& aMessage ); - - /** - * Adds schedule to database - * @param aMessage A message from client - * @return None. - */ - void GetScheduleL( const RMessage2& aMessage ); - - /** - * Gets externalize length of one specific schedule - * @param aMessage A message from client - * @return None. - */ - void GetScheduleLengthL( const RMessage2& aMessage ); - - /** - * Gets schedules based on application UID. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByAppUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of one application UID - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByAppUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the overlapping schedules - * @param aMessage A message from client - * @return None. - */ - void GetOverlappingSchedulesLengthL( const RMessage2& aMessage ); - - /** - * Gets overlapping schedules of given timeframe - * @param aMessage A message from client - * @return None. - */ - void GetOverlappingSchedulesL( const RMessage2& aMessage ); - - /** - * Gets startup schedules from database (schedules that were on run when - * phone was shut down) - * @return None. - */ - void EngineSchedulesStartup(); - - /** - * Gets externalize length of the schedules of one plugin UID - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByPluginUidL( const RMessage2& aMessage ); - - /** - * Gets schedules based on plugin UID. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByPluginUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of one type. - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByTypeL( const RMessage2& aMessage ); - - /** - * Gets schedules based on schedule type. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByTypeL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of specific timeframe. - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByTimeframeL( const RMessage2& aMessage ); - - /** - * Gets schedules between given timeframe. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByTimeframeL( const RMessage2& aMessage ); - - private: // Data - /** - * DB class. Own. - */ - CCseScheduleDB* iDb; - - /** - * Array holding all plugin controllers. - */ - RPointerArray iPluginControllerArray; - - /** - * CIdle, used to break call stack when schedule completes. Own. - */ - CIdle* iCompletitionBreaker; - - /** - * Reference to scheduler server - */ - CCseSchedulerServer& iServer; - }; - -#endif // __CCSESCHEDULERSERVERENGINE_H - -// End of file - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerServerSession.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerServerSession.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* -* Copyright (c) 2006 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: Interface for Scheduler Server's Session class* -*/ - - - - -#ifndef __CCSESCHEDULERSERVERSESSION_H -#define __CCSESCHEDULERSERVERSESSION_H - -// INCLUDES -#include -#include "CseSchedulerServer.pan" // Panic codes - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -class CCseSchedulerEngine; -class CCseSchedulerServer; - -// CLASS DECLARATION - -/** -* CCseSchedulerSession -* -* @lib -*/ -class CCseSchedulerServerSession : public CSession2 - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * @Param aClient reference client thread - * @Param aServer pointer to Server - * @return CCseSchedulerSession pointer to CCseSchedulerSession class - */ - static CCseSchedulerServerSession* NewL( CCseSchedulerServer* aServer ); - - - /** - * Destructor. - */ - virtual ~CCseSchedulerServerSession(); - - public: // New functions - - /** - * Server - * @return a pointer to server - */ - CCseSchedulerServer* Server(); - - /** - * Service - * @param aMessage contains data from the client. - * @return None - */ - void ServiceL( const RMessage2& aMessage ); - - private: // New functions - - /** - * Dispatch message - * @param aMessage contains data from the client. - * @return None - */ - void DispatchMessageL( const RMessage2& aMessage ); - - /** - * New Object - * @param aMessage contains data from the client. - * @return None - */ - void NewObjectL( const RMessage2& aMessage ); - - /** - * Deletes object, can't fail - can panic client - * @param aHandle handle - * @return None - */ - void DeleteObject( TUint aHandle ); - - /** - * Counts resources - * @return Number of resources - */ - TInt CountResources(); - - /** - * Panics client - * @param aPanic panic code - * @return None - */ - void PanicClient( TCseSchedulerServPanic aPanic ) const; - - private: // Constructors and destructor - - /** - * C++ default constructor. - * @Param aClient reference client thread - */ - CCseSchedulerServerSession(); - - /** - * Symbian 2nd phase constructor. - * @Param aServer pointer to Server - */ - void ConstructL( CCseSchedulerServer* aServer ); - - private: // Data - - /** - * Object index for this session. Own. - */ - CObjectIx* iObjects; - - /** - * Total number of resources allocated - */ - TInt iResourceCount; - - }; - -#endif // __CCSESCHEDULERSERVERSESSION_H - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerThreadPacket.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerThreadPacket.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -/* -* Copyright (c) 2006 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: Header file for CCseSchedulerThreadPacket-class.* -*/ - - - -#ifndef _CCSESCHEDULERTHREADPACKET_H -#define _CCSESCHEDULERTHREADPACKET_H - -// INCLUDES -#include - -// CONSTANTS -// None -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class CCseScheduledProgram; - -/** -* Class holding CCseScheduledProgram and ThreadResultCode. This is given to -* separate plugin thread and should not be accessed before thread dies. -*/ -class CCseSchedulerThreadPacket : public CBase -{ - public: // Constructors and destructors - /** - * Destructor. - */ - virtual ~CCseSchedulerThreadPacket(); - - /** - * Two-phased constructor. - * @param aObserver A pointer back to server engine through observer - */ - static CCseSchedulerThreadPacket* NewL( ); - - private: // Constructors and destructors - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - /** - * C++ default constructor. - * @param aObserver A pointer back to server engine through observer. - */ - CCseSchedulerThreadPacket( ); - - public: // New methods - /** - * Sets schedule to thread packet. Overwrites existing one. - * @param aData Scheduled program to be set - */ - void SetScheduleL( CCseScheduledProgram& aData ); - - /** - * Gets schedule from thread packet. - * @return Pointer to scheduled program. - */ - CCseScheduledProgram* Schedule( ); - - /** - * Sets threads result code. Should be set before thread completes. - * Defaults to KErrGeneral. - * @param aResultCode New result code. Overwrites existing one. - */ - void SetResultCode( TInt32 aResultCode); - - /** - * Gets threads result code. - * @return Threads result code. Defaulted to KErrGeneral if not set. - */ - TInt32 ResultCode( ); - - /** - * Sets semaphore used to signal plugin shutdown request. - * @param aSemaphore Semaphore used to signal shutdown - */ - void SetShutdownSemaphore( RSemaphore& aSemaphore ); - - /** - * Sets semaphore used to signal when plugin shutdown has completed. - * @param aSemaphore Semaphore used to signal shutdown - */ - void SetShutdownCompleteSemaphore( RSemaphore& aSemaphore ); - - /** - * Gets semaphore used to signal plugin shutdown request. - * @return RSemaphore Semaphore used to signal plugin shutdown request. - */ - RSemaphore& ShutdownSemaphore(); - - /** - * Gets semaphore used to signal when plugin shutdown has completed. - * @return RSemaphore Semaphore used to signal when plugin shutdown has completed. - */ - RSemaphore& ShutdownCompleteSemaphore(); - - private: // Data - /** - * Scheduled program to be run in the plugin thread. Own. - */ - CCseScheduledProgram* iSchedule; - - /** - * Plugin completition code after the thread dies. - */ - TInt32 iResultCode; - - /** - * Semaphore signalled when plugin shutdown is wanted while plugin is running. - */ - RSemaphore iShutdownSemaphore; - - /** - * Semaphore signalled when plugin shutdown is completed. - */ - RSemaphore iShutdownCompleteSemaphore; -}; - -#endif //_CCSESCHEDULERTHREADPACKET_H \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerTimer.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerTimer.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2006 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: Header file for CCSeSchdulerTimer-class.* -*/ - - - - -#ifndef _CCSESCHEDULERTIMER_H -#define _CCSESCHEDULERTIMER_H - -// INCLUDES -#include - -// CONSTANTS -// None -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class MCseSchedulerTimerObserver; -class CCseSchedulerPluginIF; - -/** -* Timer for determining when schedules should be run. -*/ -class CCseSchedulerTimer : public CTimer -{ - public: // Constructors and destructors - /** - * Destructor. - */ - virtual ~CCseSchedulerTimer(); - - /** - * Two-phased constructor. - * @param aObserver A pointer back to server engine through observer - */ - static CCseSchedulerTimer* NewL( MCseSchedulerTimerObserver* aObserver ); - - public: // New methods - /** - * Sets timer to fire on given time - * @param aTime Time when timer is set to fire - * @return None - */ - void SetTimer( const TTime& aTime ); - - private: // Constructors and destructors - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - /** - * C++ default constructor. - * @param aObserver A pointer back to server engine through observer. - */ - CCseSchedulerTimer( MCseSchedulerTimerObserver* aObserver ); - - private: // Functions from base classes - /** - * RunL - * @return None - */ - void RunL(); - - /** - * RunError - * @return See CTimer documentation. - */ - TInt RunError( TInt aError ); - - /** - * DoCancel - * @return None - */ - void DoCancel(); - - private: // Data - /** - * Pointer back to scheduler engine. Not own. - */ - MCseSchedulerTimerObserver* iObserver; -}; - -#endif //_CCSESCHEDULERTIMER_H \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSchedulerUniPluginController.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerUniPluginController.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2006 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: Header for UniPluginController-class* -*/ - - - - -#ifndef __CCSESCHEDULERUNIPLUGINCONTROLLER_H -#define __CCSESCHEDULERUNIPLUGINCONTROLLER_H - -// INCLUDES -#include "CCseSchedulerPluginControllerBase.h" - -// CONSTANTS -// None - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -class CCseSchedulerPluginStarter; -class CCseSchedulerLandLord; - -/** -* Controller for plugins that can be only be in run one at the time -*/ -class CCseSchedulerUniPluginController : public CCseSchedulerPluginControllerBase - { - public: // Constructors and destructor - /** - * Two-phased constructor. - * @params aEngine reference to engine - * @params aPluginUid plugin uid of the plugin this plugin controller is made for - * @return CCseSchedulerPluginControllerBase pointer to CCseSchedulerPluginControllerBase class - */ - static CCseSchedulerUniPluginController* NewL( CCseSchedulerServerEngine& aEngine, TInt32 aPluginUid ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerUniPluginController(); - - - public: // from CCseSchedulerPluginControllerBase - - void ClearControllerL(); - - TBool IsControllerActive(); - - void RunPluginsL() ; - - void SetSchedulesL( RPointerArray& aScheduleArray ); - - void ScheduleCompletedL( const TUint32 aDbIdentifier, TInt aCompletitionCode ); - - void TimerErrorL( const TInt32 aError ); - - private: // Constructors and destructor - /** - * C++ default constructor. - */ - CCseSchedulerUniPluginController( CCseSchedulerServerEngine& aEngine, TInt32 aPluginUid ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // New methods - /** - * Handles succesfully completed schedules. - * @param aDbIdentifier DbIdentifier of schedule just completed - */ - void ScheduleCompletedSuccesfullyL( const TUint32 aDbIdentifier ); - - /** - * Handles failed schedules. - * @param aDbIdentifier DbIdentifier of schedule just completed - * @param aCompletitionCode Error code of the completed schedule. - */ - void HandleScheduleErrorL( const TUint32 aDbIdentifier, - TUint32 aCompletitionCode ); - private: // Data - - /** - * LandLord. Owns data that is given to new thread and acts as observer to thread. - * Own. - */ - CCseSchedulerLandLord* iLandLord; - - /** - * Boolean representing if the LandLord is active or not. - */ - TBool iIsLandLordWorking; - }; - -#endif // __CCSESCHEDULERUNIPLUGINCONTROLLER_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CCseSemaphoreController.h --- a/videoscheduler/SchedulerServer/inc/CCseSemaphoreController.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2006 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: Semaphore controller. Checks once a while if given semaphore is* -*/ - - - - -#ifndef __CCSESEMAPHORECONTROLLER_H -#define __CCSESEMAPHORECONTROLLER_H - -// INCLUDES -#include - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -class RSemaphore; -class MCseSemaphoreSignalObserver; - -/** -* CCseSemaphoreController -* -* @lib -*/ -class CCseSemaphoreController : public CTimer - { - public: // Constructors and destructors - /** - * Destructor. - */ - virtual ~CCseSemaphoreController(); - - /** - * Two-phased constructor. - * @param aSemaphore Semaphore to be followed. - * @param aObserver A pointer back to server engine through observer. - */ - static CCseSemaphoreController* NewL( RSemaphore& aSemaphore, - MCseSemaphoreSignalObserver& aObserver ); - - /** - * Starts checking if semaphore is signalled. Default interval is 5000ms. - */ - void Start( ); - - /** - * Stops checking semaphore. - */ - void Stop( ); - - private: // Constructors and destructors - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - /** - * C++ default constructor. - * @param aSemaphore Semaphore to be followed. - * @param aObserver A pointer back to server engine through observer. - */ - CCseSemaphoreController( RSemaphore& aSemaphore, - MCseSemaphoreSignalObserver& aObserver ); - - private: // Functions from base classes - /** - * RunL - * @return None - */ - void RunL(); - - /** - * Sets new interval how often semaphore signal is checked. Doesn't restart - * checking automatically. - * @param aInterval Interval how often semaphore signal is checked in milliseconds. - */ - void SetInterval( TUint aInterval ); - - private: // data - - /** - * Semaphore under observation. - */ - RSemaphore& iSemaphore; - - /** - * Reference to observer. - */ - MCseSemaphoreSignalObserver& iObserver; - - /** - * Interval how often semaphore signal is checked in milliseconds. - * Default is 5000 ms. - */ - TUint iInterval; - }; - - -#endif // __CCSESEMAPHORECONTROLLER_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/CseSchedulerServer.pan --- a/videoscheduler/SchedulerServer/inc/CseSchedulerServer.pan Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2005 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: -* -*/ - - - - - -#ifndef __CSESCHEDULERSERVER_PAN__ -#define __CSESCHEDULERSERVER_PAN__ - -/** CseEngineServer panic codes */ -enum TCseSchedulerServPanic - { - ECsePanicBadRequest = 1, - ECsePanicBadDescriptor, - ECreateTrapCleanup, - ECseCreateTrapCleanup, - ECseSrvCreateServer, - ECsePanicBadSubSessionHandle, - ECsePanicCouldNotCreatePrivateDir - }; - -#endif // __CSESCHEDULERSERVER_PAN__ - -// End of File \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/MCsePluginControllerObserver.h --- a/videoscheduler/SchedulerServer/inc/MCsePluginControllerObserver.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* -* Copyright (c) 2006 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: Observer to inform common scheduling engine when plugin is* -*/ - - - - -#ifndef __MCSEPLUGINCONTROLLEROBSERVER_H__ -#define __MCSEPLUGINCONTROLLEROBSERVER_H__ - -class CCseSchedulerPluginControllerBase; - -// CLASS DECLARATION -/** -* MCsePluginControllerObserver -* This class offers plugin controller some of the engine's utilities. -*/ -class MCsePluginControllerObserver - { - public: // New functions - /** - * Method to inform succesfully completed schedules. - * @param aDbIdentifier Identifier of the schedule that has - * completed. - */ - virtual void ScheduleCompletedSuccesfullyL( const TUint32 aDbIdentifier ) = 0; - - /** - * Method to inform failed schedules. - * @param aDbIdentifier Identifier of the schedule that has - * completed. - */ - virtual void ScheduleCompletedWithErrorL( const TUint32 aDbIdentifier, - TUint32 aErrorCode ) = 0; - - /** - * Orders engine to increase run count of given shedule. - * @param aDbIdentifier Identifier of the schedule who's run - * needs to be incremented. - */ - virtual void IncreaseScheduleRunCountL( const TUint32 aDbIdentifier ) = 0; - - /** - * Asks from engine if given schedule can be run - * @param aDbIdentifier Identifier of the schedule to be checked. - * @return boolean value representing if schedule can be run or not. - */ - virtual TBool IsAllowedToRun( const TUint32 aDbIdentifier ) = 0; - - /** - * Reports not valid schedule to engine (schedule cannot be run anymore). - * @param aDbIdentifier Reported schedules identifier. - */ - virtual void ScheduleNotValid( const TUint32 aDbIdentifier ) = 0; - - /** - * Requests rescheduling for plugin controllers - */ - virtual void RequestReschedule( ) = 0; - - /** - * Signals when plugin controller clearing is done. - */ - virtual void ClearingDone( ) = 0; - }; - -#endif // __MCSEPLUGINCONTROLLEROBSERVER_H__ - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/MCseSchedulerTimerObserver.h --- a/videoscheduler/SchedulerServer/inc/MCseSchedulerTimerObserver.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2006 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: -* -*/ - - - - -#ifndef __MCSESCHEDULERTIMEROBSERVER_H__ -#define __MCSESCHEDULERTIMEROBSERVER_H__ - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -/** -* MCseSchedulerTimerObserver -* This class specifies the function to be called when a timeout occurs. -* Used in conjunction with CCseSchedulerTimer class. -*/ -class MCseSchedulerTimerObserver - { - public: // New functions - /** - * Called when time is up and plugins should be run. - * - */ - virtual void RunPluginsL( ) = 0; - - /** - * Informs about time errors (time changes, timer is set towards time already - * in past), - * @parms aError timer error code. Most common are: - * KErrAbort - Phone time has changed - * KErrUnderflow - Time is in the past - * KErrOverFlow - Time is too far in the future - */ - virtual void TimerErrorL( TInt32 aError ) = 0; - }; - -#endif // __MCSESCHEDULERTIMEROBSERVER_H__ - -// End of File \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/inc/MCseSemaphoreSignalObserver.h --- a/videoscheduler/SchedulerServer/inc/MCseSemaphoreSignalObserver.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2006 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: Observer to inform plugin starter that it is time shutdown* -*/ - - - - -#ifndef __MCSESEMAPHORESIGNALOBSERVER_H__ -#define __MCSESEMAPHORESIGNALOBSERVER_H__ - -// CLASS DECLARATION -/** -* MCseSemaphoreSignalObserver -* Observer interface to be called once observed semaphore is signalled -*/ -class MCseSemaphoreSignalObserver - { - public: // New functions - /** - * Called when observed semaphore is signalled. - */ - virtual void SemaphoreSignalled( ) = 0; - }; - -#endif // __MCSESEMAPHORESIGNALOBSERVER_H__ - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/rom/videoschedulerserver.iby --- a/videoscheduler/SchedulerServer/rom/videoschedulerserver.iby Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +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 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: -* -*/ - - -#ifndef __VIDEOSCHEDULERSERVER_IBY__ -#define __VIDEOSCHEDULERSERVER_IBY__ - -#include - -file=ABI_DIR\BUILD_DIR\CseSchedulerServer.exe PROGRAMS_DIR\CseSchedulerServer.exe - -#endif // __VIDEOSCHEDULERSERVER_IBY__ diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/src/CCseScheduleDB.cpp --- a/videoscheduler/SchedulerServer/src/CCseScheduleDB.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2064 +0,0 @@ -/* -* Copyright (c) 2006 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: Database where to store scheduled events.* -*/ - - - - -// INCLUDE FILES -#include "CCseScheduleDB.h" // Header file for this class -#include // Represent one schedule in database -#include -#include "CseDebug.h" // Debug macros -#include - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -_LIT( KCseCDiskPrefix, "c:" ); -_LIT( KCseSqlGetAll, "SELECT * FROM ScheduleEvent"); -_LIT( KCseSelectFromDb, "SELECT * FROM " ); -_LIT( KCseWhere, " WHERE " ); -_LIT( KCseEqual, " = " ); -_LIT( KCseOrderBy, " ORDER BY " ); -_LIT( KCseAnd, " AND " ); -_LIT( KCseLess, " < " ); -_LIT( KCseMore, " > " ); - -static TUint KScheduleNameMaxLength = 255; -static TUint KCseDatbaseVersionNumber = 1; - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ============================ MEMBER FUNCTIONS =============================== -// --------------------------------------------------------------------------- -// CCseScheduleDB::CCseScheduleDB() -// -// --------------------------------------------------------------------------- -CCseScheduleDB::CCseScheduleDB() : iDbAccess( ECseDbOpen ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::CCseScheduleDB"); - // Default C++ Constructor - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::~CCseScheduleDB"); - - iScheduleDb.Close(); - delete iScheduleFileStore; - iFsSession.Close(); - - if( iCompactTimer ) - { - iCompactTimer->Cancel(); - delete iCompactTimer; - } - delete iBackupWrapper; - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::NewL"); - CCseScheduleDB* self = new ( ELeave ) CCseScheduleDB(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::ConstructL"); - - User::LeaveIfError( iFsSession.Connect() ); - - iCompactTimer = CPeriodic::NewL( CActive::EPriorityStandard ); - - iBackupWrapper = CBaBackupSessionWrapper::NewL(); - - TRAPD( err, OpenOrCreateDbL() ); - - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( "CCseScheduleDB::ConstructL - Opening or creating the database FAILED: %d", err ); - - if ( err != KErrNoMemory && - err != KErrLocked && - err != KErrDisMounted && - err != KErrDiskFull && - err != KErrNotReady ) - { - // Delete and recreate database file. Cannot recover other way. - CSELOGSTRING_HIGH_LEVEL( "CCseScheduleDB::ConstructL - deleting database" ); - RemoveDbL(); - CSELOGSTRING_HIGH_LEVEL( "CCseScheduleDB::ConstructL - recreating database" ); - TRAPD( err, OpenOrCreateDbL() ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( "CCseScheduleDB::ConstructL couldnt recreate database (%d), leaving", err ); - User::Leave( err ); - } - } - else - { - CSELOGSTRING2_HIGH_LEVEL( "CCseScheduleDB::ConstructL leaving (%d)", err ); - User::Leave( err ); - } - } - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) - { - CSELOGSTRING2_HIGH_LEVEL(">>>CCseScheduleDB::GetApplicationSchedulesL - AppUid: %d", - aAppUid); - - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleApplicationUIDCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aAppUid ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get the SQL table indexes. - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo scheduleTypeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through the tables - while ( view.AtRow() ) - { - // Create new CCseSceduledProgram to be added to array - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - - // Fill created schedule with DB information - view.GetL(); - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - prog->SetScheduleType( view.ColInt32( scheduleTypeIndex ) ); - prog->SetPluginType( view.ColInt32( pluginTypeIndex ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy(); // readStream - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aArray.Append( prog ) ); - CleanupStack::Pop( prog ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::OpenOrCreateDbL"); - TBuf path; - - // Get path to CSE's private directory - TInt err( iFsSession.PrivatePath( path ) ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL("iFsSession.PrivatePath() failed: %d", err ); - User::Leave( err ); - } - - iDbFile.Zero(); - iDbFile.Append( KCseCDiskPrefix ); - iDbFile.Append( path ); - if ( BaflUtils::CheckFolder( iFsSession, iDbFile ) != KErrNone ) - { - err = iFsSession.CreatePrivatePath( EDriveC ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( "CreatePrivatePath failed! %d", err ); - User::Leave( err ); - } - } - - iDbFile.Append( KCseScheduleDBName() ); - - // If file doesn't exist create it - if ( !BaflUtils::FileExists( iFsSession, iDbFile ) ) - { - CSELOGSTRING_HIGH_LEVEL("CCseScheduleDB::OpenOrCreateDbL Create New"); - iScheduleDb.Close(); - - if( iScheduleFileStore ) - { - delete iScheduleFileStore; - iScheduleFileStore = NULL; - } - - iScheduleFileStore = CPermanentFileStore::ReplaceL( iFsSession, - iDbFile, - EFileRead|EFileWrite ); - // Set file store type - iScheduleFileStore->SetTypeL( iScheduleFileStore->Layout() ); - // Create stream object - TStreamId id = iScheduleDb.CreateL( iScheduleFileStore ); - // Keep database id as root of store - iScheduleFileStore->SetRootL( id ); - // Complete creation by commiting - iScheduleFileStore->CommitL(); - - CreateDatabaseTableL( iScheduleDb ); - CreateScheduleTableL( iScheduleDb ); - SetDatabaseVersionL( ); - } - // Or if it exists then just open it. - else - { - iScheduleDb.Close(); - delete iScheduleFileStore; - iScheduleFileStore = NULL; - iScheduleFileStore = CPermanentFileStore::OpenL( iFsSession, iDbFile, - EFileRead|EFileWrite ); - iScheduleFileStore->SetTypeL( iScheduleFileStore->Layout() ); - iScheduleDb.OpenL( iScheduleFileStore, iScheduleFileStore->Root() ); - CheckDbVersionL(); - User::LeaveIfError( iScheduleDb.Compact() ); - } - - if ( !iBackupWrapper ) - { - iBackupWrapper = CBaBackupSessionWrapper::NewL(); - } - - iBackupWrapper->RegisterFileL( iDbFile, *this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::CheckDbVersionL"); - - TInt dbVersion( 0 ); - - TRAPD( leave, dbVersion = GetDbVersionL() ); - - if ( dbVersion != KCseDatbaseVersionNumber || leave != KErrNone ) - { - CSELOGSTRING3_HIGH_LEVEL( - "CCseScheduleDB::CheckDbVersionL Not ok, version: %d, error: %d", - dbVersion, leave ); - - // Destroy the old one - iScheduleDb.Close(); - delete iScheduleFileStore; - iScheduleFileStore = NULL; - - // Create new one - iScheduleFileStore = CPermanentFileStore::ReplaceL( iFsSession, - iDbFile, - EFileRead|EFileWrite ); - - // Set file store type - iScheduleFileStore->SetTypeL( iScheduleFileStore->Layout() ); - // Create stream object - TStreamId id = iScheduleDb.CreateL( iScheduleFileStore ); - // Keep database id as root of store - iScheduleFileStore->SetRootL( id ); - // Complete creation by commiting - iScheduleFileStore->CommitL(); - - CreateDatabaseTableL( iScheduleDb ); - CreateScheduleTableL( iScheduleDb ); - SetDatabaseVersionL( ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetDbVersionL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - TInt dbVersion(0); - - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseDatabaseTable ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - TDbColNo versionIndex = colSetOrder->ColNo( KCseDatabaseVersionCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - if ( view.AtRow() ) - { - view.GetL(); - dbVersion = view.ColInt32( versionIndex ); - } - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING2_HIGH_LEVEL( - "<<>>CCseScheduleDB::CreateScheduleTableL"); - - // Create columns for the database. - TDbCol keyCol( KCseScheduleDbKeyCol, EDbColUint32 ); - keyCol.iAttributes = TDbCol::EAutoIncrement; - - TDbCol nameCol( KCseScheduleNameCol, EDbColText8, KScheduleNameMaxLength ); - TDbCol startTimeCol( KCseScheduleStartTimeCol, EDbColDateTime ); - TDbCol endTimeCol( KCseScheduleEndTimeCol, EDbColDateTime ); - TDbCol applicationUidCol( KCseScheduleApplicationUIDCol, EDbColInt32 ); - TDbCol plugInUidCol( KCseSchedulePlugInUIDCol, EDbColInt32 ); - TDbCol typeCol( KCseScheduleTypeCol, EDbColInt32 ); - TDbCol applicationSpecificCol( KCseScheduleApplicationSpecificCol, EDbColLongBinary ); - TDbCol runCountCol( KCseScheduleRunCountCol, EDbColInt32 ); - TDbCol stateCol( KCseScheduleStateCol, EDbColInt32 ); - TDbCol pluginTypeCol( KCseSchedulePluginTypeCol, EDbColInt32 ); - TDbCol reserved1Col( KCseScheduleReserved1Col, EDbColInt32 ); - TDbCol reserved2Col( KCseScheduleReserved2Col, EDbColInt32 ); - - // Create column set and add defined columns in to the set - CDbColSet* scheduleColSet = CDbColSet::NewLC(); - scheduleColSet->AddL( keyCol ); - scheduleColSet->AddL( nameCol ); - scheduleColSet->AddL( startTimeCol ); - scheduleColSet->AddL( endTimeCol ); - scheduleColSet->AddL( applicationUidCol ); - scheduleColSet->AddL( plugInUidCol ); - scheduleColSet->AddL( typeCol ); - scheduleColSet->AddL( applicationSpecificCol ); - scheduleColSet->AddL( runCountCol ); - scheduleColSet->AddL( stateCol ); - scheduleColSet->AddL( pluginTypeCol ); - scheduleColSet->AddL( reserved1Col ); - scheduleColSet->AddL( reserved2Col ); - - // Create new table to the database with created columnset - User::LeaveIfError( aDatabase.CreateTable( KCseScheduleTable, - *scheduleColSet ) ); - - CleanupStack::PopAndDestroy( scheduleColSet ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::CreateDatabaseTableL"); - - // Create columns for the database. - TDbCol versionCol( KCseDatabaseVersionCol, EDbColInt32 ); - TDbCol reserved1Col( KCseDatabaseReserved1Col, EDbColInt32 ); - TDbCol reserved2Col( KCseDatabaseReserved2Col, EDbColInt32 ); - - // Create column set and add defined columns in to the set - CDbColSet* databaseColSet = CDbColSet::NewLC(); - databaseColSet->AddL( versionCol ); - databaseColSet->AddL( reserved1Col ); - databaseColSet->AddL( reserved2Col ); - - // Create new table to the database with created columnset - User::LeaveIfError( aDatabase.CreateTable( KCseDatabaseTable, - *databaseColSet ) ); - - CleanupStack::PopAndDestroy( databaseColSet ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::SetDatabaseVersionL"); - - iSqlSchedule.Zero(); - iSqlSchedule.Append( KCseSelectFromDb ); - iSqlSchedule.Append( KCseDatabaseTable ); - - RDbView view; - CleanupClosePushL( view ); - - // Prepare DB for update - User::LeaveIfError(view.Prepare( iScheduleDb, - TDbQuery( iSqlSchedule ), - TDbWindow::EUnlimited, - RDbView::EInsertOnly )); - view.InsertL(); - - // Create colomn set (row) to be added - CDbColSet* databaseColSet = view.ColSetL(); - CleanupStack::PushL( databaseColSet ); - - // Fill row with Schedule information - view.SetColL( databaseColSet->ColNo( KCseDatabaseVersionCol ), - KCseDatbaseVersionNumber ); - CleanupStack::PopAndDestroy( databaseColSet ); - view.PutL(); - CleanupStack::PopAndDestroy( &view ); // closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::AddScheduleL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - iSqlSchedule.Zero(); - iSqlSchedule.Append( KCseSqlGetAll ); - RDbView view; - CleanupClosePushL( view ); - - // Prepare DB for update - User::LeaveIfError(view.Prepare( iScheduleDb, - TDbQuery( iSqlSchedule ), - TDbWindow::EUnlimited, - RDbView::EInsertOnly )); - view.InsertL(); - - // Create colomn set (row) to be added - CDbColSet* scheduleColSet = view.ColSetL(); - CleanupStack::PushL( scheduleColSet ); - - // Fill row with Schedule information - view.SetColL( scheduleColSet->ColNo( KCseScheduleNameCol ), - aData.Name() ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleStartTimeCol ), - aData.StartTime() ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleEndTimeCol ), - aData.EndTime() ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleApplicationUIDCol ), - aData.AppUid() ); - - view.SetColL( scheduleColSet->ColNo( KCseSchedulePlugInUIDCol ), - aData.PluginUid() ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleTypeCol ), - aData.ScheduleType() ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleRunCountCol ), - 0 ); - - view.SetColL( scheduleColSet->ColNo( KCseScheduleStateCol ), - ECseWaiting ); - - view.SetColL( scheduleColSet->ColNo( KCseSchedulePluginTypeCol ), - aData.PluginType() ); - - // Description is long one, it needs to be handled by stream - RDbColWriteStream write; - write.OpenLC( view, scheduleColSet->ColNo( KCseScheduleApplicationSpecificCol ) ); - write.WriteL( aData.ApplicationData() ); - write.CommitL(); - CleanupStack::PopAndDestroy(); // write - - TDbColNo keyColumnNo = scheduleColSet->ColNo( KCseScheduleDbKeyCol ); - CleanupStack::PopAndDestroy( scheduleColSet ); - view.PutL(); - - // Get new program key - aData.SetDbIdentifier( view.ColUint32( keyColumnNo ) ); - - CleanupStack::PopAndDestroy( &view ); // closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::RemoveScheduleL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL string to find given schedule from DB - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - User::LeaveIfError( iScheduleDb.Begin() ); - - // Prepare DB to update - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - view.FirstL(); - - TInt count( 0 ); - - // If schedule found, remove it. - while ( view.AtRow() ) - { - view.DeleteL(); - count++; - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // closes view - User::LeaveIfError( iScheduleDb.Commit() ); - - CSELOGSTRING3_HIGH_LEVEL("---- %d Items for identifier %d removed from DB", count, aDbIdentifier); - if ( count == 0 ) - { - User::Leave( KErrNotFound ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetNextScheduleTimeL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL satring to get schedule occurence(s) that are - // going to happen next from database. - TTime nextScheduleTime( 0 ); - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleStateCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( ECseWaiting ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next schedule - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Schedule found get its start time. - if ( view.AtRow() ) - { - view.GetL(); - nextScheduleTime = view.ColTime( startTimeIndex ); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<& aNextScheduleArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::FillScheduleArrayByTimeL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf<100> startTimeBuf; - - _LIT( KDateTimeFormat,"# %1%*D/%2%*M/%3%*Y %H:%T:%S.%C#" ); - - aScheduleTime.FormatL( startTimeBuf, KDateTimeFormat ); - - // Create SQL string to get all schedules to be happen at given time - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.Append( startTimeBuf ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get column indexes - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through all found schedules. - while ( view.AtRow() ) - { - // Create new schedule to be added to array - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - view.GetL(); - - // Copy information from DB to schedule. - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - prog->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - prog->SetPluginType( CCseScheduledProgram::TCsePluginType( - view.ColInt32( pluginTypeIndex ) ) ); - TInt streamLen( view.ColLength( applicationSpecificIndex ) ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy(); // readStream; - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aNextScheduleArray.Append( prog ) ); - CleanupStack::Pop( prog ); - - // And next schedule... - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetScheduleByDbIdentifierL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - if ( !aSchedule ) - { - return; - } - - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - while ( view.AtRow() ) - { - view.GetL(); - aSchedule->SetDbIdentifier( view.ColUint32( keyIndex ) ); - aSchedule->SetName( view.ColDes8( nameIndex ) ); - aSchedule->SetStartTime( view.ColTime( startTimeIndex ) ); - aSchedule->SetEndTime( view.ColTime( endTimeIndex ) ); - aSchedule->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - aSchedule->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - - aSchedule->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - aSchedule->SetPluginType( CCseScheduledProgram::TCsePluginType( - view.ColInt32( pluginTypeIndex ) ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |->1 - readStream.ReadL(buffPtr, streamLen); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1<-| Popping pointer to Col that we dont have here - TPtrC8 ptr8( appDataBuffer->Des() ); - aSchedule->SetApplicationDataL( *appDataBuffer ); - CleanupStack::PopAndDestroy( appDataBuffer ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<& aResultArray - ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetOverlappingSchedulesL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - TBuf<100> startTimeBuf; - _LIT( KDateTimeFormat,"# %1%*D/%2%*M/%3%*Y %H:%T:%S#" ); - aStartTime.FormatL( startTimeBuf, KDateTimeFormat ); - TBuf<100> endTimeBuf; - aEndTime.FormatL( endTimeBuf, KDateTimeFormat ); - - // Create SQL string to find all overlapping schedules from database between given - // timeframe. - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleTypeCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aType ); - sqlStatement.Append( KCseAnd ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - sqlStatement.Append( KCseLess ); - sqlStatement.Append( endTimeBuf ); - sqlStatement.Append( KCseAnd ); - sqlStatement.Append( KCseScheduleEndTimeCol ); - sqlStatement.Append( KCseMore ); - sqlStatement.Append( startTimeBuf ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Move to the first row - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get colon indexes. - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through all found schedules. - while ( view.AtRow() ) - { - // Create new schedule to be added to array. - CCseScheduledProgram* schedule = CCseScheduledProgram::NewL(); - CleanupStack::PushL( schedule ); - view.GetL(); - - // Set schedule information. - schedule->SetDbIdentifier( view.ColUint32( keyIndex ) ); - schedule->SetName( view.ColDes8( nameIndex ) ); - schedule->SetStartTime( view.ColTime( startTimeIndex ) ); - schedule->SetEndTime( view.ColTime( endTimeIndex ) ); - schedule->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - schedule->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - - schedule->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - schedule->SetPluginType( CCseScheduledProgram::TCsePluginType( - view.ColInt32( pluginTypeIndex ) ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; // |->1 - readStream.OpenLC( view, applicationSpecificIndex ); - readStream.ReadL(buffPtr, streamLen); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1<-| Popping pointer to Col that we dont have here - TPtrC8 ptr8( appDataBuffer->Des() ); - schedule->SetApplicationDataL( *appDataBuffer ); - CleanupStack::PopAndDestroy( appDataBuffer ); - if ( schedule->StartTime() < aEndTime && schedule->EndTime() > aStartTime ) - { - aResultArray.AppendL( schedule ); - CleanupStack::Pop( schedule ); - } - else - { - CleanupStack::PopAndDestroy( schedule ); - schedule = NULL; - } - - // Next shcedule... - view.NextL(); - } - CleanupStack::PopAndDestroy( &view ); // Closes view - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::IncreaseRunCountL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL string to find given schedule - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - // Order table based on DB identifier - RDbView readView; - CleanupClosePushL( readView ); - - User::LeaveIfError( readView.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( readView.EvaluateAll() ); - - // Get the next reminder - readView.FirstL(); - - // First we read existint run count - CDbColSet* readColSet = readView.ColSetL(); - CleanupStack::PushL( readColSet ); - TDbColNo runCountCol = readColSet->ColNo( KCseScheduleRunCountCol ); - CleanupStack::PopAndDestroy( readColSet ); - TInt32 runCount( 0 ); - if ( readView.AtRow() ) - { - readView.GetL(); - runCount = readView.ColInt32( runCountCol ); - runCount++; - } - // Close read view - CleanupStack::PopAndDestroy( &readView ); - - // Update run count - if ( runCount > 0 ) - { - // Open write view - RDbView writeView; - CleanupClosePushL( writeView ); - User::LeaveIfError( writeView.Prepare( iScheduleDb, - TDbQuery( sqlStatement ), - TDbWindow::EUnlimited, - RDbView::EUpdatable )); - User::LeaveIfError( writeView.EvaluateAll() ); - - writeView.FirstL(); - CDbColSet* writeColSet = writeView.ColSetL(); - CleanupStack::PushL( writeColSet ); - TDbColNo runCountColNo = writeColSet->ColNo( KCseScheduleRunCountCol ); - CleanupStack::PopAndDestroy( writeColSet ); - - writeView.UpdateL(); - - // If we found (as we should) schedule again we update its value. - if ( writeView.AtRow() ) - { - writeView.SetColL( runCountColNo, runCount ); - } - - writeView.PutL(); - - CleanupStack::PopAndDestroy( &writeView ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetRunCountL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - TInt32 runCount( 0 ); - - // Create SQL string to find given schedule - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - TDbColNo runCountCol = colSetOrder->ColNo( KCseScheduleRunCountCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // If we found schedule get its run count. - if ( view.AtRow() ) - { - view.GetL(); - - runCount = view.ColInt32( runCountCol ); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseScheduleDB::SetScheduleStateL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL string to find given schedule - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - // Open write view - RDbView writeView; - CleanupClosePushL( writeView ); - User::LeaveIfError( writeView.Prepare( iScheduleDb, - TDbQuery( sqlStatement ), - TDbWindow::EUnlimited, - RDbView::EUpdatable )); - User::LeaveIfError( writeView.EvaluateAll() ); - - writeView.FirstL(); - CDbColSet* writeColSet = writeView.ColSetL(); - CleanupStack::PushL( writeColSet ); - TDbColNo stateColNo = writeColSet->ColNo( KCseScheduleStateCol ); - CleanupStack::PopAndDestroy( writeColSet ); - - writeView.UpdateL(); - - // If we found schedule, we change the column value. - if ( writeView.AtRow() ) - { - writeView.SetColL( stateColNo, aState ); - } - - writeView.PutL(); - CleanupStack::PopAndDestroy( &writeView ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetScheduleStateL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL string to find given schedule - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleDbKeyCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aDbIdentifier ); - - // Order table based on DB identifier - RDbView readView; - CleanupClosePushL( readView ); - User::LeaveIfError( readView.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( readView.EvaluateAll() ); - - // Get the reminder - readView.FirstL(); - - CDbColSet* readColSet = readView.ColSetL(); - CleanupStack::PushL( readColSet ); - TDbColNo stateCol = readColSet->ColNo( KCseScheduleStateCol ); - CleanupStack::PopAndDestroy( readColSet ); - TInt32 state( KErrNotFound ); - - // If we found schedule, get the schedule state. - if ( readView.AtRow() ) - { - readView.GetL(); - state = readView.ColInt32( stateCol ); - } - // Close read view - CleanupStack::PopAndDestroy( &readView ); - - CSELOGSTRING_HIGH_LEVEL("<<& aScheduleArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::StartupSchedulesL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL string to find wanted schedules. - // At startup phase we are first interested for - // those schedules that were on run when phone was - // shutdown (eg runcount is bigger than 0). - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleRunCountCol ); - sqlStatement.Append( KCseMore ); - sqlStatement.AppendNum( 0 ); - - // Order table - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the first reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Column indexes - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through the found schedules. - while ( view.AtRow() ) - { - // Create CseScheduledProgram to be added to string. - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - view.GetL(); - - // Set schedule information. - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - - prog->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - prog->SetPluginType( CCseScheduledProgram::TCsePluginType( - view.ColInt32( pluginTypeIndex ) ) ); - - TInt streamLen( view.ColLength( applicationSpecificIndex ) ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |->1 - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1<-| Popping pointer to Col that we dont have here - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aScheduleArray.Append( prog ) ); - CleanupStack::Pop( prog ); - - // Next shcedule - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::ResetCompactTimer"); - - // If iCompatTimer is not running start it. - if( !iCompactTimer ) - { - TRAPD(err, iCompactTimer = CPeriodic::NewL( CActive::EPriorityStandard )); - - if(err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL("CCseScheduleDB::ResetCompactTimer - Can't create iCompactTimer: %d", err); - } - } - - // If iCompactTimer is running cancel it and start over again. - if( iCompactTimer ) - { - iCompactTimer->Cancel(); - - iCompactTimer->Start( KCseDbCompactTimeout, - KCseDbCompactTimeout, - TCallBack( CompactCallback, this ) ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::CompactCallback"); - - // Direct call to class method. - static_cast( aThis )->CompactDb(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::CompactDb"); - // Compact database - TInt err( iScheduleDb.Compact() ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL("iScheduleDb.Compact() failed: %d", err); - } - // Cancel timer if it is running - if ( iCompactTimer ) - { - iCompactTimer->Cancel(); - delete iCompactTimer; - iCompactTimer = NULL; - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::ChangeFileLockL" ); - - switch ( aFlags ) - { - case MBackupObserver::EReleaseLockReadOnly: - case MBackupObserver::EReleaseLockNoAccess: - { - // Backup and restore starting, close the db - CloseDbFile(); - } - break; - - default: - { - OpenDbFileL(); - } - break; - } - - CSELOGSTRING_HIGH_LEVEL( "<<>>CCseScheduleDB::CloseDbFile"); - - iDbAccess = ECseDbLocked; - iScheduleDb.Close(); - delete iScheduleFileStore; - iScheduleFileStore = NULL; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::OpenDbFileL"); - - iScheduleDb.Close(); - if( iScheduleFileStore ) - { - delete iScheduleFileStore; - iScheduleFileStore = NULL; - } - iScheduleFileStore = CPermanentFileStore::OpenL( iFsSession, iDbFile, - EFileRead|EFileWrite ); - iScheduleFileStore->SetTypeL( iScheduleFileStore->Layout() ); - iScheduleDb.OpenL( iScheduleFileStore, iScheduleFileStore->Root() ); - User::LeaveIfError( iScheduleDb.Compact() ); - - iDbAccess = ECseDbOpen; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::LeaveIfDbLocked"); - - if(iDbAccess == ECseDbLocked) - { - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) - { - - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetSchedulesByPluginL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseSchedulePlugInUIDCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aPluginUid ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get the SQL table indexes. - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo scheduleTypeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through the tables - while ( view.AtRow() ) - { - // Create new CCseSceduledProgram to be added to array - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - - // Fill created schedule with DB information - view.GetL(); - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - prog->SetScheduleType( view.ColInt32( scheduleTypeIndex ) ); - prog->SetPluginType( view.ColInt32( pluginTypeIndex ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |->1 - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1<-| Popping pointer to Col that we dont have here - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aArray.Append( prog ) ); - CleanupStack::Pop( prog ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<& aArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetSchedulesByPluginL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleTypeCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aType ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get the SQL table indexes. - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo scheduleTypeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through the tables - while ( view.AtRow() ) - { - // Create new CCseSceduledProgram to be added to array - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - - // Fill created schedule with DB information - view.GetL(); - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - prog->SetScheduleType( view.ColInt32( scheduleTypeIndex ) ); - prog->SetPluginType( view.ColInt32( pluginTypeIndex ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |-> 1 - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1 <-| Popping pointer to Col that we dont have here - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aArray.Append( prog ) ); - CleanupStack::Pop( prog ); - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<& aResultArray - ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetSchedulesByTimeframeL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - TBuf<100> startTimeBuf; - _LIT( KDateTimeFormat,"# %1%*D/%2%*M/%3%*Y %H:%T:%S#" ); - aBeginning.FormatL( startTimeBuf, KDateTimeFormat ); - TBuf<100> endTimeBuf; - aEnd.FormatL( endTimeBuf, KDateTimeFormat ); - - // Create SQL string to find all overlapping schedules from database between given - // timeframe. - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - sqlStatement.Append( KCseLess ); - sqlStatement.Append( endTimeBuf ); - sqlStatement.Append( KCseAnd ); - sqlStatement.Append( KCseScheduleEndTimeCol ); - sqlStatement.Append( KCseMore ); - sqlStatement.Append( startTimeBuf ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Move to the first row - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get colon indexes. - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through all found schedules. - while ( view.AtRow() ) - { - // Create new schedule to be added to array. - CCseScheduledProgram* schedule = CCseScheduledProgram::NewL(); - CleanupStack::PushL( schedule ); - view.GetL(); - - // Set schedule information. - schedule->SetDbIdentifier( view.ColUint32( keyIndex ) ); - schedule->SetName( view.ColDes8( nameIndex ) ); - schedule->SetStartTime( view.ColTime( startTimeIndex ) ); - schedule->SetEndTime( view.ColTime( endTimeIndex ) ); - schedule->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - schedule->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - - schedule->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - schedule->SetPluginType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( pluginTypeIndex ) ) ); - - TInt streamLen( 0 ); - streamLen = view.ColLength( applicationSpecificIndex ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |-> 1 - readStream.ReadL(buffPtr, streamLen); - readStream.Release(); - CleanupStack::PopAndDestroy( ); // 1 <-| Popping pointer to Col that we dont have here - TPtrC8 ptr8( appDataBuffer->Des() ); - schedule->SetApplicationDataL( *appDataBuffer ); - CleanupStack::PopAndDestroy( appDataBuffer ); - - aResultArray.AppendL( schedule ); - CleanupStack::Pop( schedule ); - - // Next shcedule... - view.NextL(); - } - CleanupStack::PopAndDestroy( &view ); // Closes view - CSELOGSTRING_HIGH_LEVEL("<<& aPlugins ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetPluginsL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseSchedulePlugInUIDCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get the SQL table indexes. - TDbColNo pluginUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - TInt32 currentPluginUid( 0 ); - TInt32 newPluginUid( 0 ); - - // Loop through the tables - while ( view.AtRow() ) - { - view.GetL(); - - // Get plugin Uid from row - newPluginUid = view.ColInt32( pluginUidIndex ); - - // If it is different that the current plugin uid add it to - // array and set new "current" uid. - if( newPluginUid != currentPluginUid ) - { - // Query results are sorted by plugin uid - // so if uid changes we can add it to array - // without fearing that we will have - // duplicates. - aPlugins.Append( newPluginUid ); - currentPluginUid = newPluginUid; - } - - view.NextL(); - } - - view.Close(); - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseScheduleDB::GetNextScheduleTimeByPluginL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Create SQL satring to get schedule occurence(s) that are - // going to happen next from database. - TTime nextScheduleTime( 0 ); - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleStateCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( ECseWaiting ); - sqlStatement.Append( KCseAnd ); - sqlStatement.Append( KCseSchedulePlugInUIDCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aPluginUid ); - sqlStatement.Append( KCseOrderBy ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next schedule - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Schedule found get its start time. - if ( view.AtRow() ) - { - view.GetL(); - nextScheduleTime = view.ColTime( startTimeIndex ); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<<& aNextScheduleArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseScheduleDB::GetSchedulesByTimeAndPluginL"); - LeaveIfDbLockedL(); - ResetCompactTimer(); - - // Gets program occurence(s) that are going to happen next - // from database - TBuf<100> startTimeBuf; - - _LIT( KDateTimeFormat,"# %1%*D/%2%*M/%3%*Y %H:%T:%S.%C#" ); - - aScheduleTime.FormatL( startTimeBuf, KDateTimeFormat ); - - // Create SQL string to get all schedules to be happen at given time - TBuf sqlStatement; - sqlStatement.Append( KCseSelectFromDb ); - sqlStatement.Append( KCseScheduleTable ); - sqlStatement.Append( KCseWhere ); - sqlStatement.Append( KCseScheduleStartTimeCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.Append( startTimeBuf ); - sqlStatement.Append( KCseAnd ); - sqlStatement.Append( KCseSchedulePlugInUIDCol ); - sqlStatement.Append( KCseEqual ); - sqlStatement.AppendNum( aPluginUid ); - - // Order table based on start time - RDbView view; - CleanupClosePushL( view ); - User::LeaveIfError( view.Prepare( iScheduleDb, - TDbQuery( sqlStatement ) ) ); - User::LeaveIfError( view.EvaluateAll() ); - - // Get the next reminder - view.FirstL(); - - CDbColSet* colSetOrder = view.ColSetL(); - CleanupStack::PushL( colSetOrder ); - - // Get column indexes - TDbColNo keyIndex = colSetOrder->ColNo( KCseScheduleDbKeyCol ); - TDbColNo nameIndex = colSetOrder->ColNo( KCseScheduleNameCol ); - TDbColNo startTimeIndex = colSetOrder->ColNo( KCseScheduleStartTimeCol ); - TDbColNo endTimeIndex = colSetOrder->ColNo( KCseScheduleEndTimeCol ); - TDbColNo applicationUidIdIndex = colSetOrder->ColNo( KCseScheduleApplicationUIDCol ); - TDbColNo plugInUidIndex = colSetOrder->ColNo( KCseSchedulePlugInUIDCol ); - TDbColNo typeIndex = colSetOrder->ColNo( KCseScheduleTypeCol ); - TDbColNo applicationSpecificIndex = colSetOrder->ColNo( KCseScheduleApplicationSpecificCol ); - TDbColNo pluginTypeIndex = colSetOrder->ColNo( KCseSchedulePluginTypeCol ); - - CleanupStack::PopAndDestroy( colSetOrder ); - - // Loop through all found schedules. - while ( view.AtRow() ) - { - // Create new schedule to be added to array - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - view.GetL(); - - // Copy information from DB to schedule. - prog->SetDbIdentifier( view.ColUint32( keyIndex ) ); - prog->SetName( view.ColDes8( nameIndex ) ); - prog->SetStartTime( view.ColTime( startTimeIndex ) ); - prog->SetEndTime( view.ColTime( endTimeIndex ) ); - prog->SetAppUid( view.ColInt32( applicationUidIdIndex ) ); - prog->SetPluginUid( view.ColInt32( plugInUidIndex ) ); - - prog->SetScheduleType( CCseScheduledProgram::TCseScheduleType( - view.ColInt32( typeIndex ) ) ); - prog->SetPluginType( view.ColInt32( pluginTypeIndex ) ); - TInt streamLen( view.ColLength( applicationSpecificIndex ) ); - - HBufC8* appDataBuffer = HBufC8::NewL( streamLen ); - CleanupStack::PushL( appDataBuffer ); - - TPtr8 buffPtr( appDataBuffer->Des() ); - RDbColReadStream readStream; - readStream.OpenLC( view, applicationSpecificIndex ); // |-> 1 - readStream.ReadL( buffPtr, streamLen ); - readStream.Release(); - CleanupStack::PopAndDestroy(); // 1 <-| - - prog->SetApplicationDataL( *appDataBuffer ); - - CleanupStack::PopAndDestroy( appDataBuffer ); - User::LeaveIfError( aNextScheduleArray.Append( prog ) ); - CleanupStack::Pop( prog ); - - // And next schedule... - view.NextL(); - } - - CleanupStack::PopAndDestroy( &view ); // Closes view - - CSELOGSTRING_HIGH_LEVEL("<< -#include "CCseSchedulerThreadPacket.h" -#include // Observer for informing engine -#include -#include "CseDebug.h" // Debug macros -#include "CCseSemaphoreController.h" - -_LIT( KCseUniThreadName, "CseThread" ); -_LIT( KCseLine, "-" ); - -// ============================ MEMBER FUNCTIONS =============================== - -// --------------------------------------------------------------------------- -// CCseSchedulerTimer::CCseSchedulerTimer() -// -// --------------------------------------------------------------------------- -CCseSchedulerLandLord::CCseSchedulerLandLord( MCseScheduleObserver* aObserver ) : - CActive( CActive::EPriorityStandard ), - iThreadRunning( EFalse ), - iTakedownRequested( EFalse ) - - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerLandLord::CCseSchedulerLandLord"); - - // C++ default constructor - iObserver = aObserver; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::~CCseSchedulerLandLord"); - - Cancel(); - - delete iShutdownCompleteMonitor; - iShutdownCompleteMonitor = NULL; - delete iActiveSchedulerWait; - iActiveSchedulerWait = NULL; - iObserver = NULL; - delete iThreadPacket; - iThreadPacket = NULL; - delete iThreadName; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::NewL"); - - // Symbian C++ constructor - CCseSchedulerLandLord* self = new ( ELeave ) CCseSchedulerLandLord( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::ConstructL"); - - iActiveSchedulerWait = new (ELeave) CActiveSchedulerWait; - CActiveScheduler::Add( this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::DoCancel" ); - - if ( iThreadRunning ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerLandLord::DoCancel Canceling thread" ); - - // Signal thread to die away! - iPluginShutdownSemaphore.Signal(); - - iThreadRunning = EFalse; - - // Complete schedule with KErrAbort - TRAP_IGNORE( iObserver->ScheduleCompletedL( - iThreadPacket->Schedule( )->DbIdentifier(), KErrAbort ) ); - } - - CSELOGSTRING_HIGH_LEVEL( "<<>>CCseSchedulerLandLord::RunL"); - - iThreadRunning = EFalse; - - // In case we have not cancelled operation, complete schedule with result code. - // If we have cancelled it, we're not interested about the result as the - // schedule has already been removed from the DB - if( !iTakedownRequested ) - { - iObserver->ScheduleCompletedL( iThreadPacket->Schedule( )->DbIdentifier(), - iThreadPacket->ResultCode( ) ); - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::SetSchedule"); - - delete iThreadPacket; - iThreadPacket = NULL; - iThreadPacket = CCseSchedulerThreadPacket::NewL(); - iThreadPacket->SetScheduleL( aData ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::Schedule"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::RunError"); - // ATM there isn't leaving code in RunL so we just cancel timer if it is active. - Cancel(); - // Return KErrNone to avoid crash. - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerLandLord::GenerateThreadName -// Generates "unique" name for thread -// ----------------------------------------------------------------------------- -// -void CCseSchedulerLandLord::GenerateThreadNameL( ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerLandLord::GenerateThreadName"); - - delete iThreadName; - iThreadName = NULL; - iThreadName = KCseUniThreadName().AllocL(); - iThreadName = iThreadName->ReAllocL( - iThreadName->Size() + // Length of original name. - sizeof( TUint32 ) * 2 + // Space for Plugin Uid and DbIdentifier - 2 ); // Two "-" as a separator between - // Uid and identifier - - // Separator - iThreadName->Des( ).Append( KCseLine ); - - // Plugin uid - iThreadName->Des( ).AppendNum( iThreadPacket->Schedule()->PluginUid() ); - - // Separator - iThreadName->Des( ).Append( KCseLine ); - - // Finally schedule identifier to make thread name unique - iThreadName->Des( ).AppendNum( iThreadPacket->Schedule()->DbIdentifier() ); - - CSELOGSTRING_HIGH_LEVEL("<<SetShutdownSemaphore( iPluginShutdownSemaphore ); - - iPluginShutdownCompleteSemaphore.CreateLocal( 0 ); - iThreadPacket->SetShutdownCompleteSemaphore( iPluginShutdownCompleteSemaphore ); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerLandLord::RunPluginL -// From CActive, called when RunL leaves. -// ----------------------------------------------------------------------------- -// -void CCseSchedulerLandLord::RunPluginL( ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerLandLord::RunPluginL"); - TInt error( KErrNone ); - - // Create semaphores for shutdown signalling - GenerateSemaphoresL(); - - // First we create unique thread name - GenerateThreadNameL( ); - - // Create thread where to run schedule - error = iThread.Create( *iThreadName, - CCseSchedulerPluginStarter::StartThread, - KDefaultStackSize, - NULL, // uses caller thread's heap - iThreadPacket, // Schedule - EOwnerThread ); - - if( error == KErrNone ) - { - // Creation succesfull, start running it and logon on it. - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerLandLord::RunPluginL - Thread creation succesfull"); - iThread.Resume(); - iThread.Logon( iStatus ); - SetActive(); - iThreadRunning = ETrue; - } - else - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerLandLord::RunPluginL - Thread creation FAILED: %d", - error); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::ActiveWait()"); - if (aStart) - { - if(!iActiveSchedulerWait->IsStarted()) - { - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerLandLord::ActiveWait - Wait start"); - iActiveSchedulerWait->Start(); - } - } - else - { - if(iActiveSchedulerWait->IsStarted()) - { - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerLandLord::ActiveWait - Wait stop"); - iActiveSchedulerWait->AsyncStop(); - } - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::ShutdownPlugin()"); - - ActiveWait( EFalse ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::ClearL"); - - if( iThreadRunning ) - { - // Flag the takedown. We're cancelling the operation, so we have - // no interest about result code as the schedule has already - // been removed from the DB. - iTakedownRequested = ETrue; - - // Signal thread to die away! - iPluginShutdownSemaphore.Signal(); - - if( !iShutdownCompleteMonitor ) - { - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerLandLord::ClearL - New semaphore monitor" ); - iShutdownCompleteMonitor = CCseSemaphoreController::NewL( iPluginShutdownCompleteSemaphore, *this ); - } - - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerLandLord::ClearL - StartMonitor" ); - iShutdownCompleteMonitor->Start(); - - ActiveWait( ETrue ); - - iThreadRunning = EFalse; - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerLandLord::IsWorking()"); - - CSELOGSTRING2_HIGH_LEVEL("<< -#include "CCseSchedulerTimer.h" -#include "CCseSchedulerServerEngine.h" -#include "CCseSchedulerThreadPacket.h" - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerPluginControllerBase::CCseSchedulerMultiPluginController -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CCseSchedulerMultiPluginController::CCseSchedulerMultiPluginController( - CCseSchedulerServerEngine& aEngine, - TInt32 aPluginUid ) : - CCseSchedulerPluginControllerBase( aEngine, aPluginUid ) - - { - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerMultiPluginController::CCseSchedulerMultiPluginController"); - - CSELOGSTRING_HIGH_LEVEL( - "<<>>CCseSchedulerMultiPluginController::NewL"); - - CCseSchedulerMultiPluginController* self = - new( ELeave ) CCseSchedulerMultiPluginController( aEngine, aPluginUid ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::ConstructL"); - - CCseSchedulerPluginControllerBase::ConstructL(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::~CCseSchedulerMultiPluginController"); - - iLandLords.ResetAndDestroy( ); - iLandLords.Close(); - - CSELOGSTRING_HIGH_LEVEL( - "<<>>CCseSchedulerMultiPluginController::RunPluginsL"); - TBool scheduleAlreadyRunning( EFalse ); - - if(iScheduleArray.Count() >0 ) - { - // Kick those schedules running that aren't already running - for( TInt i = 0; i < iScheduleArray.Count(); i++) - { - for ( TInt ii = 0; ii < iLandLords.Count(); ii++ ) - { - if( iScheduleArray[i]->DbIdentifier() == - iLandLords[ii]->ThreadPacket()->Schedule()->DbIdentifier() ) - { - scheduleAlreadyRunning = ETrue; - } - } - if( !scheduleAlreadyRunning ) - { - if( iEngine.IsAllowedToRun( iScheduleArray[i]->DbIdentifier() ) ) - { - // Create new LandLord for each schedule to be run - CCseSchedulerLandLord* landLord = CCseSchedulerLandLord::NewL( this ); - - CleanupStack::PushL( landLord ); - - // Set schedule for LandLord - landLord->SetScheduleL( *iScheduleArray[i] ); - - // Increase run count - iEngine.IncreaseScheduleRunCountL( iScheduleArray[0]->DbIdentifier() ); - - // Order the LandLord to run plugin - landLord->RunPluginL(); - - CleanupStack::Pop( landLord ); - - // Add created landLord to array. Destroyed later when landLord - // is not needed anymore. - iLandLords.AppendL( landLord ); - - CleanupStack::Pop( landLord ); - } - else - { - // Schedule cannot be run anymore due to security reasons - // Signal engine to remove schedule from DB - iEngine.ScheduleNotValid( iScheduleArray[i]->DbIdentifier() ); - - // Remove schedule own list - delete iScheduleArray[i]; - iScheduleArray.Remove( i ); - i--; - } - } - } - if( iLandLords.Count() == 0 ) - { - // We've gone through all our schedules and still no LandLords. - // We need to request new schedules. - iEngine.RequestReschedule(); - } - } - else - { - // No schedules...!?!? REEEEESCHEDULE!!! - iEngine.RequestReschedule(); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::ScheduleCompletedL"); - - if ( aCompletitionCode == KErrNone ) - { - ScheduleCompletedSuccesfullyL( aDbIdentifier ); - } - else - { - HandleScheduleErrorL( aDbIdentifier, aCompletitionCode ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::ScheduleCompletedSuccesfullyL"); - - // Remove schedule from list - for ( TInt i = 0; i < iScheduleArray.Count(); i ++) - { - if( iScheduleArray[i]->DbIdentifier() == aDbIdentifier ) - { - delete iScheduleArray[i]; - iScheduleArray.Remove( i ); - } - } - - // Notify engine about completition. - iEngine.ScheduleCompletedSuccesfullyL( aDbIdentifier ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::HandleScheduleError"); - - // Here we could try to handle plugin errors. Problem is that scheduler doesn't - // know anything about schedule it is running and so there cannot be tailored - // error handling for each plugin. In the end, we just complete schedule - // to engine with error code (ends up removing schedule from DB). - - // Remove schedule from list - for ( TInt i = 0; i < iScheduleArray.Count(); i ++) - { - if( iScheduleArray[i]->DbIdentifier() == aDbIdentifier ) - { - delete iScheduleArray[i]; - iScheduleArray.Remove( i ); - break; - } - } - - iEngine.ScheduleCompletedWithErrorL( aDbIdentifier, aCompletitionCode ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::DoCleanUp"); - TBool scheduleFound( EFalse ); - - // Check all LandLords. If we found that there is no schedules related to - // one we destroy it. - for (TInt i = iLandLords.Count(); i > 0; i--) - { - for ( TInt ii = 0; ii < iScheduleArray.Count(); ii++ ) - { - // Compare LandLords DbIdentifier with the ones in schedules - if( iLandLords[i-1]->ThreadPacket()->Schedule()->DbIdentifier() == - iScheduleArray[ii]->DbIdentifier() ) - { - scheduleFound = ETrue; - break; - } - } - // Remove LandLord if there is no schedule for it. - if( !scheduleFound ) - { - delete iLandLords[i-1]; - iLandLords.Remove(i-1); - } - scheduleFound = EFalse; - } - - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerMultiPluginController::ClearControllerL"); - for( TInt i = 0 ; i < iLandLords.Count() ; i++ ) - { - iLandLords[i]->ClearL(); - } - CSELOGSTRING_HIGH_LEVEL("<<IsWorking() ) - { - retVal = ETrue ; - break; - } - } - return retVal; - } - -// End of file. diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/src/CCseSchedulerPluginControllerBase.cpp --- a/videoscheduler/SchedulerServer/src/CCseSchedulerPluginControllerBase.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,328 +0,0 @@ -/* -* Copyright (c) 2006 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: Base class for plugin controllers* -*/ - - - - - -// INCLUDE FILES -#include "CCseSchedulerPluginControllerBase.h" -#include "CseDebug.h" // Debug macros -#include -#include "CCseSchedulerTimer.h" -#include "CCseSchedulerServerEngine.h" - - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerPluginControllerBase::CCseSchedulerPluginControllerBase -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CCseSchedulerPluginControllerBase::CCseSchedulerPluginControllerBase( MCsePluginControllerObserver& aEngine, - TInt32 aPluginUid ) : - iEngine( aEngine ), - iPluginUid( aPluginUid ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginControllerBase::CCseSchedulerPluginControllerBase"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::NewL"); - - CCseSchedulerPluginControllerBase* self = new( ELeave ) CCseSchedulerPluginControllerBase( aEngine, aPluginUid ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::ConstructL"); - - iTimer = CCseSchedulerTimer::NewL( this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::~CCseSchedulerPluginControllerBase"); - - delete iTimer; - iScheduleArray.ResetAndDestroy(); - - CSELOGSTRING_HIGH_LEVEL("<<& aScheduleArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginControllerBase::SetSchedules"); - - // The aScheduleArray parameter contains schedules which are either before - // or at the same time as the existing ones in the iScheduleArray. - // Just destroy the old ones and replace with new ones. - // Also cancel the timer because the schedule to run may be different - - iScheduleArray.ResetAndDestroy(); - iTimer->Cancel(); - - // Go through all given schedules and copy them our array - for( TInt i = 0; i < aScheduleArray.Count(); i++) - { - CCseScheduledProgram* schedule = - CCseScheduledProgram::NewL(*aScheduleArray[i] ); - CleanupStack::PushL( schedule ); - - iScheduleArray.AppendL( schedule ); - - CleanupStack::Pop( schedule ); - } - - // If we have schedules, set the timer - if (iScheduleArray.Count() > 0) - { - // All the schedules have same time - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginControllerBase::SetSchedules"); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerPluginControllerBase::GetPluginUid -// -// ----------------------------------------------------------------------------- -// -TInt32 CCseSchedulerPluginControllerBase::PluginUid( ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginControllerBase::PluginUid"); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::RunPluginsL"); - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerPluginControllerBase::RunPluginsL - Base class, do nothing"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::IsObsolete"); - - TBool ret( EFalse ); - - // If we have no schedules in array we declare ourselves as "obsolete". - if( iScheduleArray.Count() == 0 ) - { - ret = ETrue; - } - - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::ScheduleCompleted"); - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerUniPluginController::ScheduledEventCompleted - WTF LEIK BSAE KLASS"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginControllerBase::TimerErrorL"); - - if ( aError == KErrAbort ) - { - // System time changed. Make sanity check and start timer again. - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerPluginControllerBase::TimerErrorL, system time has changed"); - if ( iScheduleArray.Count() > 0 ) - { - TTime now; - now.UniversalTime(); - // Time still in the future - if ( now < iScheduleArray[0]->StartTime() ) - { - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - else - { - RunPluginsL(); - } - } - return; - } - - if ( aError == KErrUnderflow ) - { - // Scheduled time is in the past, pass it to notifier. It should decide what to do - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerPluginControllerBase::TimerErrorL, scheduled time is in the past"); - RunPluginsL(); - return; - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::DoCleanUp"); - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerUniPluginController::DoCleanUp - Base class"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::SetToBeCleared"); - - iToBeCleared = aToBeCleared; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::ClearControllerL"); - - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerUniPluginController::ClearControllerL - Baseclass, nothing here"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::IsToBeCleared"); - - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::IsControllerActive"); - - CSELOGSTRING2_HIGH_LEVEL("<< // Represent one schedule in database -#include -#include "CCseSchedulerThreadPacket.h" -#include "CCseSemaphoreController.h" - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerPluginStarter::CCseSchedulerPluginStarter -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CCseSchedulerPluginStarter::CCseSchedulerPluginStarter ( CCseSchedulerThreadPacket* aThreadPacket ) : - iThreadPacket( aThreadPacket ), - iPluginRdyToTakedown( EFalse ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginStarter::CCseSchedulerPluginStarter"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::NewL"); - - CCseSchedulerPluginStarter* self = new( ELeave ) CCseSchedulerPluginStarter( aThreadPacket ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::ConstructL"); - - iCompletitionBreaker = CIdle::NewL( CActive::EPriorityLow ); - // Start completition breaker. This time we do not inform about completition of - // plugin but we break call chain and start running plugin from RunL - iCompletitionBreaker->Start(TCallBack( PluginCompleteCallback, this )); - - iSemaphoreMonitor = CCseSemaphoreController::NewL( iThreadPacket->ShutdownSemaphore(), - *this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::~CCseSchedulerPluginStarter"); - - delete iCompletitionBreaker; - delete iPlugin; - iPlugin = NULL; - REComSession::FinalClose(); - - delete iSemaphoreMonitor; - iSemaphoreMonitor = NULL; - - // We DO NOT destroy thread packet, we just null the pointer. - // Information is still needed on other side after thread dies - iThreadPacket = NULL; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::RunPlugin"); - - TInt err( KErrNone ); - - //create cleanupstack - CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack - if (!cleanup) - { - err = KErrNoMemory; - } - if (!err) - { - TRAP(err, DoStartThreadL( aParam )); - } - delete cleanup; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::DoStartThreadL"); - - CCseSchedulerThreadPacket* threadPacket = static_cast(aParam); - - CActiveScheduler* scheduler = new ( ELeave ) CActiveScheduler; - - // If schedule doesn't exist there is really nothing we can do - if( scheduler ) - { - CleanupStack::PushL( scheduler ); // |->1 - CActiveScheduler::Install( scheduler ); - - // Create the starter - CCseSchedulerPluginStarter* starter = CCseSchedulerPluginStarter::NewL( threadPacket ); - CleanupStack::PushL(starter); // |->2 - - // Ready to run - CActiveScheduler::Start(); - - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerPluginStarter::DoStartThreadL - Out from CActiveScheduler::Start!"); - - // Cleanup the server and scheduler - CleanupStack::PopAndDestroy( starter ); // 2<-| - CleanupStack::PopAndDestroy( scheduler ); // 1<-| - - threadPacket->ShutdownCompleteSemaphore().Signal(); - } - else - { - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerPluginStarter::DoStartThreadL - No schedule available, GTFO"); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::RunPluginL"); - - // Create plugin - TUid pluginUid = TUid::Uid( iThreadPacket->Schedule()->PluginUid() ); - - iPlugin = CCseSchedulerPluginIF::NewL( pluginUid ); - - iPlugin->RunTaskL( *iThreadPacket->Schedule(), this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::PluginCompleted - Code: %d", aCompletitionCode); - - // Start taking down The Thread - // Start Completition breaker if not already active to break call chain. - // Set plugin completition value - iThreadPacket->SetResultCode( aCompletitionCode ); - - iPluginRdyToTakedown = ETrue; - - if( !iCompletitionBreaker->IsActive() ) - { - iCompletitionBreaker->Start(TCallBack( PluginCompleteCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerPluginStarter::PluginCompleted:Breaker already running!"); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>PluginCompleteCallback::ScheduleCompleteCallback"); - CSELOGSTRING_HIGH_LEVEL("<<( aPtr )->HandlePluginCompleteCallback(); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerUserInformer::HandlePluginCompleteCallback -// ----------------------------------------------------------------------------- -// -TInt CCseSchedulerPluginStarter::HandlePluginCompleteCallback() - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerPluginStarter::HandleScheduleCompleteCallback "); - - if( iPluginRdyToTakedown ) - { - // First clear flag - iPluginRdyToTakedown = EFalse; - // Takedown thread - CActiveScheduler::Stop(); - } - else - { - // First start monitor - iSemaphoreMonitor->Start(); - // Plugin ready to be run - TRAPD( err, RunPluginL() ); - if ( err != KErrNone ) - { - // Run plugin leaved for some reason. Set error code and get outta here! - iThreadPacket->SetResultCode( err ); - iPluginRdyToTakedown = ETrue; - iCompletitionBreaker->Start(TCallBack( PluginCompleteCallback, this )); - } - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerPluginStarter::SemaphoreSignalled"); - - delete iPlugin; - iPlugin = NULL; - - CActiveScheduler::Stop(); - - CSELOGSTRING_HIGH_LEVEL("<< // Common defines for client and server -#include "CseSchedulerServer.pan" // Server panic codes -#include "CseDebug.h" // Debug macros -#include -#include -#include -#include - - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// Platform security. Custom check is applied to all IPCs. -static const int KRangeCount( 1 ); - -static const TInt SecurityRanges[KRangeCount] = - { - 0, // Range is from 0 to KMaxTInt - }; - -static const TUint8 SecurityRangesPolicy[KRangeCount] = - { - CPolicyServer::ECustomCheck - }; - -static const CPolicyServer::TPolicy Policy = - { - CPolicyServer::EAlwaysPass, - KRangeCount, - SecurityRanges, - SecurityRangesPolicy, - NULL, - }; - - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -const TInt KDbStartTimeout = 2000000; - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerServer::CCseSchedulerServer() -// C++ constructor -// ----------------------------------------------------------------------------- -// -CCseSchedulerServer::CCseSchedulerServer() - : CPolicyServer( EPriorityRealTimeServer, Policy, ESharableSessions ), - iContainerIx( NULL ), - iObjectCon( NULL ), - iSessionCount( 0 ), - iSchedulerEngine( NULL ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServer::CCseSchedulerServer"); - __DECLARE_NAME( _S( "CCseSchedulerServer" ) ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::NewLC"); - - CCseSchedulerServer* self = new ( ELeave ) CCseSchedulerServer; - CleanupStack::PushL( self ); - - self->ConstructL( ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::ConstructL"); - iContainerIx = CObjectConIx::NewL(); - iObjectCon = iContainerIx->CreateL(); - StartL( KCseSchedulerServerName ); - GetEngineObjectL(); - iStarterBreaker = CPeriodic::NewL( CActive::EPriorityStandard ); - - // break call chain - if( !iStarterBreaker->IsActive() ) - { - // Give client 2 secs to make server session before we check - // if server is needed or not. - iStarterBreaker->Start( KDbStartTimeout, - KDbStartTimeout, - TCallBack( StarterCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServer::ConstructL - Breaker already active"); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::~CCseSchedulerServer"); - DeleteSchedulerEngine(); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::ThreadFunction"); - CTrapCleanup* cleanupStack = CTrapCleanup::New(); - if ( !cleanupStack ) - { - PanicServer( ECseCreateTrapCleanup ); - } - - TRAPD( err, ThreadFunctionL( ) ); - if ( err ) - { - PanicServer( ECseSrvCreateServer ); - } - - delete cleanupStack; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::ThreadFunctionL"); - - // Construct active scheduler - CActiveScheduler* activeScheduler = new ( ELeave ) CActiveScheduler; - CleanupStack::PushL( activeScheduler ); // |-> 1 - - // Install active scheduler. - // We don't need to check whether an active scheduler is already installed - // as this is a new thread, so there won't be one - CActiveScheduler::Install( activeScheduler ); - - // Construct our server, pushed cleanup stack and leaved there - CCseSchedulerServer* server = CCseSchedulerServer::NewLC( ); // |-> 2 - - // Signal server is up - RProcess::Rendezvous( KErrNone ); - - // Start handling requests - CActiveScheduler::Start(); - - CleanupStack::PopAndDestroy( server ); // 2<-| - CleanupStack::PopAndDestroy( activeScheduler ); // 1<-| - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::PanicServer"); - _LIT( KSchedulerServer, "SchedulerServer" ); - User::Panic( KSchedulerServer, aPanic ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::GetEngineObjectL"); - - if ( iObjectCon->Count() == 0 ) - { - // Create scheduler engine - iSchedulerEngine = CCseSchedulerServerEngine::NewL( *this ); - - // Add our engine to container - iObjectCon->AddL( iSchedulerEngine ); - } - else - { - // default implementation return KErrNone. - if ( KErrNone != iSchedulerEngine->Open() ) - { - User::Leave( KErrGeneral ); - } - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::Inc"); - if ( iSessionCount!=KErrNotFound ) - { - iSessionCount++; - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::Dec"); - iSessionCount--; - - if ( iSessionCount<=0 ) - { - StopServer(); - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::DeleteSchedulerEngine"); - - if ( iContainerIx ) - { - iSchedulerEngine->Close(); - iContainerIx->Remove( iObjectCon ); - delete iContainerIx; - iContainerIx = NULL; - iSchedulerEngine = NULL; - } - - if( iStarterBreaker->IsActive() ) - { - iStarterBreaker->Cancel(); - } - delete iStarterBreaker; - iStarterBreaker = NULL; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::NewSessionL"); - - // Check version is ok - TVersion v( KCseServMajorVersionNumber, - KCseServMinorVersionNumber, - KCseServBuildVersionNumber ); - - if ( !User::QueryVersionSupported( v, aVersion ) ) - { - User::Leave( KErrNotSupported ); - } - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::StopServer"); - TBool schedulerActive( iSchedulerEngine->IsSchedulerActive() ); - CSELOGSTRING2_HIGH_LEVEL("CCseSchedulerServer::StopServer - Session count: %d", iSessionCount); - if ( (iSessionCount<=0) && (schedulerActive == EFalse)) - { - CSELOGSTRING_HIGH_LEVEL("CCseSchedulerServer::StopServer - Call ActiveScheduler::Stop()"); - CActiveScheduler::Stop(); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::StartThread"); -#if _DEBUG - __UHEAP_MARK; -#endif - - // Check server not already started - TFindServer findCountServer( KCseSchedulerServerName ); - TFullName name; - if ( findCountServer.Next( name ) == KErrNone ) - { - // Found server already - RProcess::Rendezvous( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::CustomSecurityCheckL"); - TCustomResult retVal ( EFail ); - - // Check the messagge function range - if ( aMsg.Function() > ECseRequestBase && - aMsg.Function() < ECseRequestLast ) - { - - // Check if the client has required capabilities - // From .mmp-file capablity NetworkControl - if( // From .mmp-file following are CAP_SERVER capabilities - ! aMsg.HasCapability(ECapabilityNetworkServices ) || - ! aMsg.HasCapability(ECapabilityLocalServices ) || - ! aMsg.HasCapability(ECapabilityLocation ) || - ! aMsg.HasCapability(ECapabilityReadUserData ) || - ! aMsg.HasCapability(ECapabilityWriteUserData ) || - ! aMsg.HasCapability(ECapabilityReadDeviceData ) || - ! aMsg.HasCapability(ECapabilityWriteDeviceData ) || - ! aMsg.HasCapability(ECapabilityUserEnvironment ) || - ! aMsg.HasCapability(ECapabilitySwEvent ) ) - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerServer::CustomSecurityCheckL() No capability for message %d!!!", - aMsg.Function() ); - } - else - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerServer::CustomSecurityCheckL() Message %d inside range and capabilities ok", - aMsg.Function() ); - retVal = EPass; - } - } - else - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerServer::CustomSecurityCheckL() Message %d outside known range!!!", - aMsg.Function() ); - } - - if( retVal == EPass ) - { - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::StarterCallback"); - TBool retVal( EFalse); - retVal = static_cast( aPtr )->HandleStarterCallback(); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServer::HandleStarterCallback "); - - // We dont want to use periodic anymore, so we cancel it. We just wanted to - // make call here 2 secs after server has been created. - iStarterBreaker->Cancel(); - - // Check if server can be stopped. - iSchedulerEngine->RequestReschedule(); - - CSELOGSTRING_HIGH_LEVEL("<< -#include -#include -#include "CCseSchedulerServerEngine.h" // Common methods for server -#include // Common defines for client and server -#include // Represent one schedule in database -#include "CseDebug.h" // Debug macros -#include "CCseScheduleDB.h" // Schedule database -#include "CCseSchedulerTimer.h" // Schedule timer for determining schedule times -#include // Scheduler plugin interface -#include "CCseSchedulerUniPluginController.h" -#include "CCseSchedulerMultiPluginController.h" -#include "CCseSchedulerServer.h" - - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerServerEngine::CCseSchedulerServerEngine -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CCseSchedulerServerEngine::CCseSchedulerServerEngine( CCseSchedulerServer& aServer ) : - iServer( aServer ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::CCseSchedulerServerEngine"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::NewL"); - - CCseSchedulerServerEngine* self = new( ELeave ) CCseSchedulerServerEngine( aServer ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::ConstructL"); - - iDb = CCseScheduleDB::NewL(); - iCompletitionBreaker = CIdle::NewL( CActive::EPriorityLow ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::~CCseSchedulerServerEngine"); - - delete iDb; - - iPluginControllerArray.ResetAndDestroy(); - iPluginControllerArray.Close(); - delete iCompletitionBreaker; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GeneralService"); - - switch( aMessage.Function() ) - { - case ECseAddSchedule: - { - AddScheduleL( aMessage ); - break; - } - case ECseRemoveSchedule: - { - RemoveScheduleL( aMessage ); - break; - } - case ECseGetSchedules: - { - GetSchedulesL( aMessage ); - break; - } - case ECseGetSchedule: - { - GetScheduleL( aMessage ); - break; - } - case ECseGetScheduleLength: - { - GetScheduleLengthL( aMessage ); - break; - } - case ECseGetSchedulesByAppUid: - { - GetSchedulesByAppUidL( aMessage ); - break; - } - case ECseGetScheduleArrayLengthByAppUid: - { - GetScheduleArrayLengthByAppUidL( aMessage ); - break; - } - case ECseGetOverlappingSchedulesLength: - { - GetOverlappingSchedulesLengthL( aMessage ); - break; - } - case ECseGetOverlappingSchedules: - { - GetOverlappingSchedulesL( aMessage ); - break; - } - case ECseGetScheduleArrayLengthByPluginUid: - { - GetScheduleArrayLengthByPluginUidL( aMessage ); - break; - } - case ECseGetSchedulesByPluginUid: - { - GetSchedulesByPluginUidL( aMessage ); - break; - } - case ECseGetScheduleArrayLengthByType: - { - GetScheduleArrayLengthByTypeL( aMessage ); - break; - } - case ECseGetSchedulesByType: - { - GetSchedulesByTypeL( aMessage ); - break; - } - case ECseGetScheduleArrayLengthByTimeframe: - { - GetScheduleArrayLengthByTimeframeL( aMessage ); - break; - } - case ECseGetSchedulesByTimeframe: - { - GetSchedulesByTimeframeL( aMessage ); - break; - } - - default: - { - aMessage.Complete( KErrNotSupported ); - break; - } - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::PanicClient"); - - // Panic the client on server side - _LIT( KTxtClientFault, "CseSchedulerServer" ); - aMessage.Panic( KTxtClientFault, aPanic ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::AddScheduleL"); - TInt ret( KErrNone ); - TBuf8<4> id; - - // Initialize buffers... - CCseScheduledProgram* schedule = CCseScheduledProgram::NewL(); - CleanupStack::PushL( schedule ); - HBufC8* msg = HBufC8::NewL( aMessage.GetDesLengthL( 0 ) ); - CleanupStack::PushL( msg ); - TPtr8 ptr( msg->Des() ); - - // Read schedule as a stream format to buffer - aMessage.ReadL( 0, ptr, 0 ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( ptr ); - - // Change stream formatted schedule to "CseScheduledProgram"-format - schedule->InternalizeL( readStream ); - - CleanupStack::PopAndDestroy( &readStream ); - - // Add it to DB - iDb->AddScheduleL( *schedule ); - - // Make the completition value - id.FillZ(); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( id ); - writeStream.WriteUint32L( schedule->DbIdentifier() ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - aMessage.WriteL( 1, id, 0 ); - - RescheduleByPluginL( schedule->PluginUid() ); - - CleanupStack::PopAndDestroy( msg ); - CleanupStack::PopAndDestroy( schedule ); - - aMessage.Complete( ret ); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::RemoveScheduleL"); - - TUint32 dbIdentifier( 0 ); - TBuf8<4> idBuff; - TInt32 pluginUid( 0 ); - - idBuff.FillZ(); - - // Read db identifier from aMessager - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - dbIdentifier = readStream.ReadUint32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Remove schedule - // First check the plugin UID of removed schedule - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - iDb->GetScheduleByDbIdentifierL( dbIdentifier, prog ); - pluginUid = prog->PluginUid( ); - // Now remove it from DB - iDb->RemoveScheduleL( dbIdentifier ); - RescheduleByPluginL( pluginUid ); - - // Use completition callback to remove those controllers that aren't needed anymore - if( !iCompletitionBreaker->IsActive() ) - { - iCompletitionBreaker->Start(TCallBack( CompletitionCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::ScheduleCompletedSuccesfully - Breaker already active"); - } - - CleanupStack::PopAndDestroy( prog ); - aMessage.Complete( KErrNone ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleL"); - TUint32 dbIdentifier( 0 ); - TBuf8<4> idBuff; - - idBuff.FillZ(); - - // Read db identifier from aMessage - TInt err( aMessage.Read( 0, idBuff ) ); - - if ( err == KErrNone ) - { - // Create new db identifier to be passed to client - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - dbIdentifier = readStream.ReadUint32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedule - iDb->GetScheduleByDbIdentifierL( dbIdentifier, prog ); - - TInt length( prog->ExternalizeLength() ); - - // Externalize schedule to stream format - HBufC8* retBuff = HBufC8::NewL( length ); - CleanupStack::PushL( retBuff ); - TPtr8 retPtr( retBuff->Des() ); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retPtr ); - prog->ExternalizeL( writeStream ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retPtr ) ); - CleanupStack::PopAndDestroy( retBuff ); - CleanupStack::PopAndDestroy( prog ); - } - - aMessage.Complete( err ); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleLengthL"); - TUint32 dbIdentifier( 0 ); - TBuf8<4> idBuff; - TBuf8<4> lenBuff; - TInt length( 0 ); - CCseScheduledProgram* schedule = CCseScheduledProgram::NewL(); - CleanupStack::PushL( schedule ); - idBuff.FillZ(); - - // Read db identifier from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - dbIdentifier = readStream.ReadUint32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedule - iDb->GetScheduleByDbIdentifierL( dbIdentifier, schedule ); - - // Get schedule length - length = schedule->ExternalizeLength(); - - lenBuff.FillZ(); - - // Write length in stream so we can pass it to client - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( lenBuff ); - writeStream.WriteInt32L( length ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, lenBuff ) ); - - CleanupStack::PopAndDestroy( schedule ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleArrayLengthByAppUidL"); - TInt32 appUid( 0 ); - TBuf8<4> idBuff; - TBuf8<4> lenBuff; - TInt length( 0 ); - idBuff.FillZ(); - - // Read application uid from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - appUid = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - iDb->GetApplicationSchedulesL( appUid, progArray ); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length = length + progArray[i]->ExternalizeLength(); - } - CleanupStack::PopAndDestroy( &progArray ); // closes progArray - - lenBuff.FillZ(); - - // Change length value to stream so that we can send it back to client. - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( lenBuff ); - writeStream.WriteInt32L( length ); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, lenBuff ) ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetSchedulesByAppUidL"); - TInt32 appUid( 0 ); - TBuf8<4> idBuff; - idBuff.FillZ(); - TInt32 numberOfElems( 0 ); - TInt length( 0 ); - - // Read application UID from aMessage - TInt err( aMessage.Read( 0, idBuff ) ); - - if ( err == KErrNone ) - { - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - appUid = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - iDb->GetApplicationSchedulesL( appUid, progArray ); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length += progArray[i]->ExternalizeLength(); - } - - // Allocate write stream - HBufC8* retBuff = HBufC8::NewL( length ); - CleanupStack::PushL( retBuff ); - TPtr8 retPtr( retBuff->Des() ); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retPtr ); - - // Fill stream - // Write number elems - numberOfElems = progArray.Count(); - writeStream.WriteInt32L( numberOfElems ); - // Add elems one by one - for ( TInt i = 0; i < progArray.Count(); i++ ) - { - progArray[i]->ExternalizeL( writeStream ); - } - writeStream.CommitL(); - - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retPtr ) ); - - CleanupStack::PopAndDestroy( retBuff ); - CleanupStack::PopAndDestroy( &progArray ); - } - - aMessage.Complete( err ); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetSchedulesL"); - aMessage.Complete( KErrNotSupported ); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerServerEngine::GetOverlappingSchedulesLengthL -// -// ----------------------------------------------------------------------------- -// -void CCseSchedulerServerEngine::GetOverlappingSchedulesLengthL( - const RMessage2& aMessage ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::GetOverlappingSchedulesLengthL"); - TInt32 scheduleType( 0 ); - TBuf8<20> idBuff; - TBuf8 retBuf; // contains length - - TUint32 length( 0 ); - - idBuff.FillZ(); - - // Read schedule type from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - scheduleType = readStream.ReadInt32L(); - - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Read start time from the aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - TInt64 time( 0 ); - time = (TInt64) lower; - TInt64 longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 startTime = time; - - // Read end time from the aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - time = (TInt64) lower; - longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 endTime = time; - - CleanupStack::PopAndDestroy( &readStream ); - - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - - // Get overlapping schedules - iDb->GetOverlappingSchedulesL( scheduleType, startTime, endTime, schedules ); - - // Count length one by one - for ( TInt i = 0; i < schedules.Count(); i++ ) - { - length += schedules[i]->ExternalizeLength(); - } - - CleanupStack::PopAndDestroy( &schedules ); - - retBuf.FillZ(); - - - // Write length to stream so we can pass it to client - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retBuf ); - writeStream.WriteInt32L( length ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retBuf ) ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetOverlappingSchedulesL"); - TInt32 scheduleType( 0 ); - TBuf8<20> idBuff; - - idBuff.FillZ(); - - // Read schedule type from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - scheduleType = readStream.ReadInt32L(); - - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Read start time from aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - TInt64 time( 0 ); - time = (TInt64) lower; - TInt64 longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 startTime = time; - - //Read end time from aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - time = (TInt64) lower; - longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 endTime = time; - - CleanupStack::PopAndDestroy( &readStream ); - - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - - // Get overlapping schedules from database - iDb->GetOverlappingSchedulesL( scheduleType, startTime, endTime, schedules ); - - TUint32 length( 0 ); - - length += sizeof( TInt32 ); // item count added to buffer first - - // Length of the schedules needed for transfer stream - for ( TInt i = 0; i < schedules.Count(); i++ ) - { - length += schedules[i]->ExternalizeLength(); - } - - HBufC8* retBuf = HBufC8::NewLC( length ); - TPtr8 retBufPtr( retBuf->Des() ); - - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retBufPtr ); - // write item count to buffer - writeStream.WriteInt32L( schedules.Count() ); - - // write all items to buffer - for ( TInt j = 0; j < schedules.Count(); j++ ) - { - schedules[j]->ExternalizeL( writeStream ); - } - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retBufPtr ) ); - - CleanupStack::PopAndDestroy( retBuf ); - CleanupStack::PopAndDestroy( &schedules ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::Reschedule"); - - RArray uidArray; - - iDb->GetPluginsL( uidArray ); - - if( uidArray.Count() > 0 ) - { - for(TInt i = 0; i < uidArray.Count(); i++) - { - TTime runTime( iDb->GetNextScheduleTimeByPluginL( uidArray[i] ) ); - - // Search for existing plugin controller for this schedule - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - iDb->GetSchedulesByTimeAndPluginL( runTime, uidArray[i], schedules ); - - if( schedules.Count() > 0 ) - { - TBool controllerFound( EFalse ); - - // Plugin controller might existCheck if the plugin controller already exists. - for( TInt ii = 0; ii < iPluginControllerArray.Count(); ii++ ) - { - if( schedules[0]->PluginUid() == iPluginControllerArray[ii]->PluginUid() ) - { - iPluginControllerArray[ii]->SetSchedulesL( schedules ); - controllerFound = ETrue; - break; - } - } - - // It didn't so we create new one - if( controllerFound == EFalse ) - { - if( schedules[0]->PluginType() == CCseScheduledProgram::ECseUniPlugin ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::Reschedule: Create new uniplugin controller"); - // Create new PluginController - iPluginControllerArray.AppendL( CCseSchedulerUniPluginController::NewL( *this, schedules[0]->PluginUid() ) ); - // Add schedules to just created controller - iPluginControllerArray[iPluginControllerArray.Count()-1]->SetSchedulesL(schedules); - } - else if ( schedules[0]->PluginType() == CCseScheduledProgram::ECseMultiPlugin ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::Reschedule: Create new multiplugin controller"); - // Create new PluginController - iPluginControllerArray.AppendL( CCseSchedulerMultiPluginController::NewL( *this, schedules[0]->PluginUid() ) ); - // Add schedules to just created controller - iPluginControllerArray[iPluginControllerArray.Count()-1]->SetSchedulesL(schedules); - } - else - { - // WTF?!?! - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::Reschedule: Plugin something completely different"); - } - } - } - // Delete schedule array. - CleanupStack::PopAndDestroy( &schedules ); - } - } - - uidArray.Reset(); - uidArray.Close(); - - // Stop server if we dont have any clients and there is no more - // reason for us to live (no schedules active). - iServer.StopServer(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::IsSchedulerActive"); - - TBool ret(EFalse); - - if( iPluginControllerArray.Count() > 0 ) - { - ret = ETrue; - } - - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::IsSchedulerActive"); - - while( AccessCount() >= 1 ) - { - Dec(); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleArrayLengthByPluginUidL"); - TInt32 pluginUid( 0 ); - TBuf8<4> idBuff; - TBuf8<4> lenBuff; - TInt length( 0 ); - idBuff.FillZ(); - - // Read application uid from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - pluginUid = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - iDb->GetSchedulesByPluginL( pluginUid, progArray); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length = length + progArray[i]->ExternalizeLength(); - } - CleanupStack::PopAndDestroy( &progArray ); // closes progArray - - lenBuff.FillZ(); - - // Change length value to stream so that we can send it back to client. - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( lenBuff ); - writeStream.WriteInt32L( length ); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, lenBuff ) ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetSchedulesByPluginUidL"); - TInt32 pluginUid( 0 ); - TBuf8<4> idBuff; - idBuff.FillZ(); - TInt32 numberOfElems( 0 ); - TInt length( 0 ); - - // Read application UID from aMessage - TInt err( aMessage.Read( 0, idBuff ) ); - - if ( err == KErrNone ) - { - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - pluginUid = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - iDb->GetSchedulesByPluginL( pluginUid, progArray ); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length += progArray[i]->ExternalizeLength(); - } - - // Allocate write stream - HBufC8* retBuff = HBufC8::NewL( length ); - CleanupStack::PushL( retBuff ); - TPtr8 retPtr( retBuff->Des() ); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retPtr ); - - // Fill stream - // Write number elems - numberOfElems = progArray.Count(); - writeStream.WriteInt32L( numberOfElems ); - // Add elems one by one - for ( TInt i = 0; i < progArray.Count(); i++ ) - { - progArray[i]->ExternalizeL( writeStream ); - } - writeStream.CommitL(); - - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retPtr ) ); - - CleanupStack::PopAndDestroy( retBuff ); - CleanupStack::PopAndDestroy( &progArray ); - } - - aMessage.Complete( err ); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleArrayLengthByTypeL"); - TInt32 type( 0 ); - TBuf8<4> idBuff; - TBuf8<4> lenBuff; - TInt length( 0 ); - idBuff.FillZ(); - - // Read application uid from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - type = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - iDb->GetSchedulesByTypeL( type, progArray); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length = length + progArray[i]->ExternalizeLength(); - } - CleanupStack::PopAndDestroy( &progArray ); // closes progArray - - lenBuff.FillZ(); - - // Change length value to stream so that we can send it back to client. - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( lenBuff ); - writeStream.WriteInt32L( length ); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, lenBuff ) ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetSchedulesByTypeL"); - TInt32 type( 0 ); - TBuf8<4> idBuff; - idBuff.FillZ(); - TInt32 numberOfElems( 0 ); - TInt length( 0 ); - - // Read application UID from aMessage - TInt err( aMessage.Read( 0, idBuff ) ); - - if ( err == KErrNone ) - { - RPointerArray progArray; - CleanupResetAndDestroyPushL( progArray ); - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - type = readStream.ReadInt32L(); - CleanupStack::PopAndDestroy( &readStream ); - - // Get schedules from database - iDb->GetSchedulesByTypeL( type, progArray ); - - // Calculate total length - // Number of items in array - length = length + 4; // Size of TInt32 - // Data from array - for ( TInt i = 0 ; i < progArray.Count(); i++ ) - { - length += progArray[i]->ExternalizeLength(); - } - - // Allocate write stream - HBufC8* retBuff = HBufC8::NewL( length ); - CleanupStack::PushL( retBuff ); - TPtr8 retPtr( retBuff->Des() ); - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retPtr ); - - // Fill stream - // Write number elems - numberOfElems = progArray.Count(); - writeStream.WriteInt32L( numberOfElems ); - // Add elems one by one - for ( TInt i = 0; i < progArray.Count(); i++ ) - { - progArray[i]->ExternalizeL( writeStream ); - } - writeStream.CommitL(); - - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retPtr ) ); - - CleanupStack::PopAndDestroy( retBuff ); - CleanupStack::PopAndDestroy( &progArray ); - } - - aMessage.Complete( err ); - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetScheduleArrayLengthByTimeframeL"); - TBuf8<20> idBuff; - TBuf8 retBuf; // contains length - - TUint32 length( 0 ); - - idBuff.FillZ(); - - // Read schedule type from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Read start time from the aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - TInt64 time( 0 ); - time = (TInt64) lower; - TInt64 longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 beginning = time; - - // Read end time from the aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - time = (TInt64) lower; - longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 end = time; - - CleanupStack::PopAndDestroy( &readStream ); - - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - - // Get overlapping schedules - iDb->GetSchedulesByTimeframeL( beginning, end, schedules ); - - // Count length one by one - for ( TInt i = 0; i < schedules.Count(); i++ ) - { - length += schedules[i]->ExternalizeLength(); - } - - CleanupStack::PopAndDestroy( &schedules ); - - retBuf.FillZ(); - - - // Write length to stream so we can pass it to client - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retBuf ); - writeStream.WriteInt32L( length ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retBuf ) ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::GetSchedulesByTimeframeL"); - TBuf8<20> idBuff; - - idBuff.FillZ(); - - // Read schedule type from aMessage - User::LeaveIfError( aMessage.Read( 0, idBuff ) ); - - RDesReadStream readStream; - CleanupClosePushL( readStream ); - readStream.Open( idBuff ); - - TUint32 lower( 0 ); - TUint32 upper( 0 ); - - // Read start time from aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - TInt64 time( 0 ); - time = (TInt64) lower; - TInt64 longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 beginning = time; - - //Read end time from aMessage - lower = readStream.ReadUint32L(); - upper = readStream.ReadUint32L(); - time = (TInt64) lower; - longUpper = (TInt64) upper; - longUpper = longUpper << 32; - longUpper &= (0xFFFFFFFF00000000ULL); - time |= longUpper; - TInt64 end = time; - - CleanupStack::PopAndDestroy( &readStream ); - - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - - // Get overlapping schedules from database - iDb->GetSchedulesByTimeframeL( beginning, end, schedules ); - - TUint32 length( 0 ); - - length += sizeof( TInt32 ); // item count added to buffer first - - // Length of the schedules needed for transfer stream - for ( TInt i = 0; i < schedules.Count(); i++ ) - { - length += schedules[i]->ExternalizeLength(); - } - - HBufC8* retBuf = HBufC8::NewLC( length ); - TPtr8 retBufPtr( retBuf->Des() ); - - RDesWriteStream writeStream; - CleanupClosePushL( writeStream ); - writeStream.Open( retBufPtr ); - // write item count to buffer - writeStream.WriteInt32L( schedules.Count() ); - - // write all items to buffer - for ( TInt j = 0; j < schedules.Count(); j++ ) - { - schedules[j]->ExternalizeL( writeStream ); - } - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - - User::LeaveIfError( aMessage.Write( 1, retBufPtr ) ); - - CleanupStack::PopAndDestroy( retBuf ); - CleanupStack::PopAndDestroy( &schedules ); - - aMessage.Complete( KErrNone ); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::ScheduleCompletedSuccesfully: aDbIdentifier: %d", - aDbIdentifier); - - TInt32 pluginUid( 0 ); - - // First get the plugin UID of removed schedule - CCseScheduledProgram* prog = CCseScheduledProgram::NewL() ; - CleanupStack::PushL( prog ); - iDb->GetScheduleByDbIdentifierL( aDbIdentifier, prog ); - pluginUid = prog->PluginUid( ); - CleanupStack::PopAndDestroy( prog ); - - // Remove completed schedule from DB - TRAPD( err, iDb->RemoveScheduleL( aDbIdentifier ) ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerServerEngine::ScheduleCompletedSuccesfully - iDb->RemoveScheduleL() LEAVED: %d", - err); - } - - // Reschedule completed plugin - if( pluginUid != 0 ) - { - // We have plugin Uid, reschedule that controller - RescheduleByPluginL( pluginUid ); - } - else - { - // No plugin uid found, reschedule all. - RescheduleL(); - } - - if( !iCompletitionBreaker->IsActive() ) - { - iCompletitionBreaker->Start(TCallBack( CompletitionCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::ScheduleCompletedSuccesfully - Breaker already active"); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::ScheduleCompletedWithError: aDbIdentifier: %d, aError %d", - aDbIdentifier, - aErrorCode); - TInt32 pluginUid( 0 ); - - // First get the plugin UID of removed schedule - CCseScheduledProgram* prog = CCseScheduledProgram::NewL(); - CleanupStack::PushL( prog ); - iDb->GetScheduleByDbIdentifierL( aDbIdentifier, prog ); - pluginUid = prog->PluginUid( ); - CleanupStack::PopAndDestroy( prog ); - - // Something strange happened while executing schedule. Remove it from database. - TRAPD( err, iDb->RemoveScheduleL( aDbIdentifier ) ); - if ( err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( - ">>>CCseSchedulerServerEngine::ScheduleCompletedWithError: iDb->RemoveScheduleL Leaved: %d", - err); - } - - // Reschedule completed plugin - if( pluginUid == 0 ) - { - // We have plugin Uid, reschedule that controller - RescheduleByPluginL( pluginUid ); - } - else - { - // No plugin uid found, reschedule all. - RescheduleL(); - } - -#if CSE_LOGGING_METHOD == 0 - ( void )aErrorCode; -#endif - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::IncreaseScheduleRunCountL: aDbIdentifier: %d", - aDbIdentifier ); - - TRAPD( err, iDb->IncreaseRunCountL( aDbIdentifier ) ); - - if (err != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL( - "CCseSchedulerServerEngine::IncreaseScheduleRunCount - IncreaseRunCount failed: %d. Removing from DB", err); - - // IncreaseRunCount leaved. It is crucial for us that IncreaseRunCount passes. - // We use it to prevent scheduling engine to run certain malicious software. - iDb->RemoveScheduleL( aDbIdentifier ); - } - - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::IsAllowedToRun: aDbIdentifier: %d", - aDbIdentifier ); - - TBool ret( EFalse ); - TInt32 runCount( 0 ); - - TRAPD( err, runCount = iDb->GetRunCountL( aDbIdentifier ) ); - - if ( err == KErrNone && runCount < 3 ) - { - // Set true if check went ok and there is only less than three tries to run schedule - ret = ETrue; - } - - CSELOGSTRING2_HIGH_LEVEL( - "<<>>CCseSchedulerServerEngine::ScheduleNotValid: aDbIdentifier: %d", - aDbIdentifier ); - - TRAP_IGNORE( iDb->RemoveScheduleL( aDbIdentifier ) ); - - CSELOGSTRING_HIGH_LEVEL( - "<<>>CCseSchedulerServerEngine::CompletitionCallback"); - CSELOGSTRING_HIGH_LEVEL("<<( aPtr )->HandleCompletitionCallback(); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerServerEngine::HandleCompletitionCallback -// ----------------------------------------------------------------------------- -// -TInt CCseSchedulerServerEngine::HandleCompletitionCallback() - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::HandleCompletitionCallback "); - - // Reschedule has been made to relevant plugin controllers. - // Go through controllers and remove obsolote ones - for( TInt i = 0; i < iPluginControllerArray.Count(); i++ ) - { - // Do cleanup on controller - iPluginControllerArray[i]->DoCleanUp( ); - - if( iPluginControllerArray[i]->IsObsolete() ) - { - // Delete it and remove from controller array - delete iPluginControllerArray[i]; - iPluginControllerArray.Remove(i); - } - } - - iServer.StopServer(); - - CSELOGSTRING_HIGH_LEVEL("<<>>RequestReschedule::HandleCompletitionCallback "); - - TRAP_IGNORE( RescheduleL() ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::RescheduleByPluginL - Plugin Uid: %d", aPluginUid); - - TTime runTime( iDb->GetNextScheduleTimeByPluginL( aPluginUid ) ); - TBool controllerFound( EFalse ); - - // Search for existing plugin controller for this schedule - RPointerArray schedules; - CleanupResetAndDestroyPushL( schedules ); - iDb->GetSchedulesByTimeAndPluginL( runTime, aPluginUid, schedules ); - - // Search plugin controller that needs rescheduling - for( TInt i = 0; i < iPluginControllerArray.Count(); i++ ) - { - if( aPluginUid == iPluginControllerArray[i]->PluginUid() ) - { - if( schedules.Count() > 0 ) - { - iPluginControllerArray[i]->SetSchedulesL( schedules ); - } - else - { - // Remove controller if controller found but - // there are no schedules for it - - // Check if controller can be removed right away or should it be done - // after callstack breaker - if( iPluginControllerArray[i]->IsControllerActive() ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::RescheduleByPluginL - Plugin found but no schedules, set controller to be removed"); - iPluginControllerArray[i]->SetToBeCleared( ETrue ); - iCompletitionBreaker->Start(TCallBack( CleanerCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::RescheduleByPluginL - Plugin found but no schedules, remove controller"); - delete iPluginControllerArray[i]; - iPluginControllerArray.Remove( i ); - } - } - - controllerFound = ETrue; - break; - } - } - - if( controllerFound == EFalse ) - { - // Create new controller if schedules found - if( schedules.Count() > 0 ) - { - if( schedules[0]->PluginType() == CCseScheduledProgram::ECseUniPlugin ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::RescheduleByPluginL: Create new uniplugin controller"); - // Create new PluginController - iPluginControllerArray.AppendL( CCseSchedulerUniPluginController::NewL( *this, schedules[0]->PluginUid() ) ); - // Add schedules to just created controller - iPluginControllerArray[iPluginControllerArray.Count()-1]->SetSchedulesL(schedules); - } - else if ( schedules[0]->PluginType() == CCseScheduledProgram::ECseMultiPlugin ) - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::RescheduleByPluginL: Create new multiplugin controller"); - // Create new PluginController - iPluginControllerArray.AppendL( CCseSchedulerMultiPluginController::NewL( *this, schedules[0]->PluginUid() ) ); - // Add schedules to just created controller - iPluginControllerArray[iPluginControllerArray.Count()-1]->SetSchedulesL(schedules); - } - else - { - // WTF?!?! - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::RescheduleByPluginL: Plugin something completely different"); - } - } - } - - // Delete schedule array. - CleanupStack::PopAndDestroy( &schedules ); - - // Stop server if we dont have any clients and there is no more - // reason for us to live (no schedules active). - iServer.StopServer(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::ClearingDone"); - - // Use completition callback to remove those controllers that aren't needed anymore - if( !iCompletitionBreaker->IsActive() ) - { - iCompletitionBreaker->Start(TCallBack( CompletitionCallback, this )); - } - else - { - CSELOGSTRING_HIGH_LEVEL( - "CCseSchedulerServerEngine::ClearingDone - Breaker already active"); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::CleanerCallback"); - static_cast( aPtr )->HandleCleanerCallback(); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::HandleCleanerCallback "); - - // go through plugins and clear - for( TInt i = iPluginControllerArray.Count(); i > 0 ; i--) - { - if( iPluginControllerArray[i-1]->IsToBeCleared() ) - { - // If ClearControllerL -call leaves it means that we couldn't signal - // plugin to take himself down. In such cases we leak memory, but we - // still need to keep going so we do not screw all the rest schedules. - TRAP_IGNORE( iPluginControllerArray[i-1]->ClearControllerL()); - delete iPluginControllerArray[i-1]; - iPluginControllerArray.Remove(i-1); - } - } - - iServer.StopServer(); - - CSELOGSTRING_HIGH_LEVEL("<< // Common defines for client and server -#include "CseDebug.h" // Debug macros - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerSession::CCseSchedulerSession() -// C++ constructor -// ----------------------------------------------------------------------------- -// - -CCseSchedulerServerSession::CCseSchedulerServerSession() : CSession2(), - iResourceCount( 0 ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerSession::CCseSchedulerServerSession"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::NewL"); - - CCseSchedulerServerSession* self = new ( ELeave ) CCseSchedulerServerSession(); - CleanupStack::PushL( self ); - self->ConstructL( aServer ); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::ConstructL"); - - if ( aServer ) - { - aServer->Inc(); - } - - // Create new object index - iObjects = CObjectIx::NewL(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::~CCseSchedulerServerSession"); - - delete iObjects; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::ServiceL"); - - switch ( aMessage.Function() ) - { - case ECseServCreateSubSession: - case ECseServCloseSubSession: - case ECseServCloseSession: - { - // "Common messages" - TRAPD( err, DispatchMessageL( aMessage ) ); - aMessage.Complete( err ); - } - break; - - default: - { - // Ok, but must be subsession relative - CCseSchedulerServerEngine* engine = - (CCseSchedulerServerEngine*)iObjects->At( aMessage.Int3() ); - if ( !engine ) - { - aMessage.Complete( KErrBadHandle ); - PanicClient( ECsePanicBadSubSessionHandle ); - } - else - { - // this is the normal route, - // all engine commands go this way - TRAPD( error, engine->GeneralServiceL( aMessage ) ); - if ( error != KErrNone ) - { - CSELOGSTRING2_HIGH_LEVEL("CCseSchedulerServerSession::ServiceL - engine->GeneralServiceL() LEAVED: %d", error); - aMessage.Complete( error ); - } - } - } - break; - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::DispatchMessageL"); - - // Check for session-relative requests - switch ( aMessage.Function() ) - { - case ECseServCreateSubSession: - NewObjectL( aMessage ); - break; - - case ECseServCloseSubSession: - DeleteObject( aMessage.Int3() ); - break; - - case ECseServCloseSession: - Server()->Dec(); - break; - - default: - break; - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::NewObjectL"); - - CObject* obj = Server()->GetEngineObjectL(); - TInt handle( iObjects->AddL( obj ) ); - // Write the handle to client - TPckg handlePckg( handle ); - TRAPD( err, aMessage.WriteL( 3, handlePckg ) ); - - if ( err ) - { - PanicClient( ECsePanicBadRequest ); - return; - } - - // Notch up another resource - iResourceCount++; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::DeleteObject"); - - // Panic if bad handle - CCseSchedulerServerEngine* engine = ( CCseSchedulerServerEngine* )iObjects->At( aHandle ); - if ( !engine ) - { - PanicClient( ECsePanicBadSubSessionHandle ); - } - - iResourceCount--; - // Deletes engine - iObjects->Remove( aHandle ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::CountResources"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::PanicClient"); - - _LIT( KTxtSessionPanic, "SchedulerSession" ); - CSELOGSTRING2_HIGH_LEVEL("CCseSchedulerServerSession::PanicClient - panic code: %d", aPanic); - User::Panic( KTxtSessionPanic, aPanic ); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerSession::PanicClient() -// -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CCseSchedulerServer* CCseSchedulerServerSession::Server() - { - return reinterpret_cast< CCseSchedulerServer* > ( - const_cast< CServer2* > ( CSession2::Server( ) ) ); - } -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/src/CCseSchedulerThreadPacket.cpp --- a/videoscheduler/SchedulerServer/src/CCseSchedulerThreadPacket.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -/* -* Copyright (c) 2006 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: Timer for the notifier* -*/ - - - - -// INCLUDE FILES -#include "CCseSchedulerThreadPacket.h" -#include // Represent one schedule in database -#include -#include "CseDebug.h" // Debug macros - - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - - - -// ============================ MEMBER FUNCTIONS =============================== -// --------------------------------------------------------------------------- -// CCseSchedulerThreadPacket::CCseSchedulerThreadPacket() -// -// --------------------------------------------------------------------------- -CCseSchedulerThreadPacket::CCseSchedulerThreadPacket( ) : - iResultCode( KErrGeneral ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerThreadPacket::CCseSchedulerThreadPacket"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::~CCseSchedulerThreadPacket"); - - delete iSchedule; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::NewL"); - - // Symbian C++ constructor - CCseSchedulerThreadPacket* self = new ( ELeave ) CCseSchedulerThreadPacket(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::ConstructL"); - - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::SetSchedule"); - - delete iSchedule; - iSchedule = NULL; - iSchedule = CCseScheduledProgram::NewL( aData ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::SetResultCode"); - - iResultCode = aResultCode; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::Schedule"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::ResultCode"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::ShutdownSemaphore"); - CSELOGSTRING_HIGH_LEVEL("<<>>ShutdownCompleteSemaphore::ShutdownCompleteSemaphore"); - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerThreadPacket::SetShutdownSemaphore"); - iShutdownSemaphore = aSemaphore; - CSELOGSTRING_HIGH_LEVEL("<<>>ShutdownCompleteSemaphore::SetShutdownCompleteSemaphore"); - iShutdownCompleteSemaphore = aSemaphore; - CSELOGSTRING_HIGH_LEVEL("<< -#include -#include -#include "CseDebug.h" // Debug macros - - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - - - -// ============================ MEMBER FUNCTIONS =============================== -// --------------------------------------------------------------------------- -// CCseSchedulerTimer::CCseSchedulerTimer() -// -// --------------------------------------------------------------------------- -CCseSchedulerTimer::CCseSchedulerTimer( MCseSchedulerTimerObserver* aObserver ) : CTimer( CActive::EPriorityStandard ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerTimer::CCseSchedulerTimer"); - - // C++ default constructor - iObserver = aObserver; - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::~CCseSchedulerTimer"); - Cancel(); - iObserver = NULL; - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::NewL"); - - // Symbian C++ constructor - CCseSchedulerTimer* self = new ( ELeave ) CCseSchedulerTimer(aObserver); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::ConstructL"); - - CTimer::ConstructL(); - CActiveScheduler::Add( this ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::SetTimer"); - - // Just cancel existing and start new one - Cancel(); - AtUTC( aTime ); - -#ifdef _DEBUG - TBuf<100> startTimeBuf; - _LIT( KDateTimeFormat,"CCseSchedulerTimer::SetTimer (UTC): %1%*D/%2%*M/%3%*Y %H:%T:%S.%C#" ); - TRAP_IGNORE( aTime.FormatL( startTimeBuf, KDateTimeFormat ) ); - CSELOGTEXT_HIGH_LEVEL( startTimeBuf ); -#endif // _DEBUG - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::DoCancel"); - - CTimer::DoCancel(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerTimer::RunL, iStatus: %d", iStatus.Int()); - - // Timer has fired. If everything went fine just kick the observer - if ( iStatus.Int() == KErrNone ) - { - iObserver->RunPluginsL(); - } - else - { - // Something went propably wrong, let the observer error handler decide what. - iObserver->TimerErrorL( iStatus.Int() ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerSession::RunError: aError = %d", aError ); - // ATM there isn't leaving code in RunL so we just cancel timer if it is active. - Cancel(); - -#if CSE_LOGGING_METHOD == 0 - ( void )aError; -#endif - - // Return KErrNone to avoid crash. - return KErrNone; - } - -// End of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/SchedulerServer/src/CCseSchedulerUniPluginController.cpp --- a/videoscheduler/SchedulerServer/src/CCseSchedulerUniPluginController.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ -/* -* Copyright (c) 2006 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: Base class for uni plugin controllers* -*/ - - - - - -// INCLUDE FILES -#include "CCseSchedulerUniPluginController.h" -#include "CseDebug.h" // Debug macros -#include "CCseSchedulerPluginStarter.h" -#include "CCseSchedulerLandLord.h" -#include -#include "CCseSchedulerTimer.h" -#include "CCseSchedulerServerEngine.h" - -// EXTERNAL DATA STRUCTURES -// None. - -// EXTERNAL FUNCTION PROTOTYPES -// None. - -// CONSTANTS -// None - -// MACROS -// None. - -// LOCAL CONSTANTS AND MACROS -// None. - -// MODULE DATA STRUCTURES -// None. - -// LOCAL FUNCTION PROTOTYPES -// None. - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCseSchedulerUniPluginController::CCseSchedulerUniPluginController -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CCseSchedulerUniPluginController::CCseSchedulerUniPluginController ( - CCseSchedulerServerEngine& aEngine, - TInt32 aPluginUid ) : - CCseSchedulerPluginControllerBase( aEngine, aPluginUid ), - iLandLord( NULL ), - iIsLandLordWorking( EFalse ) - { - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerUniPluginController::CCseSchedulerUniPluginController"); - - CSELOGSTRING_HIGH_LEVEL( - "<<>>CCseSchedulerUniPluginController::NewL"); - - CCseSchedulerUniPluginController* self = - new( ELeave ) CCseSchedulerUniPluginController( aEngine, aPluginUid ); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::ConstructL"); - - CCseSchedulerPluginControllerBase::ConstructL(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::~CCseSchedulerUniPluginController"); - delete iLandLord; - iLandLord = NULL; - CSELOGSTRING_HIGH_LEVEL( - "<<>>CCseSchedulerUniPluginController::RunPluginsL"); - - // Is there something to be run?!? - if(iScheduleArray.Count() >0 ) - { - // Check if there is security reasons for this schedule why this - // schedule shouldn't be run - if( iEngine.IsAllowedToRun( iScheduleArray[0]->DbIdentifier() ) ) - { - // Check if LandLord is still working. If he is, we just fall through - // because schedule will be kicked when current plugin completes - if( iIsLandLordWorking == EFalse ) - { - // When we come here in UniPluginController it means that there isn't any - // threads running on LandLord side. Scrap the old if it exists and create new one. - if ( iLandLord ) - { - delete iLandLord; - iLandLord = NULL; - } - - iLandLord = CCseSchedulerLandLord::NewL( this ); - - iLandLord->SetScheduleL( *iScheduleArray[0] ); - - iEngine.IncreaseScheduleRunCountL( iScheduleArray[0]->DbIdentifier() ); - - iIsLandLordWorking = ETrue; - - iLandLord->RunPluginL(); - } - } - else - { - // Schedule cannot be run anymore due to security reasons - // Signal engine to remove schedule from DB - iEngine.ScheduleNotValid( iScheduleArray[0]->DbIdentifier() ); - - // Remove schedule own list - delete iScheduleArray[0]; - iScheduleArray.Remove( 0 ); - - // Call ourselves again. - RunPluginsL(); - } - } - else - { - // No schedules...!?!? REEEEESCHEDULE!!! - iEngine.RequestReschedule(); - } - - CSELOGSTRING_HIGH_LEVEL("<<& aScheduleArray ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerUniPluginController::SetSchedules"); - - // The aScheduleArray parameter contains schedules which are either before - // or at the same time as the existing ones in the iScheduleArray. - // Just destroy the old ones and replace with new ones. - // Also cancel the timer because the schedule to run may be different - - iScheduleArray.ResetAndDestroy(); - iTimer->Cancel(); - - // Go through all given schedules and copy them our array - for( TInt i = 0; i < aScheduleArray.Count(); i++) - { - CCseScheduledProgram* schedule = - CCseScheduledProgram::NewL(*aScheduleArray[i] ); - CleanupStack::PushL( schedule ); - - iScheduleArray.AppendL( schedule ); - - CleanupStack::Pop( schedule ); - } - - // If we have schedules, set the timer - if (iScheduleArray.Count() > 0 && !iIsLandLordWorking) - { - // All the schedules have same time - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerUniPluginController::SetSchedules"); - } - -// ----------------------------------------------------------------------------- -// CCseSchedulerUniPluginController::ScheduledEventCompleted -// -// ----------------------------------------------------------------------------- -// -void CCseSchedulerUniPluginController::ScheduleCompletedL( const TUint32 aDbIdentifier, - TInt aCompletitionCode ) - { - CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerUniPluginController::ScheduleCompletedL"); - - if ( aCompletitionCode == KErrNone ) - { - ScheduleCompletedSuccesfullyL( aDbIdentifier ); - } - else - { - HandleScheduleErrorL( aDbIdentifier, aCompletitionCode ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::ScheduleCompletedSuccesfullyL"); - - // Remove completed schedule from list - for ( TInt i = iScheduleArray.Count(); i > 0; i--) - { - if( iScheduleArray[i-1]->DbIdentifier() == aDbIdentifier ) - { - delete iScheduleArray[i-1]; - iScheduleArray.Remove( i-1 ); - } - } - - // After all this LandLord has finished everything. He may rest now - iIsLandLordWorking = EFalse; - - // Notify engine about completition. - iEngine.ScheduleCompletedSuccesfullyL( aDbIdentifier ); - - // If there is still schedule(s), set timer for it - if( iScheduleArray.Count() > 0 ) - { - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::HandleScheduleErrorL"); - - // Remove completed schedule from list - for ( TInt i = iScheduleArray.Count(); i > 0; i--) - { - if( iScheduleArray[i-1]->DbIdentifier() == aDbIdentifier ) - { - delete iScheduleArray[i-1]; - iScheduleArray.Remove( i-1 ); - } - } - - // After all this LandLord has finished everything. He may rest now - iIsLandLordWorking = EFalse; - - // Here we could try to handle plugin errors. Problem is that scheduler doesn't - // know anything about schedule it is running and so there cannot be tailored - // error handling for each plugin. In the end, we just complete schedule - // to engine with error code (ends up removing schedule from DB). - iEngine.ScheduleCompletedWithErrorL( aDbIdentifier, aCompletitionCode ); - - // If there is still schedule(s), set timer for it - if( iScheduleArray.Count() > 0 ) - { - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::TimerErrorL"); - - if ( aError == KErrAbort ) - { - // System time changed. Make sanity check and start timer again. - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerUniPluginController::TimerErrorL, system time has changed"); - if ( iScheduleArray.Count() > 0 ) - { - TTime now; - now.UniversalTime(); - // Time still in the future - if ( now < iScheduleArray[0]->StartTime() ) - { - iTimer->SetTimer( iScheduleArray[0]->StartTime() ); - } - else - { - // If schedule is in the past let the "normal" route decide when - // it is he's her time to be run - RunPluginsL(); - } - } - return; - } - - if ( aError == KErrUnderflow ) - { - // Scheduled time is in the past, pass it to notifier. It should decide what to do - CSELOGSTRING_HIGH_LEVEL( - ">>>CCseSchedulerServerEngine::TimerErrorL, scheduled time is in the past"); - RunPluginsL(); - return; - } - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::ClearControllerL"); - - iLandLord->ClearL(); - - iScheduleArray.ResetAndDestroy(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerUniPluginController::IsControllerActive"); - - CSELOGSTRING2_HIGH_LEVEL("<<>>CCseSemaphoreController::CCseSemaphoreController"); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSemaphoreController::~CCseSemaphoreController"); - - Cancel(); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSemaphoreController::NewL"); - - // Symbian C++ constructor - CCseSemaphoreController* self = new ( ELeave ) CCseSemaphoreController( aSemaphore, - aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - CSELOGSTRING_HIGH_LEVEL("<<>>CCseSemaphoreController::ConstructL"); - - CTimer::ConstructL(); - CActiveScheduler::Add( this ); - - CSELOGSTRING_HIGH_LEVEL("<< - -#include "../SchedulerClient/group/bld.inf" -#include "../SchedulerServer/group/bld.inf" - -PRJ_EXPORTS - -PRJ_MMPFILES - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoscheduler/inc/CseDebug.h --- a/videoscheduler/inc/CseDebug.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,321 +0,0 @@ -/* -* Copyright (c) 2006 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: -* -*/ - - - - - -#ifndef CSEDEBUG_H -#define CSEDEBUG_H - -#include - - - -// Define logging level here - -// Minimum log output -#define CSE_HIGH_LEVEL_TRACES - -#define CSE_MIDDLE_LEVEL_TRACES - -// Maximum log output -#define CSE_LOW_LEVEL_TRACES - - - - -/* ------------------------------------------------------------------------------ - - LOGGING MACROs - - USE THESE MACROS IN YOUR CODE - - Usage: - - Example: CSELOGSTRING_HIGH_LEVEL ("Test"); - Example: CSELOGSTRING2_HIGH_LEVEL ("Test %d", aValue); - Example: CSELOGSTRING3_HIGH_LEVEL ("Test %d %d", aValue1, aValue2); - Example: CSELOGSTRING4_HIGH_LEVEL ("Test %d %d %d", aValue1, aValue2, aValue3); - - Example: CSE_LOG_STR_DESC_HIGH_LEVEL (own_desc); - Example: CSE_LOG_STR_DESC2_HIGH_LEVEL (own_desc, aValue)); - Example: CSE_LOG_STR_DESC3_HIGH_LEVEL (own_desc, aValue, aValue2); - Example: CSE_LOG_STR_DESC4_HIGH_LEVEL (own_desc, aValue, aValue2, aValue3); - ------------------------------------------------------------------------------ -*/ - - - -#ifdef CSE_HIGH_LEVEL_TRACES - -#define CSELOGTEXT_HIGH_LEVEL(AAAA) CSE_LOGTEXT(AAAA) -#define CSELOGSTRING_HIGH_LEVEL(AAAA) CSE_LOGSTRING(AAAA) -#define CSELOGSTRING2_HIGH_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) -#define CSELOGSTRING3_HIGH_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_HIGH_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) -#define CSE_LOG_STR_DESC2_HIGH_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_HIGH_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) - -#else - -#define CSELOGTEXT_HIGH_LEVEL(AAAA) -#define CSELOGSTRING_HIGH_LEVEL(AAAA) -#define CSELOGSTRING2_HIGH_LEVEL(AAAA,BBBB) -#define CSELOGSTRING3_HIGH_LEVEL(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_HIGH_LEVEL(AAAA) -#define CSE_LOG_STR_DESC2_HIGH_LEVEL(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_HIGH_LEVEL(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_HIGH_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#endif - - -#ifdef CSE_MIDDLE_LEVEL_TRACES -#define CSELOGSTRING_MIDDLE_LEVEL(AAAA) CSE_LOGSTRING(AAAA) -#define CSELOGSTRING2_MIDDLE_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) -#define CSELOGSTRING3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_MIDDLE_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) -#define CSE_LOG_STR_DESC2_MIDDLE_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) - -#else - -#define CSELOGSTRING_MIDDLE_LEVEL(AAAA) -#define CSELOGSTRING2_MIDDLE_LEVEL(AAAA,BBBB) -#define CSELOGSTRING3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_MIDDLE_LEVEL(AAAA) -#define CSE_LOG_STR_DESC2_MIDDLE_LEVEL(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_MIDDLE_LEVEL(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_MIDDLE_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#endif - - -#ifdef CSE_LOW_LEVEL_TRACES - -#define CSELOGTEXT_LOW_LEVEL(AAAA) CSE_LOGTEXT(AAAA) -#define CSELOGSTRING_LOW_LEVEL(AAAA) CSE_LOGSTRING(AAAA) -#define CSELOGSTRING2_LOW_LEVEL(AAAA,BBBB) CSE_LOGSTRING2(AAAA,BBBB) -#define CSELOGSTRING3_LOW_LEVEL(AAAA,BBBB,CCCC) CSE_LOGSTRING3(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOGSTRING4(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_LOW_LEVEL(AAAA) CSE_LOG_STR_DESC(AAAA) -#define CSE_LOG_STR_DESC2_LOW_LEVEL(AAAA,BBBB) CSE_LOG_STR_DESC2(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_LOW_LEVEL(AAAA,BBBB,CCCC) CSE_LOG_STR_DESC3(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) CSE_LOG_STR_DESC4(AAAA,BBBB,CCCC,DDDD) - -#else - -#define CSELOGTEXT_LOW_LEVEL(AAAA) -#define CSELOGSTRING_LOW_LEVEL(AAAA) -#define CSELOGSTRING2_LOW_LEVEL(AAAA,BBBB) -#define CSELOGSTRING3_LOW_LEVEL(AAAA,BBBB,CCCC) -#define CSELOGSTRING4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#define CSE_LOG_STR_DESC_LOW_LEVEL(AAAA) -#define CSE_LOG_STR_DESC2_LOW_LEVEL(AAAA,BBBB) -#define CSE_LOG_STR_DESC3_LOW_LEVEL(AAAA,BBBB,CCCC) -#define CSE_LOG_STR_DESC4_LOW_LEVEL(AAAA,BBBB,CCCC,DDDD) - -#endif - - - -/* ------------------------------------------------------------------------------ - - LOG SELECTION - ------------------------------------------------------------------------------ -*/ - -// 0 = No logging, -// 1 = Flogger, -// 2 = RDebug - - -#ifndef _DEBUG - -// UREL BUILD: -#define CSE_LOGGING_METHOD 0 // No logging in UREL builds - -#else // urel - - - -#ifdef __WINSCW__ - -// WINSCW BUILD: -#define CSE_LOGGING_METHOD 2 // RDebug is default with emulator - -#else - -// ARMV5 BUILD: -#define CSE_LOGGING_METHOD 1 // Flogger is default with target device - -#endif - - - -#endif // _DEBUG - - - - -/* ------------------------------------------------------------------------------ - - LOG SETTINGS - ------------------------------------------------------------------------------ -*/ - -#if CSE_LOGGING_METHOD == 1 // Flogger - -#include -_LIT(KCSELogFolder,"CSE"); -_LIT(KCSELogFile,"CSELOG.TXT"); - -#elif CSE_LOGGING_METHOD == 2 // RDebug - -#include - -#endif - - - - - -#if CSE_LOGGING_METHOD == 1 // Flogger - - -#define CSE_LOGTEXT(AAA) RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend, AAA) - -#define CSE_LOG_STR_DESC(AAA) RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend, AAA) -#define CSE_LOG_STR_DESC2(AAA,BBB) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(AAA()),BBB); } while (0) -#define CSE_LOG_STR_DESC3(AAA,BBB,CCC) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(AAA()),BBB,CCC); } while (0) -#define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) do { RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(AAA()),BBB,CCC,DDD); } while (0) - -#define CSE_LOGSTRING(AAA) do { _LIT(tempCSELogDes,AAA); RFileLogger::Write(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,tempCSELogDes()); } while (0) -#define CSE_LOGSTRING2(AAA,BBB) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(tempCSELogDes()),BBB); } while (0) -#define CSE_LOGSTRING3(AAA,BBB,CCC) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(tempCSELogDes()),BBB,CCC); } while (0) -#define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) do { _LIT(tempCSELogDes,AAA); RFileLogger::WriteFormat(KCSELogFolder(),KCSELogFile(),EFileLoggingModeAppend,TRefByValue(tempCSELogDes()),BBB,CCC,DDD); } while (0) - -// Time stamp -_LIT(KCseLogTimeFormatString, "CSE TIMESTAMP: %H:%T:%S:%*C3"); -#define CSE_LOGSTRING_TIMESTAMP { \ - TTime logTime; \ - logTime.HomeTime(); \ - TBuf<256> logBuffer; \ - logTime.FormatL(logBuffer, KCseLogTimeFormatString); \ - RFileLogger::Write(KCSELogFolder(), KCSELogFile(), EFileLoggingModeAppend, logBuffer); \ - } - -// Memory stamp -_LIT(KCseLogMemoryStampString, "CSE MEMORYSTAMP: %d KB"); -#define CSE_LOGSTRING_MEMORYSTAMP { \ - User::CompressAllHeaps(); \ - TMemoryInfoV1Buf logMemory; \ - UserHal::MemoryInfo(logMemory); \ - TInt logMemoryInt = (TInt)(logMemory().iFreeRamInBytes); \ - TBuf<256> logMemoryStr; \ - logMemoryStr.Format(KCseLogMemoryStampString, (logMemoryInt / 1024) ); \ - RFileLogger::Write(KCSELogFolder(), KCSELogFile(), EFileLoggingModeAppend, logMemoryStr); \ - } - - -#elif CSE_LOGGING_METHOD == 2 // RDebug - - -#define CSE_LOGTEXT(AAA) RDebug::Print(AAA) - -#define CSE_LOG_STR_DESC(AAA) RDebug::Print(AAA) -#define CSE_LOG_STR_DESC2(AAA,BBB) do { RDebug::Print(AAA, BBB); } while (0) -#define CSE_LOG_STR_DESC3(AAA,BBB,CCC) do { RDebug::Print(AAA, BBB, CCC); } while (0) -#define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) do { RDebug::Print(AAA, BBB, CCC, DDD); } while (0) - -#define CSE_LOGSTRING(AAA) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes); } while (0) -#define CSE_LOGSTRING2(AAA,BBB) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB); } while (0) -#define CSE_LOGSTRING3(AAA,BBB,CCC) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB, CCC); } while (0) -#define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) do { _LIT(tempCSELogDes,AAA); RDebug::Print(tempCSELogDes, BBB, CCC, DDD); } while (0) - -// Time stamp -_LIT(KCseLogTimeFormatString, "CSE TIMESTAMP: %H:%T:%S:%*C3"); -#define CSE_LOGSTRING_TIMESTAMP { \ - TTime logTime; \ - logTime.HomeTime(); \ - TBuf<256> logBuffer; \ - logTime.FormatL(logBuffer, KCseLogTimeFormatString); \ - RDebug::Print(logBuffer); \ - } - -// Memory stamp -_LIT(KCseLogMemoryStampString, "CSE MEMORYSTAMP: %d KB"); -#define CSE_LOGSTRING_MEMORYSTAMP { \ - User::CompressAllHeaps(); \ - TMemoryInfoV1Buf logMemory; \ - UserHal::MemoryInfo(logMemory); \ - TInt logMemoryInt = (TInt)(logMemory().iFreeRamInBytes); \ - TBuf<256> logMemoryStr; \ - logMemoryStr.Format(KCseLogMemoryStampString, (logMemoryInt / 1024) ); \ - RDebug::Print(logMemoryStr); \ - } - - -#else // TF_LOGGING_METHOD == 0 or invalid - - -#define CSE_LOGSTRING(AAA) -#define CSE_LOGSTRING2(AAA,BBB) -#define CSE_LOGSTRING3(AAA,BBB,CCC) -#define CSE_LOGSTRING4(AAA,BBB,CCC,DDD) - -#define CSE_LOGTEXT(AAA) - -#define CSE_LOG_STR_DESC(AAA) -#define CSE_LOG_STR_DESC2(AAA,BBB) -#define CSE_LOG_STR_DESC3(AAA,BBB,CCC) -#define CSE_LOG_STR_DESC4(AAA,BBB,CCC,DDD) - -#define CSE_LOGSTRING_TIMESTAMP -#define CSE_LOGSTRING_MEMORYSTAMP - - -#endif // TF_LOGGING_METHOD - - - - - - - -#endif // CSEDEBUG_H - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils.pro --- a/videoutils.pro Fri Aug 06 09:54:08 2010 +0300 +++ b/videoutils.pro Mon Aug 23 14:26:48 2010 +0300 @@ -18,5 +18,4 @@ CONFIG += ordered symbian: { BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"videoutils_plat/videoplayer_constants_api/group/bld.inf\"" -BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"videoutils_plat/videoscheduler_api/group/bld.inf\"" } diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/group/bld.inf --- a/videoutils_plat/videoscheduler_api/group/bld.inf Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* Copyright (c) 2004-2005 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: -* -*/ - - - - -PRJ_PLATFORMS -WINSCW ARMV5 - -PRJ_EXPORTS -// SchedulerClient -../inc/ipvideo/CseEngineUids.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CseEngineUids.h ) -../inc/ipvideo/CCseSchedulerAPI.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CCseSchedulerAPI.h ) -../inc/ipvideo/RCseSchedulerClient.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/RCseSchedulerClient.h ) -../inc/ipvideo/RCseSchedulerService.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/RCseSchedulerService.h ) -../inc/ipvideo/RCseSchedulerServiceBase.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/RCseSchedulerServiceBase.h ) -../inc/ipvideo/CCseScheduledProgram.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CCseScheduledProgram.h ) -../inc/ipvideo/CseSchedulerClientServerCommon.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CseSchedulerClientServerCommon.h ) - -// SchedulerServer -../inc/ipvideo/CCseSchedulerPluginIF.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CCseSchedulerPluginIF.h ) -../inc/ipvideo/CCseSchedulerPluginIF.inl MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/CCseSchedulerPluginIF.inl ) -../inc/ipvideo/MCseScheduleObserver.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/MCseScheduleObserver.h ) -../inc/ipvideo/MCsePluginObserver.h MW_LAYER_PLATFORM_EXPORT_PATH( ipvideo/MCsePluginObserver.h ) - - -PRJ_MMPFILES -PRJ_TESTMMPFILES diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CCseScheduledProgram.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CCseScheduledProgram.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -/* -* Copyright (c) 2006 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: This class contains data for scheduled programs.* -*/ - - -#ifndef __CCSESCHEDULEDPROGRAM_H__ -#define __CCSESCHEDULEDPROGRAM_H__ - -#include -#include -#include - -// CONSTANTS -const TInt KCseNameMaxLength = 255; // Based on SymbianDB column max length - -/** -* Scheduled program data. -*/ -class CCseScheduledProgram : public CBase - { - public: // Constructors and destructors - /** - * Two-phased constructor. - */ - IMPORT_C static CCseScheduledProgram* NewL(); - - /** - * Two-phased copy constructor. - */ - IMPORT_C static CCseScheduledProgram* NewL( CCseScheduledProgram& aProg ); - - /** - * Destructor. - * @return None. - */ - IMPORT_C virtual ~CCseScheduledProgram(); - - - // Enums - // Schedule type - enum TCseScheduleType - { - ECseReminder = 0, - ECseRecording, - ECseProgramGuideUpdate, - ECseScheduleDownload, - ECseOther - }; - - // Plugin type: - enum TCsePluginType - { - // Only one of this kind of plugin can be running at same time - ECseUniPlugin = 1, - // Several of this kind of plugin can be running same time - ECseMultiPlugin - }; - public: // New methods - /** - * Externalizes class content to stream. - * @param aStream Writestream where to write content - * @return None. - */ - IMPORT_C void ExternalizeL( RWriteStream& aStream ); - - /** - * Internalizes class content from stream. - * @param aStream Readstream from where to read content - * @return None. - */ - IMPORT_C void InternalizeL( RReadStream& aStream ); - - /** - * Calculates externalization length. - * @return Length of the stream needed when class is externalized. - */ - IMPORT_C TInt ExternalizeLength(); - - public: // Setters - - /** - * Sets new plugin type for schedule. - * EUniPlugin for plugins that can have only one running at a given time. - * EMultiPlugin for plugins that can have several running at a given time - * @param aPluginType New plugin type - */ - IMPORT_C void SetPluginType( TInt32 aPluginType ); - - /** - * Sets new schedule name. - * @param aName New name of the schedule - */ - IMPORT_C void SetName( const TDesC8& aName ); - - /** - * Sets new schedule start time. - * @param aStartTime New start time of the schedule - */ - IMPORT_C void SetStartTime( const TTime& aStartTime ); - - /** - * Sets new schedule end time. - * @param aEndTime New end time of the schedule - */ - IMPORT_C void SetEndTime( const TTime& aEndTime ); - - /** - * Sets new application uid for schedule. - * @param aAppUid New application uid of the schedule - */ - IMPORT_C void SetAppUid( const TInt32 aAppUid ); - - /** - * Sets new plugin uid for schedule - * @param aPluginUid New plugin uid of the schedule - */ - IMPORT_C void SetPluginUid( const TInt32 aPluginUid ); - - /** - * Sets new application data for schedule - * @param aAppData New application data of the schedule - */ - IMPORT_C void SetApplicationDataL( const TDesC8& aAppData ); - - /** - * Sets new database identifier for the schedule. Note that this should only - * be set by Common Scheduling Engine, not the application using it. - * @param aDbIdentifier New database identifier of the schedule - */ - IMPORT_C void SetDbIdentifier( const TUint32 aDbIdentifier ); - - /** - * Sets new schedule for the schedule. - * @param aScheduleType New schedule type of the schedule - */ - IMPORT_C void SetScheduleType( const TInt32 aScheduleType ); - - // Getters - /** - * Get the type of scheduler plugin - * EUniPlugin for plugins that can have only one running at a given time. - * EMultiPlugin for plugins that can have several running at a given time - * @return Schedule plugin type. - */ - IMPORT_C TInt32 PluginType() const; - - /** - * Get the name of the schedule. - * @return Schedule name. - */ - IMPORT_C TPtrC8 Name() const; - - /** - * Gets the start time of the schedule. - * @return Start time. - */ - IMPORT_C TTime& StartTime(); - - /** - * Gets the end time of the schedule. - * @return End time. - */ - IMPORT_C TTime& EndTime(); - - /** - * Gets the application uid of the schedule - * @return Application uid. - */ - IMPORT_C TInt32 AppUid() const; - - /** - * Gets the plugin uid of the schedule. - * @return Plugin uid. - */ - IMPORT_C TInt32 PluginUid() const; - - /** - * Gets the application data of the schedule. - * @return Application data. - */ - IMPORT_C TPtrC8 ApplicationData(); - - /** - * Gets the database identifier of the schedule. - * @return Database identifier - */ - IMPORT_C TUint32 DbIdentifier() const; - - /** - * Gets the schedule type of the schedule. - * @return Schedule type - */ - IMPORT_C TInt32 ScheduleType() const; - - /** - * Dumps content of schedule to debug trace - * @return None - */ - IMPORT_C void DebugDump() const; - - protected: // Constructors - /** - * Default constructor - */ - EXPORT_C CCseScheduledProgram(); - - /** - * Symbian 2nd phase constructor can leave. - */ - void ConstructL(); - - protected: // Data - /** - * Name - * Name of the scheduled program, e.g. name of the TV program. - */ - TBuf8 iName; - - /** - * Start time - * Start time when the scheduled program is run (passed to plugin which is defined here). - */ - TTime iStartTime; - - /** - * End time - * End time for schedules that take longer time to complete, for example recording of the TV program. - * If schedule is "instant" (e.g. just notification to user) start time and end time should be the same. - */ - TTime iEndTime; - - /** - * Application UID - * This is the application uid of the program that has added this schedule. Can be used to retrieve - * all schedules of certain application. - */ - TInt32 iAppUid; - - /** - * Plugin UID - * UID of the plugin where this scheduled program is passed when the time is right. - */ - TInt32 iPluginUid; - - /** - * Application Data - * Application specific data for the plugin. Common scheduling Engine has no knowledge what - * this data contains. - */ - HBufC8* iAppData; - - /** - * DB identifier - * Used to separate schedules from each other in database. Should be only added by Common - * scheduling engine, not by application using it. - */ - TUint32 iDbIdentifier; - - /** - * Schedule type - * Type of this schedule, e.g. reminder, recording... - */ - TInt32 iScheduleType; - - /** - * Schedule plugin type - * Type of the plugin where this schedule will be run - */ - TInt32 iPluginType; - }; - -#endif //__CCSESCHEDULEDPROGRAM_H__ - -// End of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerAPI.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerAPI.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* -* Copyright (c) 2006 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: -* -*/ - - - -#ifndef _CCSESCHEDULERAPI_H -#define _CCSESCHEDULERAPI_H - -// INCLUDES -#include -#include // Client common methods (server start up etc) -#include // Client common methods (open, close etc) - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None. - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -class CCseScheduledProgram; - -// CLASS DECLARATION -/** -* General client api that manages service functionality. -* -* @lib CseSchedulerClient.lib -*/ -class CCseSchedulerApi : public CBase - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - IMPORT_C static CCseSchedulerApi* NewL(); - - /** - * Destructor. - * @return None. - */ - IMPORT_C virtual ~CCseSchedulerApi(); - - private: // Constructors and destructor - - /** - * C++ default constructor. - */ - CCseSchedulerApi(); - - /** - * Symbian 2nd phase constructor can leave. - */ - void ConstructL(); - - public: // New methods - /** - * Adds given schedule to Common Scheduling Engine database. After the call is - * completed, the parameter contains the DB identifier of the schedule. - * @param aData Schedule to be added to database. - * @return Generic symbian error code. - */ - IMPORT_C TInt AddSchedule( CCseScheduledProgram& aData ) const; - - /** - * Removes schedule from database. - * @param aDbIdentifier Database identifier of the schedule to be removed. - * @return Generic symbian error code. - */ - IMPORT_C TInt RemoveSchedule( const TUint32 aDbIdentifier ) const; - - /** - * Gets schedule from database. - * @param aDbIdentifier Database identifier of the schedule that is wanted - * from the database - * @param aProg Pointer where this scheduled program is get. - * @return Generic symbian error codes. - */ - IMPORT_C TInt GetSchedule( const TUint32 aDbIdentifier, - CCseScheduledProgram* aProg ) const; - - /** - * Get list of scheduled events from the scheduling engine based on given UID. - * @param aAppUid Application UID. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - IMPORT_C TInt GetSchedulesByAppUid( const TInt32 aAppUid, - RPointerArray& aArray ) const; - - /** - * Get overlapping schedule (if any) from the scheduling engine. - * Uses schedule type, start and end times to find overalapping - * schedules from the Commone Scheduling Engine database. - * @param aProgram Schedule to used for finding overlapping schedules. - * @param aResultArray On return, contains array of overlapping - * schedules, empty if none found. - * @return Generic symbian error code. - */ - IMPORT_C TInt GetOverlappingSchedules( CCseScheduledProgram& aProgram, - RPointerArray& aResultArray ); - - /** - * Get list of scheduled events from the scheduling engine based on given UID. - * @param aPluginUid Plugin UID. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - IMPORT_C TInt GetSchedulesByPluginUid( const TInt32 aPluginUid, - RPointerArray& aArray ) const; - - /** - * Get list of scheduled events from the scheduling engine based on given schedule type. - * @param aScheduleType Schedule type. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - IMPORT_C TInt GetSchedulesByType( const TInt32 aScheduleType, - RPointerArray& aArray ) const; - - /** - * Get list of scheduled events from the scheduling engine between given timeframe. - * @param aBeginning Beginning of the time frame - * @param aEnd End of the time frame - * @return Generic symbian error code. - */ - IMPORT_C TInt GetSchedulesByTime( const TTime& aBeginning, - const TTime& aEnd, - RPointerArray& aArray ) const; - - - private: // Data - /** - * Scheduler engine - Client - */ - RCseSchedulerClient iClient; - - /** - * Scheduler engine - Service - */ - RCseSchedulerService iService; - }; - -#endif //_CCSESCHEDULERAPI_H - -// End of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerPluginIF.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerPluginIF.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2006 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: Common interface for scheduler plugins.* -*/ - - - - -#ifndef CCSESCHEDULERPLUGINIF_H -#define CCSESCHEDULERPLUGINIF_H - -#include -#include -class CCseScheduledProgram; -class MCsePluginObserver; - -class CCseSchedulerPluginIF : public CBase - { -public: - /** - * Construction method. - * @param aUid Ecom implementation uid of the used plugin. - * @return None - */ - static CCseSchedulerPluginIF* NewL( const TUid& aUid ); - - /** - * Runs given task in plugin. - * @param aProg Schedule to be run in plugin. - * @param aObserver Pointer back to scheduling engine. Called - * when schedule is completed or error occurs. - * @return None - */ - virtual void RunTaskL( CCseScheduledProgram& aProg, - MCsePluginObserver* aObserver ) = 0; - - /** - * Return the ECom implementation uid of this plugin. - * @return ECom implementation uid. - */ - TUid ImplementationUid() const; - - /** - * Destructor - */ - virtual ~CCseSchedulerPluginIF(); - -protected: - /** - * Instance identifier key. When instance of an - * implementation is created by ECOM framework, the - * framework will assign UID for it. The UID is used in - * destructor to notify framework that this instance is - * being destroyed and resources can be released. - */ - TUid iDtorIDKey; - - /** - * Ecom implementation uid - */ - TUid iImplementationUid; - }; - - - -#include -#include - -#endif //CCSESCHEDULERPLUGINIF_H diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerPluginIF.inl --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CCseSchedulerPluginIF.inl Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2006 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: CSE inlines.* -*/ - - - -#ifndef CIPTVSCHEDULERPLUGIN_INL -#define CIPTVSCHEDULERPLUGIN_INL - -// INLINES - -/** -* Contructor -*/ -inline CCseSchedulerPluginIF* CCseSchedulerPluginIF::NewL( const TUid& aUid ) - { - TAny* ext = REComSession::CreateImplementationL( aUid, _FOFF( CCseSchedulerPluginIF, iDtorIDKey )); - - CCseSchedulerPluginIF* result = reinterpret_cast< CCseSchedulerPluginIF* >( ext ); - result->iImplementationUid = aUid; // set the plugin's implementation uid - - return result; - } - - -/** -* Destructor -*/ -inline CCseSchedulerPluginIF::~CCseSchedulerPluginIF() - { - // Inform the ECOM framework that this specific instance of the - // interface has been destroyed. - REComSession::DestroyedImplementation( iDtorIDKey ); - } -/** -* ImplementationUid -*/ -inline TUid CCseSchedulerPluginIF::ImplementationUid() const - { - return iImplementationUid; - } - -#endif diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CseEngineUids.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CseEngineUids.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* -* Copyright (c) 2006 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: Common scheduling engine UIDs* -*/ - - - - - -const TUint CSE_SCHEDULER_SERVER_UID = 0x10281F20 -const TUint CSE_SCHEDULER_CLIENT_UID = 0x10281F1F diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/CseSchedulerClientServerCommon.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/CseSchedulerClientServerCommon.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2006 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: scheduling engine client/server common header.* -*/ - - - - - -#ifndef __CSESCHEDULERCLIENTSERVERCOMMON_H__ -#define __CSESCHEDULERCLIENTSERVERCOMMON_H__ - -// INCLUDE FILES -#include - -// CONSTANTS -_LIT( KCseSchedulerServerName, "CseSchedulerEngineServer" ); // Server name -_LIT( KCseSchedulerServerSemaphoreName, "CseSchedulerServerSemaphore" ); -_LIT( KCseSchedulerServerFileName, "CseSchedulerServer.exe" ); - - -// The server version. A version must be specified when -// creating a session with the server. -const TUint KCseServMajorVersionNumber=0; -const TUint KCseServMinorVersionNumber=1; -const TUint KCseServBuildVersionNumber=1; - - -// Enum for different server requests -typedef enum - { - ECseRequestBase = 0, - ECseAddSchedule, - ECseRemoveSchedule, - ECseGetSchedules, - ECseGetSchedule, - ECseGetScheduleLength, - ECseGetSchedulesByAppUid, - ECseGetScheduleArrayLengthByAppUid, - ECseServCreateSubSession, - ECseServCloseSubSession, - ECseServCloseSession, - ECseGetOverlappingSchedulesLength, - ECseGetOverlappingSchedules, - ECseGetScheduleArrayLengthByPluginUid, - ECseGetSchedulesByPluginUid, - ECseGetScheduleArrayLengthByType, - ECseGetSchedulesByType, - ECseGetScheduleArrayLengthByTimeframe, - ECseGetSchedulesByTimeframe, - ECseRequestLast - } MCseSchedulerServerRequests; - -// Enum for different server responses -typedef enum - { - ECseNoSubsessionHandle = 0x100, - } MCseSchedulerRetValues; - - -#endif // __CSESCHEDULERCLIENTSERVERCOMMON_H__ - -// End of file \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/MCsePluginObserver.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/MCsePluginObserver.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* Copyright (c) 2006 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: Observer to inform common scheduling engine when plugin is* -*/ - - - - -#ifndef __MCSEPLUGINOBSERVER_H__ -#define __MCSEPLUGINOBSERVER_H__ - -// CLASS DECLARATION -/** -* MCsePluginObserver -* This class specifies the function to be called when a plugin -* cause error or completes. -*/ -class MCsePluginObserver - { - public: // New functions - /** - * Called when plugin is finihed progressing - * @param aCompletionCode Completion code of plugin. KErrNone - * if everything went alright. - */ - virtual void PluginCompleted( TInt aCompletionCode ) = 0; - }; - -#endif // __MCSEPLUGINOBSERVER_H__ - -// End of File \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/MCseScheduleObserver.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/MCseScheduleObserver.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2006 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: -* -*/ - - - - -#ifndef __MCSESCHEDULEOBSERVER_H__ -#define __MCSESCHEDULEOBSERVER_H__ - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION -/** -* MCseScheduleObserver -* This class specifies the function to be called when a scheduler -* cause error or completes. -*/ -class MCseScheduleObserver - { - public: // New functions - /** - * Called when schedule is finished prosessing- - * @param aDbIdentifier DbIdentifier of scheduled program that just - * has been processed. - * @param aCompletionCode Completion code of schedule. KErrNone - * if everything went alright. - */ - virtual void ScheduleCompletedL( const TUint32 aDbIdentifier, - TInt aCompletionCode ) = 0; - }; - -#endif // __MCSESCHEDULEOBSERVER_H__ - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerClient.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerClient.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2006 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: Interface for Cse Scheduler engine Client class* -*/ - - - - - -#ifndef _RCSESCHEDULERCLIENT_H -#define _RCSESCHEDULERCLIENT_H - -// INCLUDES -#include - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None. - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -// None. - -// CLASS DECLARATION - -/** -* This is the client-side interface through which communication -* with the server is channeled. -* -* @lib CseSchedulerClient.dll -*/ -class RCseSchedulerClient : public RSessionBase - { - public: // Constructors and destructor - - /** - * C++ default constructor. - * @return None - */ - RCseSchedulerClient(); - - /** - * Destructor. - * @return None. - */ - virtual ~RCseSchedulerClient(); - - public: // New functions - - /** - * Connect to the server. - * @return KErrNone if successful, otherwise another of the system-wide - * error codes. - */ - TInt Connect(); - - /** - * Close the session. - * @return None - */ - void Close(); - - /** - * Version - * @return version number - */ - TVersion Version() const; - - private: // Data - - }; - -#endif // _RCSESCHEDULERCLIENT_H - -// End of File - - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerService.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerService.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -/* -* Copyright (c) 2006 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: Interface for CseScheduler Client's Service class* -*/ - - - -#ifndef __RCSESCHEDULERSERVICE_H__ -#define __RCSESCHEDULERSERVICE_H__ - -// INCLUDES -#include // Client common methods (open, close etc) - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None. - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -class CCseScheduledProgram; - -// CLASS DECLARATION -/** -* General client api that manages service functionality. -* -* @lib CseSchedulerClient.lib -*/ -class RCseSchedulerService : public RCseSchedulerServiceBase - { - public: // Constructors and destructor - - /** - * Constructor. - * @return None. - */ - RCseSchedulerService(); - - /** - * Destructor. - * @return None. - */ - virtual ~RCseSchedulerService(); - - public: // New methods - /** - * Adds given schedule to Common Scheduling Engine database. After the call is - * completed, the parameter contains the DB identifier of the schedule. - * @param aData Schedule to be added to database. - */ - void AddScheduleL( CCseScheduledProgram& aData ) const; - - /** - * Removes schedule from database. - * @param aDbIdentifier Database identifier of the schedule to be removed. - * @return Generic symbian error code. - */ - void RemoveScheduleL( const TUint32 aDbIdentifier ) const; - - /** - * Gets schedule from database. - * @param aDbIdentifier Database identifier of the schedule that is wanted - * from the database - * @param aProg Pointer where this scheduled program is get. - * @return Generic symbian error codes. - */ - void GetScheduleL( const TUint32 aDbIdentifier, - CCseScheduledProgram* aProg ) const; - - /** - * Get list of scheduled events from the scheduling engine based on given UID. - * @param aAppUid Application UID. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - void GetSchedulesL( const TInt32 aAppUid, - RPointerArray& aArray ) const; - - /** - * Get overlapping schedule (if any) from the scheduling engine. - * Uses schedule type, start and end times to find overalapping - * schedules from the Commone Scheduling Engine database. - * @param aProgram Schedule to used for finding overlapping schedules. - * @param aResultArray On return, contains array of overlapping - * schedules, empty if none found. - * @return Generic symbian error code. - */ - void GetOverlappingSchedulesL( CCseScheduledProgram& aProgram, - RPointerArray& aResultArray ); - - /** - * Get list of scheduled events from the scheduling engine based on given plugin UID. - * @param aPluginUid Plugin UID. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - void GetSchedulesByPluginUidL( const TInt32 aPluginUid, - RPointerArray& aArray ) const; - - /** - * Get list of scheduled events from the scheduling engine based on given schedule type. - * @param aType Schedule type. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - void GetSchedulesByTypeL( const TInt32 aType, - RPointerArray& aArray ) const; - - /** - * Get list of scheduled events from the scheduling engine between given timeframe. - * @param aBeginning Beginning of the timeframe. - * @param aEnd End of the timeframe. - * @param aArray On return contains items from the database. - * @return Generic symbian error code. - */ - void GetSchedulesByTimeL( const TTime& aBegining, - const TTime& aEnd, - RPointerArray& aArray ) const; - }; - -#endif //__RCSESCHEDULERSERVICE_H__ - -// End of File - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerServiceBase.h --- a/videoutils_plat/videoscheduler_api/inc/ipvideo/RCseSchedulerServiceBase.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2006 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: Interface for Cse Scheduler engine Client's ServiceBase class.* -*/ - - - - - -#ifndef __RCSESCHEDULERSERVICEBASE_H -#define __RCSESCHEDULERSERVICEBASE_H - -// INCLUDES -#include - -// CONSTANTS -// None. - -// MACROS -// None. - -// DATA TYPES -// None. - -// FUNCTION PROTOTYPES -// None. - -// FORWARD DECLARATIONS -class RCseSchedulerClient; - -// CLASS DECLARATION - -/** -* Base class for services. This represents a client-side sub-session -* and has a corresponding sub-session object on the server-side. -* -* @lib CseSchedulerClient.dll -*/ -class RCseSchedulerServiceBase : public RSubSessionBase - { - public: - /** - * C++ default constructor. - */ - RCseSchedulerServiceBase(); - - /** - * Destructor. - * @return None. - */ - virtual ~RCseSchedulerServiceBase(); - - /** - * Open server. - * @param aServer - * @return KErrNone if successful, otherwise one of the system-wide error codes. - */ - TInt Open( RCseSchedulerClient& aClient ); - - /** - * Close server. - * @return None - */ - void Close(); - - /** - * Uses user panic to panic client. - * @param aFault Panic reason. - * @return None. - */ - void PanicClient( TInt aFault ) const; - - /** - * Sessionhandle - */ - inline RCseSchedulerClient& SessionHandle() const { return *iClient; } - - private: - - /** - * Pointer to client. Own. - */ - RCseSchedulerClient* iClient; - - }; - -#endif // __RCSESCHEDULERSERVICEBASE_H - -// End of File - - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/Bmarm/videoscheduler_apitestU.DEF --- a/videoutils_plat/videoscheduler_api/tsrc/Bmarm/videoscheduler_apitestU.DEF Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &) - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/Bwins/videoscheduler_apitestU.DEF --- a/videoutils_plat/videoscheduler_api/tsrc/Bwins/videoscheduler_apitestU.DEF Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &) - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/EABI/videoscheduler_apitestU.def --- a/videoutils_plat/videoscheduler_api/tsrc/EABI/videoscheduler_apitestU.def Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z9LibEntryLR13CTestModuleIf @ 1 NONAME - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/conf/atsconf.txt --- a/videoutils_plat/videoscheduler_api/tsrc/conf/atsconf.txt Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -;Run \vado\videoplayer\tsrc\testing\tools\genATSdrop.pl from -;the tsrc folder to create ATS3 drop. -[DROP] -NAME VaDo - videoutils_plat - videoscheduler_api -DEVICE INSERT_DEVICE -FLASH INSERT_FLASH_IMAGE -FLASH INSERT_FLASH_IMAGE -FLASH INSERT_FLASH_IMAGE -SIS \VideoApp_Domain\videoplayer\videoplayerapp\mpxvideoplayer\sis\VideoPlayer.sisx -PKG group\videoscheduler_apitest.pkg -INI init\TestFramework.ini 200 -EMAIL INSERT_EMAIL -RUN -[ENDDROP] diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/conf/videoscheduler_apitest.cfg --- a/videoutils_plat/videoscheduler_api/tsrc/conf/videoscheduler_apitest.cfg Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,295 +0,0 @@ -#*********************************************************************************** -# -# STIF test script file for testing videoscheduler. -# -#*********************************************************************************** - -[Test] -title ET00101 Program_NewL -create videoscheduler_apitest test -test Program_NewL -delete test -[Endtest] - -[Test] -title ET00102 Program_NewLFromProgram -create videoscheduler_apitest test -test Program_NewL -test Program_NewLFromProgram -delete test -[Endtest] - -[Test] -title ET00103 Program_Externalize -create videoscheduler_apitest test -test Program_NewL -test Program_Externalize -delete test -[Endtest] - -[Test] -title ET00104 Program_ExternalizeLength -create videoscheduler_apitest test -test Program_NewL -test Program_ExternalizeLength -delete test -[Endtest] - -[Test] -title ET00105 Program_Internalize -create videoscheduler_apitest test -test Program_NewL -test Program_Externalize -test Program_Internalize -delete test -[Endtest] - -[Test] -title ET00106 Program_PluginType -create videoscheduler_apitest test -test Program_NewL -test Program_SetPluginType 1 -test Program_PluginType 1 -delete test -[Endtest] - -[Test] -title ET00107 Program_Name -create videoscheduler_apitest test -test Program_NewL -test Program_SetName "Ohojelma" -test Program_Name "Ohojelma" -delete test -[Endtest] - -[Test] -title ET00108 Program_StartTime -create videoscheduler_apitest test -test Program_NewL -test Program_SetStartTime "20090217:142100.000000" -test Program_StartTime "20090217:142100.000000" -delete test -[Endtest] - -[Test] -title ET00109 Program_EndTime -create videoscheduler_apitest test -test Program_NewL -test Program_SetEndTime "20090217:142100.000000" -test Program_EndTime "20090217:142100.000000" -delete test -[Endtest] - -[Test] -title ET00110 Program_AppUid -create videoscheduler_apitest test -test Program_NewL -test Program_SetAppUid 666 -test Program_AppUid 666 -delete test -[Endtest] - -[Test] -title ET00111 Program_PluginUid -create videoscheduler_apitest test -test Program_NewL -test Program_SetPluginUid 666 -test Program_PluginUid 666 -delete test -[Endtest] - -[Test] -title ET00112 Program_ApplicationData -create videoscheduler_apitest test -test Program_NewL -test Program_SetApplicationData "Chuck Norris would never give up his whipped cream" -test Program_ApplicationData "Chuck Norris would never give up his whipped cream" -delete test -[Endtest] - -[Test] -title ET00113 Program_DbIdentifier -create videoscheduler_apitest test -test Program_NewL -test Program_SetDbIdentifier 666 -test Program_DbIdentifier 666 -delete test -[Endtest] - -[Test] -title ET00114 Program_ScheduleType Reminder -create videoscheduler_apitest test -test Program_NewL -test Program_SetScheduleType 0 -test Program_ScheduleType 0 -delete test -[Endtest] - -[Test] -title ET00115 Program_ScheduleType Recording -create videoscheduler_apitest test -test Program_NewL -test Program_SetScheduleType 1 -test Program_ScheduleType 1 -delete test -[Endtest] - -[Test] -title ET00116 Program_ScheduleType EPG Update -create videoscheduler_apitest test -test Program_NewL -test Program_SetScheduleType 2 -test Program_ScheduleType 2 -delete test -[Endtest] - -[Test] -title ET00117 Program_ScheduleType Scheduled download -create videoscheduler_apitest test -test Program_NewL -test Program_SetScheduleType 3 -test Program_ScheduleType 3 -delete test -[Endtest] - -[Test] -title ET00118 Program_ScheduleType Other -create videoscheduler_apitest test -test Program_NewL -test Program_SetScheduleType 4 -test Program_ScheduleType 4 -delete test -[Endtest] - -[Test] -title ET00119 Program_DebugDump -create videoscheduler_apitest test -test Program_NewL -test Program_DebugDump -delete test -[Endtest] - -[Test] -title ET00120 API_NewL -create videoscheduler_apitest test -test API_NewL 0 -delete test -[Endtest] - -[Test] -title ET00121 API_AddSchedule -create videoscheduler_apitest test -test API_NewL -test API_AddSchedule -delete test -[Endtest] - -[Test] -title ET00122 API_RemoveSchedule -create videoscheduler_apitest test -test API_NewL -test Program_SetToFuture 20 30 -test API_AddSchedule -test API_RemoveSchedule -delete test -[Endtest] - -[Test] -title ET00123 API_GetSchedule -create videoscheduler_apitest test -test API_NewL -test Program_SetToFuture 20 30 -test API_AddSchedule -test API_GetSchedule -test RemoveAllSchedules -delete test -[Endtest] - -[Test] -title ET00124 API_GetSchedulesByAppUid -create videoscheduler_apitest test -test API_NewL -test Program_SetAppUid 666 -test Program_SetToFuture 20 30 -test API_AddSchedule -pause 1000 -test API_GetSchedulesByAppUid 666 1 -test Program_AppUid 666 -test RemoveAllSchedules -delete test -[Endtest] - -[Test] -title ET00125 API_GetOverlappingSchedules -create videoscheduler_apitest test -test API_NewL -test Program_NewL -test Program_SetToFuture 30 60 -test API_AddSchedule -test Program_NewL -test Program_SetToFuture 30 60 -test API_AddSchedule -test Program_NewL -test Program_SetToFuture 30 60 -test API_AddSchedule -test API_GetOverlappingSchedules 3 -test RemoveAllSchedules -pause 2000 -test API_GetOverlappingSchedules 0 -delete test -[Endtest] - -[Test] -title ET00126 API_GetSchedulesByPluginUid -create videoscheduler_apitest test -test API_NewL -test Program_NewL -test Program_SetToFuture 20 30 -test Program_SetPluginUid 666 -test API_AddSchedule -test API_GetSchedulesByPluginUid 666 1 -test Program_PluginUid 666 -test RemoveAllSchedules -delete test -[Endtest] - -[Test] -title ET00127 API_GetSchedulesByType -create videoscheduler_apitest test -test API_NewL -test Program_NewL -test Program_SetToFuture 20 30 -test Program_SetScheduleType 0 -test API_AddSchedule -test API_GetSchedulesByType 0 1 -test Program_ScheduleType 0 -test RemoveAllSchedules -delete test -[Endtest] - -[Test] -title ET00128 API_GetSchedulesByTime -create videoscheduler_apitest test -test API_NewL -test Program_NewL -test Program_SetToFuture 20 30 -test API_AddSchedule -test API_GetSchedulesByTime 1 100 1 -test RemoveAllSchedules -delete test -[Endtest] - -[Test] -title ET00129 Schedule reminder, wait for launch -create videoscheduler_apitest test -test API_NewL -test Program_NewL -test Program_SetScheduleType 0 -test Program_SetToFuture 10 20 -test API_AddSchedule -test API_GetSchedule -pause 25000 -allownextresult -20 -test API_GetSchedule -delete test -[Endtest] \ No newline at end of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/custom/postrun_custom.xml --- a/videoutils_plat/videoscheduler_api/tsrc/custom/postrun_custom.xml Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - - - fetch-log - - - - - - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/custom/prerun_custom.xml --- a/videoutils_plat/videoscheduler_api/tsrc/custom/prerun_custom.xml Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - - - makedir - - - - diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/group/bld.inf --- a/videoutils_plat/videoscheduler_api/tsrc/group/bld.inf Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* Copyright (c) 2004-2005 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: -* -*/ - - -PRJ_PLATFORMS -// specify the platforms your component needs to be built for here -// defaults to WINS MARM so you can ignore this if you just build these -DEFAULT - -PRJ_TESTEXPORTS -../conf/videoscheduler_apitest.cfg /epoc32/data/z/system/data/videoscheduler_apitest.cfg -../conf/videoscheduler_apitest.cfg /epoc32/winscw/c/testframework/videoscheduler_apitest.cfg - -PRJ_EXPORTS - -PRJ_TESTMMPFILES -videoscheduler_apitest.mmp - -PRJ_MMPFILES - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/group/videoscheduler_apitest.mmp --- a/videoutils_plat/videoscheduler_api/tsrc/group/videoscheduler_apitest.mmp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2004-2005 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 - -TARGET videoscheduler_apitest.dll -TARGETTYPE dll -UID 0x1000008D 0x101FB3E3 - -CAPABILITY ALL -TCB -/* Remove comments and replace 0x00000000 with correct vendor id */ -// VENDORID 0x00000000 -/* Remove comments and replace 0x00000000 with correct secure id */ -// SECUREID 0x00000000 - -//TARGETPATH ?target_path -DEFFILE videoscheduler_apitest.def - -USERINCLUDE ../inc - -APP_LAYER_SYSTEMINCLUDE - -SOURCEPATH ../src - -SOURCE videoscheduler_apitest.cpp -SOURCE videoscheduler_apitestblocks.cpp - -//RESOURCE resource_file -//RESOURCE resource_file2 - -LIBRARY euser.lib -LIBRARY stiftestinterface.lib -LIBRARY stiftestengine.lib -LIBRARY CseSchedulerClient.lib // Common Scheduling Engine client -LIBRARY estor.lib -LIBRARY flogger.lib - -LANG SC - -// Other possible keywords: - -// DEFFILE ?filename -// AIF ?filename - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/group/videoscheduler_apitest.pkg --- a/videoutils_plat/videoscheduler_api/tsrc/group/videoscheduler_apitest.pkg Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +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 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: Package file for video scheduler API STIF tests; - -; Languages -&EN - -; Provide value for uid -#{"videoscheduler_apitest"},(0x00000000),1,1,0,TYPE=SA - -; Series60 product id for S60 3.0 -[0x101F7961], 0, 0, 0, {"Series60ProductID"} - -; Localised Vendor name -%{"Nokia"} - -; Unique Vendor name -:"Nokia" - -; Logo -; None - -; Package signature - Optional -; None - -; Start of Package body - -; Condition blocks -; None - -; Options list -; None - -; Install files -"/epoc32/release/armv5/udeb/videoscheduler_apitest.dll" - "!:/Sys/Bin/videoscheduler_apitest.dll" -"../conf/videoscheduler_apitest.cfg" - "C:/TestFramework/videoscheduler_apitest.cfg" -"../init/TestFramework.ini" - "C:/TestFramework/TestFramework.ini" - -; Embedded SIS -; None - -; End of Package body - -; PKG dependencies -; None - -; PKG capabilities -; None diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/inc/vcxtestlog.h --- a/videoutils_plat/videoscheduler_api/tsrc/inc/vcxtestlog.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2008 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: -* -*/ - - -#ifndef VCXTESTLOG_H -#define VCXTESTLOG_H - -// INCLUDES -#include -#include - -//#define FILE_LOGGING_IN_UREL_BUILD 1 - -// MACROS -#ifdef _DEBUG - -// SELECT LOG TYPE FROM HERE -// 0 = RDebug -// 1 = file logging -// 2 = no logging -#ifdef __WINSCW__ - #define LOGTYPE 0 -#else - #define LOGTYPE 1 -#endif __WINSCW__ - -#if LOGTYPE == 0 - - #define VCXLOGLO1(s) RDebug::Print(_L(#s)) - #define VCXLOGLO2(s, a) RDebug::Print(_L(#s), a) - #define VCXLOGLO3(s, a, b) RDebug::Print(_L(#s), a, b) - #define VCXLOGLO4(s, a, b, c) RDebug::Print(_L(#s), a, b, c) - #define VCXLOGLO5(s, a, b, c, d) RDebug::Print(_L(#s), a, b, c, d) - -#endif - -#if LOGTYPE == 1 - - #include - -_LIT(KIPTVLogFolder2,"Fusion"); -_LIT(KIPTVLogFile2,"Fusion.txt"); - - #define VCXLOGLO1(AAA) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::Write(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,tempIPTVLogDes()); } while ( EFalse ) - #define VCXLOGLO2(AAA,BBB) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB); } while ( EFalse ) - #define VCXLOGLO3(AAA,BBB,CCC) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC); } while ( EFalse ) - #define VCXLOGLO4(AAA,BBB,CCC,DDD) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC,DDD); } while ( EFalse ) - #define VCXLOGLO5(AAA,BBB,CCC,DDD,EEE) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC,DDD,EEE); } while ( EFalse ) - -#endif - -#if LOGTYPE == 2 - - #define VCXLOGLO1(s) - #define VCXLOGLO2(s, a) - #define VCXLOGLO3(s, a, b) - #define VCXLOGLO4(s, a, b, c) - #define VCXLOGLO5(s, a, b, c, d) - -#endif - -#else // _DEBUG - - #ifdef FILE_LOGGING_IN_UREL_BUILD - - #include - - _LIT(KIPTVLogFolder2,"Fusion"); - _LIT(KIPTVLogFile2,"Fusion.txt"); - - #define VCXLOGLO1(AAA) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::Write(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,tempIPTVLogDes()); } while ( EFalse ) - #define VCXLOGLO2(AAA,BBB) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB); } while ( EFalse ) - #define VCXLOGLO3(AAA,BBB,CCC) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC); } while ( EFalse ) - #define VCXLOGLO4(AAA,BBB,CCC,DDD) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC,DDD); } while ( EFalse ) - #define VCXLOGLO5(AAA,BBB,CCC,DDD,EEE) do { _LIT(tempIPTVLogDes,AAA); RFileLogger::WriteFormat(KIPTVLogFolder2(),KIPTVLogFile2(),EFileLoggingModeAppend,TRefByValue(tempIPTVLogDes()),BBB,CCC,DDD,EEE); } while ( EFalse ) - - #else // FILE_LOGGING_IN_UREL_BUILD - - #define VCXLOGLO1(s) - #define VCXLOGLO2(s, a) - #define VCXLOGLO3(s, a, b) - #define VCXLOGLO4(s, a, b, c) - #define VCXLOGLO5(s, a, b, c, d) - - #endif // FILE_LOGGING_IN_UREL_BUILD - -#endif // _DEBUG - - -#endif // VCXTESTLOG_H - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/inc/videoscheduler_apitest.h --- a/videoutils_plat/videoscheduler_api/tsrc/inc/videoscheduler_apitest.h Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,496 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description* -*/ - - - - -#ifndef VIDEOSCHEDULER_APITEST_H -#define VIDEOSCHEDULER_APITEST_H - -// INCLUDES -#include -#include -#include -#include - -// CONSTANTS -//const ?type ?constant_var = ?constant; - -// MACROS -//#define ?macro ?macro_def -#define TEST_CLASS_VERSION_MAJOR 0 -#define TEST_CLASS_VERSION_MINOR 0 -#define TEST_CLASS_VERSION_BUILD 0 - -// Logging path -_LIT( KVideoScheduler_ApiTestLogPath, "\\logs\\testframework\\VideoScheduler_ApiTest\\" ); -// Log file -_LIT( KVideoScheduler_ApiTestLogFile, "VideoScheduler_ApiTest.txt" ); -_LIT( KVideoScheduler_ApiTestLogFileWithTitle, "VideoScheduler_ApiTest_[%S].txt" ); - -_LIT( KTestModuleName, "VideoScheduler_ApiTest" ); -_LIT( KLogLocation, "In %S" ); - -// FUNCTION PROTOTYPES -//?type ?function_name(?arg_list); - -// FORWARD DECLARATIONS -//class ?FORWARD_CLASSNAME; -class CVideoScheduler_ApiTest; -class CCseScheduledProgram; -class CCseSchedulerApi; - -// DATA TYPES -//enum ?declaration -//typedef ?declaration -//extern ?data_type; - -// CLASS DECLARATION - -/** -* CVideoScheduler_ApiTest test class for STIF Test Framework TestScripter. -* ?other_description_lines -* -* @lib ?library -* @since ?Series60_version -*/ -NONSHARABLE_CLASS(CVideoScheduler_ApiTest) : public CScriptBase - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CVideoScheduler_ApiTest* NewL( CTestModuleIf& aTestModuleIf ); - - /** - * Destructor. - */ - virtual ~CVideoScheduler_ApiTest(); - - public: // New functions - - /** - * ?member_description. - * @since ?Series60_version - * @param ?arg1 ?description - * @return ?description - */ - //?type ?member_function( ?type ?arg1 ); - - /** - * CompareProgramsL - * @since ?Series60_version - * @param aProgram1 - * @param aProgram2 - * @return Symbian OS error code. - */ - TInt ComparePrograms( CCseScheduledProgram& aProgram1, CCseScheduledProgram& aProgram2 ); - - /** - * LogMethod - * @since ?Series60_version - * @param aMethod Name of the method where this function is called - * @return Nothing - */ - void LogMethod( TPtrC aMethod ); - - public: // Functions from base classes - - /** - * From CScriptBase Runs a script line. - * @since ?Series60_version - * @param aItem Script line containing method name and parameters - * @return Symbian OS error code - */ - virtual TInt RunMethodL( CStifItemParser& aItem ); - - protected: // New functions - - /** - * ?member_description. - * @since ?Series60_version - * @param ?arg1 ?description - * @return ?description - */ - //?type ?member_function( ?type ?arg1 ); - - protected: // Functions from base classes - - /** - * From ?base_class ?member_description - */ - //?type ?member_function(); - - private: - - /** - * C++ default constructor. - */ - CVideoScheduler_ApiTest( CTestModuleIf& aTestModuleIf ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - // Prohibit copy constructor if not deriving from CBase. - // ?classname( const ?classname& ); - // Prohibit assigment operator if not deriving from CBase. - // ?classname& operator=( const ?classname& ); - - /** - * Frees all resources allocated from test methods. - * @since ?Series60_version - */ - void Delete(); - - /** - * Test methods are listed below. - * - * Methods starting with API_ test CCseSchedulerAPI class. - * - * Methods starting with Program_ test CCseScheduledProgram class. Test class has member - * instance of this class and it's used when CCseSchedulerAPI methods need the program data. - * - * Default app uid for programs is 0x020202, all these will be removed - * when API_NewL is called without parameter 0. - */ - - /** - * API_NewL test method. - * Creates also CCseScheduledProgram if parameter is not 0. - * - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_NewL( CStifItemParser& aItem ); - - /** - * API_AddSchedule test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_AddScheduleL( CStifItemParser& aItem ); - - /** - * API_RemoveSchedule test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_RemoveScheduleL( CStifItemParser& aItem ); - - /** - * API_RemoveSchedule test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt RemoveAllSchedulesL( CStifItemParser& aItem ); - - /** - * API_GetSchedule test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetScheduleL( CStifItemParser& aItem ); - - /** - * API_GetSchedulesByAppUid test method. - * First schedule is copied to member variable. - * - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetSchedulesByAppUidL( CStifItemParser& aItem ); - - /** - * API_GetOverlappingSchedules test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetOverlappingSchedulesL( CStifItemParser& aItem ); - - /** - * API_GetSchedulesByPluginUidL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetSchedulesByPluginUidL( CStifItemParser& aItem ); - - /** - * API_GetSchedulesByTypeL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetSchedulesByTypeL( CStifItemParser& aItem ); - - /** - * API_GetSchedulesByTimeL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt API_GetSchedulesByTimeL( CStifItemParser& aItem ); - - /** - * Program_NewL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_NewL( CStifItemParser& aItem ); - - /** - * Program_NewLFromProgramL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_NewLFromProgramL( CStifItemParser& aItem ); - - /** - * Program_ExternalizeL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_ExternalizeLL( CStifItemParser& aItem ); - - /** - * Program_InternalizeL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_InternalizeLL( CStifItemParser& aItem ); - - /** - * Program_ExternalizeLength test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_ExternalizeLengthL( CStifItemParser& aItem ); - - /** - * Program_SetPluginType test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetPluginTypeL( CStifItemParser& aItem ); - - /** - * Program_SetName test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetNameL( CStifItemParser& aItem ); - - /** - * Program_SetStartTime test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetStartTimeL( CStifItemParser& aItem ); - - /** - * Program_SetEndTime test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetEndTimeL( CStifItemParser& aItem ); - - /** - * Program_SetAppUid test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetAppUidL( CStifItemParser& aItem ); - - /** - * Program_SetPluginUid test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetPluginUidL( CStifItemParser& aItem ); - - /** - * Program_SetApplicationDataL test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetApplicationDataLL( CStifItemParser& aItem ); - - /** - * Program_SetDbIdentifier test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetDbIdentifierL( CStifItemParser& aItem ); - - /** - * Program_SetScheduleType test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetScheduleTypeL( CStifItemParser& aItem ); - - /** - * Program_PluginType test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_PluginTypeL( CStifItemParser& aItem ); - - /** - * Program_Name test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_NameL( CStifItemParser& aItem ); - - /** - * Program_StartTime test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_StartTimeL( CStifItemParser& aItem ); - - /** - * Program_EndTime test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_EndTimeL( CStifItemParser& aItem ); - - /** - * Program_EndTime test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_SetToFutureL( CStifItemParser& aItem ); - - /** - * Program_AppUid test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_AppUidL( CStifItemParser& aItem ); - - /** - * Program_PluginUid test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_PluginUidL( CStifItemParser& aItem ); - - /** - * Program_ApplicationData test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_ApplicationDataL( CStifItemParser& aItem ); - - /** - * Program_DbIdentifier test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_DbIdentifierL( CStifItemParser& aItem ); - - /** - * Program_ScheduleType test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_ScheduleTypeL( CStifItemParser& aItem ); - - /** - * Program_DebugDump test method. - * @since ?Series60_version - * @param aItem Script line containing parameters. - * @return Symbian OS error code. - */ - virtual TInt Program_DebugDumpL( CStifItemParser& aItem ); - - /** - * Method used to log version of test class - */ - void SendTestClassVersion(); - - //ADD NEW METHOD DEC HERE - //[TestMethods] - Do not remove - - public: // Data - // ?one_line_short_description_of_data - //?data_declaration; - - protected: // Data - // ?one_line_short_description_of_data - //?data_declaration; - - private: // Data - - // ?one_line_short_description_of_data - //?data_declaration; - - // Reserved pointer for future extension - //TAny* iReserved; - - public: // Friend classes - //?friend_class_declaration; - protected: // Friend classes - //?friend_class_declaration; - private: // Friend classes - //?friend_class_declaration; - - CCseSchedulerApi* iApi; - CCseScheduledProgram* iProgram; - HBufC8* iExternalizeBuff; - RArray iAddedProgramIds; - }; - -#endif // VIDEOSCHEDULER_APITEST_H - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/init/TestFramework.ini --- a/videoutils_plat/videoscheduler_api/tsrc/init/TestFramework.ini Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -# -# This is STIFTestFramework initialization file -# Comment lines start with '#'-character. -# See STIF TestFramework users guide.doc for instructions - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Set following test engine settings: -# - Set Test Reporting mode. TestReportMode's possible values are: -# + 'Summary': Summary of the tested test cases. -# + 'Environment': Hardware and software info. -# + 'TestCases': Test case report. -# + 'FullReport': Set of all above ones. -# + Example 'TestReportMode= Summary TestCases' -# -# - CreateTestReport setting controls report creation mode -# + YES, Test report will created. -# + NO, No Test report. -# -# - File path indicates the base path of the test report. -# - File name indicates the name of the test report. -# -# - File format indicates the type of the test report. -# + TXT, Test report file will be txt type, for example 'TestReport.txt'. -# + HTML, Test report will be html type, for example 'TestReport.html'. -# -# - File output indicates output source of the test report. -# + FILE, Test report logging to file. -# + RDEBUG, Test report logging to using rdebug. -# -# - File Creation Mode indicates test report overwriting if file exist. -# + OVERWRITE, Overwrites if the Test report file exist. -# + APPEND, Continue logging after the old Test report information if -# report exist. - -[Engine_Defaults] - -TestReportMode= FullReport # Possible values are: - # 'Summary', 'Environment', 'TestCases' or 'FullReport' - -CreateTestReport= YES # Possible values: YES or NO - -TestReportFilePath= C:\Logs\Fusion\ -TestReportFileName= TestReport - -TestReportFormat= TXT # Possible values: TXT or HTML -TestReportOutput= FILE # Possible values: FILE or RDEBUG -TestReportFileCreationMode= APPEND # Possible values: OVERWRITE or APPEND -UITestingSupport= Yes -SeparateProcesses= YES -[End_Defaults] -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Module configurations start -# Modules are added between module tags -# tags. Module name is specified after ModuleName= tag, like -# ModuleName= XXXXXXXXX -# Modules might have initialisation file, specified as -# IniFile= c:\testframework\YYYYYY -# Modules might have several configuration files, like -# TestCaseFile= c:\testframework\NormalCases.txt -# TestCaseFile= c:\testframework\SmokeCases.txt -# TestCaseFile= c:\testframework\ManualCases.txt - -# (TestCaseFile is synonym for old term ConfigFile) - -# Following case specifies demo module settings. Demo module -# does not read any settings from file, so tags -# IniFile and TestCaseFile are not used. -# In the simplest case it is enough to specify only the -# name of the test module when adding new test module - -[New_Module] -ModuleName= TestScripter -TestCaseFile= c:\TestFramework\videoscheduler_apitest.cfg -[End_Module] - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Set STIFTestFramework logging overwrite parameters for Logger. -# Hardware and emulator environment logging path and styles can -# be configured from here to overwrite the Logger's implemented values. -# -# Settings description: -# - Indicates option for creation log directory/directories. If log directory/directories -# is/are not created by user they will make by software. -# + YES, Create log directory/directories if not allready exist. -# + NO, Log directory/directories not created. Only created one is used. -# -# - Overwrite emulator path setting. -# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined -# Logger's path 'D:\\LOGS\\Module\\' with those definition the path -# will be 'C:\LOGS\TestFramework\LOGS\Module\' -# -# - Overwrite emulator's logging format. -# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'. -# + HTML, Log file(s) will be html type(s), for example 'Module.html'. -# -# - Overwrited emulator logging output source. -# + FILE, Logging to file(s). -# + RDEBUG, Logging to using rdebug(s). -# -# - Overwrite hardware path setting (Same description as above in emulator path). -# - Overwrite hardware's logging format(Same description as above in emulator format). -# - Overwrite hardware's logging output source(Same description as above in emulator output). -# -# - File Creation Mode indicates file overwriting if file exist. -# + OVERWRITE, Overwrites if file(s) exist. -# + APPEND, Continue logging after the old logging information if file(s) exist. -# -# - Will thread id include to the log filename. -# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'. -# + NO, No thread id to log file(s), Example filename 'Module.txt'. -# -# - Will time stamps include the to log file. -# + YES, Time stamp added to each line in log file(s). Time stamp is -# for example'12.Nov.2003 115958 LOGGING INFO' -# + NO, No time stamp(s). -# -# - Will line breaks include to the log file. -# + YES, Each logging event includes line break and next log event is in own line. -# + NO, No line break(s). -# -# - Will event ranking include to the log file. -# + YES, Event ranking number added to each line in log file(s). Ranking number -# depends on environment's tics, for example(includes time stamp also) -# '012 12.Nov.2003 115958 LOGGING INFO' -# + NO, No event ranking. -# -# - Will write log file in unicode format. -# + YES, Log file will be written in unicode format -# + NO, Log will be written as normal, not unicode, file. -# - -[Logger_Defaults] - -#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' - -CreateLogDirectories= YES # Possible values: YES or NO - -#EmulatorBasePath= C:\LOGS\TestFramework\ -#EmulatorFormat= HTML # Possible values: TXT or HTML -#EmulatorOutput= FILE # Possible values: FILE or RDEBUG - -#HardwareBasePath= C:\ -#HardwareFormat= TXT # Possible values: TXT or HTML -#HardwareOutput= FILE # Possible values: FILE or RDEBUG - -FileCreationMode= APPEND # Possible values: OVERWRITE or APPEND - -#ThreadIdToLogFile= YES # Possible values: YES or NO -#WithTimeStamp= YES # Possible values: YES or NO -#WithLineBreak= YES # Possible values: YES or NO -#WithEventRanking= YES # Possible values: YES or NO - -[End_Logger_Defaults] -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - -# End of file diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/src/videoscheduler_apitest.cpp --- a/videoutils_plat/videoscheduler_api/tsrc/src/videoscheduler_apitest.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description* -*/ - - - - -// INCLUDE FILES -#include -#include "videoscheduler_apitest.h" -#include - -// EXTERNAL DATA STRUCTURES -//extern ?external_data; - -// EXTERNAL FUNCTION PROTOTYPES -//extern ?external_function( ?arg_type,?arg_type ); - -// CONSTANTS -//const ?type ?constant_var = ?constant; - -// MACROS -//#define ?macro ?macro_def - -// LOCAL CONSTANTS AND MACROS -//const ?type ?constant_var = ?constant; -//#define ?macro_name ?macro_def - -// MODULE DATA STRUCTURES -//enum ?declaration -//typedef ?declaration - -// LOCAL FUNCTION PROTOTYPES -//?type ?function_name( ?arg_type, ?arg_type ); - -// FORWARD DECLARATIONS -//class ?FORWARD_CLASSNAME; - -// ============================= LOCAL FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// ?function_name ?description. -// ?description -// Returns: ?value_1: ?description -// ?value_n: ?description_line1 -// ?description_line2 -// ----------------------------------------------------------------------------- -// -/* -?type ?function_name( - ?arg_type arg, // ?description - ?arg_type arg) // ?description - { - - ?code // ?comment - - // ?comment - ?code - } -*/ - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::CVideoScheduler_ApiTest -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CVideoScheduler_ApiTest::CVideoScheduler_ApiTest( - CTestModuleIf& aTestModuleIf ): - CScriptBase( aTestModuleIf ) - { - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CVideoScheduler_ApiTest::ConstructL() - { - //Read logger settings to check whether test case name is to be - //appended to log file name. - RSettingServer settingServer; - TInt ret = settingServer.Connect(); - if(ret != KErrNone) - { - User::Leave(ret); - } - // Struct to StifLogger settigs. - TLoggerSettings loggerSettings; - // Parse StifLogger defaults from STIF initialization file. - ret = settingServer.GetLoggerSettings(loggerSettings); - if(ret != KErrNone) - { - User::Leave(ret); - } - // Close Setting server session - settingServer.Close(); - - TFileName logFileName; - - if(loggerSettings.iAddTestCaseTitle) - { - TName title; - TestModuleIf().GetTestCaseTitleL(title); - logFileName.Format(KVideoScheduler_ApiTestLogFileWithTitle, &title); - } - else - { - logFileName.Copy(KVideoScheduler_ApiTestLogFile); - } - - iLog = CStifLogger::NewL( KVideoScheduler_ApiTestLogPath, - logFileName, - CStifLogger::ETxt, - CStifLogger::EFile, - EFalse ); - - SendTestClassVersion(); - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CVideoScheduler_ApiTest* CVideoScheduler_ApiTest::NewL( - CTestModuleIf& aTestModuleIf ) - { - CVideoScheduler_ApiTest* self = new (ELeave) CVideoScheduler_ApiTest( aTestModuleIf ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - - } - -// Destructor -CVideoScheduler_ApiTest::~CVideoScheduler_ApiTest() - { - - // Delete resources allocated from test methods - Delete(); - - // Delete logger - delete iLog; - - } - -//----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::SendTestClassVersion -// Method used to send version of test class -//----------------------------------------------------------------------------- -// -void CVideoScheduler_ApiTest::SendTestClassVersion() - { - TVersion moduleVersion; - moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR; - moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR; - moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD; - - TFileName moduleName; - moduleName = _L("VideoScheduler_ApiTest.dll"); - - TBool newVersionOfMethod = ETrue; - TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod); - } - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - -// ----------------------------------------------------------------------------- -// LibEntryL is a polymorphic Dll entry point. -// Returns: CScriptBase: New CScriptBase derived object -// ----------------------------------------------------------------------------- -// -EXPORT_C CScriptBase* LibEntryL( - CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework - { - - return ( CScriptBase* ) CVideoScheduler_ApiTest::NewL( aTestModuleIf ); - - } - - -// End of File diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/tsrc/src/videoscheduler_apitestblocks.cpp --- a/videoutils_plat/videoscheduler_api/tsrc/src/videoscheduler_apitestblocks.cpp Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1162 +0,0 @@ -/* -* Copyright (c) 2002 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: ?Description* -*/ - - - - -// [INCLUDE FILES] - do not remove -#include -#include -#include -#include "videoscheduler_apitest.h" -#include - -#include -#include - -#include "vcxtestlog.h" - -// EXTERNAL DATA STRUCTURES -//extern ?external_data; - -// EXTERNAL FUNCTION PROTOTYPES -//extern ?external_function( ?arg_type,?arg_type ); - -// CONSTANTS -//const ?type ?constant_var = ?constant; - -// MACROS -//#define ?macro ?macro_def - -// LOCAL CONSTANTS AND MACROS -//const ?type ?constant_var = ?constant; -//#define ?macro_name ?macro_def - -// MODULE DATA STRUCTURES -//enum ?declaration -//typedef ?declaration - -// LOCAL FUNCTION PROTOTYPES -//?type ?function_name( ?arg_type, ?arg_type ); - -// FORWARD DECLARATIONS -//class ?FORWARD_CLASSNAME; - -// ============================= LOCAL FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// ?function_name ?description. -// ?description -// Returns: ?value_1: ?description -// ?value_n: ?description_line1 -// ?description_line2 -// ----------------------------------------------------------------------------- -// -/* -?type ?function_name( - ?arg_type arg, // ?description - ?arg_type arg) // ?description - { - - ?code // ?comment - - // ?comment - ?code - } -*/ - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Delete -// Delete here all resources allocated and opened from test methods. -// Called from destructor. -// ----------------------------------------------------------------------------- -// -void CVideoScheduler_ApiTest::Delete() - { - if( iApi ) - { - for( TInt i=0; iRemoveSchedule( iAddedProgramIds[i] ); - } - } - - delete iApi; - iApi = NULL; - - delete iProgram; - iProgram = NULL; - - delete iExternalizeBuff; - iExternalizeBuff = NULL; - - iAddedProgramIds.Close(); - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::RunMethodL -// Run specified method. Contains also table of test mothods and their names. -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::RunMethodL( - CStifItemParser& aItem ) - { - - static TStifFunctionInfo const KFunctions[] = - { - // Copy this line for every implemented function. - // First string is the function name used in TestScripter script file. - // Second is the actual implementation member function. - ENTRY( "API_NewL", CVideoScheduler_ApiTest::API_NewL ), - ENTRY( "API_AddSchedule", CVideoScheduler_ApiTest::API_AddScheduleL ), - ENTRY( "API_RemoveSchedule", CVideoScheduler_ApiTest::API_RemoveScheduleL ), - ENTRY( "RemoveAllSchedules", CVideoScheduler_ApiTest::RemoveAllSchedulesL ), - ENTRY( "API_GetSchedule", CVideoScheduler_ApiTest::API_GetScheduleL ), - ENTRY( "API_GetSchedulesByAppUid", CVideoScheduler_ApiTest::API_GetSchedulesByAppUidL ), - ENTRY( "API_GetOverlappingSchedules", CVideoScheduler_ApiTest::API_GetOverlappingSchedulesL ), - ENTRY( "API_GetSchedulesByPluginUid", CVideoScheduler_ApiTest::API_GetSchedulesByPluginUidL ), - ENTRY( "API_GetSchedulesByType", CVideoScheduler_ApiTest::API_GetSchedulesByTypeL ), - ENTRY( "API_GetSchedulesByTime", CVideoScheduler_ApiTest::API_GetSchedulesByTimeL ), - - ENTRY( "Program_NewL", CVideoScheduler_ApiTest::Program_NewL ), - ENTRY( "Program_NewLFromProgram", CVideoScheduler_ApiTest::Program_NewLFromProgramL ), - ENTRY( "Program_Externalize", CVideoScheduler_ApiTest::Program_ExternalizeLL ), - ENTRY( "Program_Internalize", CVideoScheduler_ApiTest::Program_InternalizeLL ), - ENTRY( "Program_ExternalizeLength", CVideoScheduler_ApiTest::Program_ExternalizeLengthL ), - ENTRY( "Program_SetPluginType", CVideoScheduler_ApiTest::Program_SetPluginTypeL ), - ENTRY( "Program_SetName", CVideoScheduler_ApiTest::Program_SetNameL ), - ENTRY( "Program_SetStartTime", CVideoScheduler_ApiTest::Program_SetStartTimeL ), - ENTRY( "Program_SetEndTime", CVideoScheduler_ApiTest::Program_SetEndTimeL ), - ENTRY( "Program_SetAppUid", CVideoScheduler_ApiTest::Program_SetAppUidL ), - ENTRY( "Program_SetPluginUid", CVideoScheduler_ApiTest::Program_SetPluginUidL ), - ENTRY( "Program_SetApplicationData", CVideoScheduler_ApiTest::Program_SetApplicationDataLL ), - ENTRY( "Program_SetDbIdentifier", CVideoScheduler_ApiTest::Program_SetDbIdentifierL ), - ENTRY( "Program_SetScheduleType", CVideoScheduler_ApiTest::Program_SetScheduleTypeL ), - ENTRY( "Program_PluginType", CVideoScheduler_ApiTest::Program_PluginTypeL ), - ENTRY( "Program_Name", CVideoScheduler_ApiTest::Program_NameL ), - ENTRY( "Program_StartTime", CVideoScheduler_ApiTest::Program_StartTimeL ), - ENTRY( "Program_EndTime", CVideoScheduler_ApiTest::Program_EndTimeL ), - ENTRY( "Program_AppUid", CVideoScheduler_ApiTest::Program_AppUidL ), - ENTRY( "Program_PluginUid", CVideoScheduler_ApiTest::Program_PluginUidL ), - ENTRY( "Program_ApplicationData", CVideoScheduler_ApiTest::Program_ApplicationDataL ), - ENTRY( "Program_DbIdentifier", CVideoScheduler_ApiTest::Program_DbIdentifierL ), - ENTRY( "Program_ScheduleType", CVideoScheduler_ApiTest::Program_ScheduleTypeL ), - ENTRY( "Program_DebugDump", CVideoScheduler_ApiTest::Program_DebugDumpL ), - - ENTRY( "Program_SetToFuture", CVideoScheduler_ApiTest::Program_SetToFutureL ), - // [test cases entries] - Do not remove - - }; - - const TInt count = sizeof( KFunctions ) / - sizeof( TStifFunctionInfo ); - - return RunInternalL( KFunctions, count, aItem ); - - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::LogMethod -// Generate log from current method -// ----------------------------------------------------------------------------- -// -void CVideoScheduler_ApiTest::LogMethod( TPtrC aMethod ) - { - // Print to UI - TBuf< 64 > buffer; - buffer.Format( KLogLocation, &aMethod ); - TestModuleIf().Printf( 0, KTestModuleName, buffer ); - // Print to log file - iLog->Log( buffer ); - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_NewL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_NewL( CStifItemParser& aItem ) - { - LogMethod(_L("API_NewL")); - - TInt err( KErrNone ); - - iApi = CCseSchedulerApi::NewL(); - - TInt createProgram( 1 ); - if( aItem.GetNextInt( createProgram ) != KErrNone ) - { - createProgram = 1; - } - - if( createProgram == 1 ) - { - iProgram = CCseScheduledProgram::NewL(); - - RPointerArray programs; - err = iApi->GetSchedulesByAppUid( 0x020202, programs ); - if( err == KErrNone ) - { - for( TInt i=0; i < programs.Count(); i++ ) - { - iApi->RemoveSchedule( programs[i]->DbIdentifier() ); - } - } - programs.ResetAndDestroy(); - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_AddScheduleL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_AddScheduleL( CStifItemParser& /*aItem*/ ) - { - LogMethod(_L("API_AddSchedule")); - VCXLOGLO1("CVideoScheduler_ApiTest::API_AddScheduleL ------>"); - - TInt err( KErrNone ); - - err = iApi->AddSchedule( *iProgram ); - VCXLOGLO2("CVideoScheduler_ApiTest::API_AddScheduleL: DBID after: %d", iProgram->DbIdentifier() ); - iAddedProgramIds.Append( iProgram->DbIdentifier() ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_RemoveScheduleL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_RemoveScheduleL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_RemoveScheduleL ------>"); - LogMethod(_L("API_RemoveScheduleL")); - - TInt err( KErrNone ); - - VCXLOGLO2("CVideoScheduler_ApiTest::API_RemoveScheduleL: DBID: %d", iProgram->DbIdentifier() ); - - TUint32 id = iProgram->DbIdentifier(); - err = iApi->RemoveSchedule( id ); - - for( TInt i=0; i"); - LogMethod(_L("RemoveAllSchedulesL")); - - TInt err( KErrNone ); - - while( iAddedProgramIds.Count() ) - { - VCXLOGLO2("CVideoScheduler_ApiTest::RemoveAllSchedulesL -- remove ID %d", iAddedProgramIds[0]); - err = iApi->RemoveSchedule( iAddedProgramIds[0] ); - - iAddedProgramIds.Remove( 0 ); - - if( err != KErrNone ) - { - VCXLOGLO2("CVideoScheduler_ApiTest::RemoveAllSchedulesL -- Failed: %d", err); - } - } - - VCXLOGLO2("CVideoScheduler_ApiTest::RemoveAllSchedulesL <------ %d", err); - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetScheduleL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetScheduleL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetScheduleL ------>"); - LogMethod(_L("API_GetScheduleL")); - - TInt err( KErrNone ); - - CCseScheduledProgram* program = CCseScheduledProgram::NewL(); - CleanupStack::PushL( program ); - - err = iApi->GetSchedule( iProgram->DbIdentifier(), program ); - - if( err == KErrNone ) - { - if( !program ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetScheduleL: Error, program is NULL."); - err = KErrCorrupt; - } - else - { - err = ComparePrograms( *program, *iProgram ); - } - } - - CleanupStack::PopAndDestroy( program ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetSchedulesByAppUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetSchedulesByAppUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetSchedulesByAppUidL ------>"); - LogMethod(_L("API_GetSchedulesByAppUidL")); - - TInt err( KErrNone ); - - TInt appUid( 0 ); - User::LeaveIfError( aItem.GetNextInt( appUid ) ); - - TInt expectedCount(0); - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); - - RPointerArray programs; - - err = iApi->GetSchedulesByAppUid( appUid, programs ); - - if( err == KErrNone ) - { - if( programs.Count() != expectedCount ) - { - err = KErrCorrupt; - } - else - if( programs.Count() > 0 ) - { - delete iProgram; - iProgram = NULL; - - iProgram = programs[0]; - programs.Remove( 0 ); - } - } - - programs.ResetAndDestroy(); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetOverlappingSchedulesL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetOverlappingSchedulesL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetOverlappingSchedulesL ------>"); - LogMethod(_L("API_GetOverlappingSchedulesL")); - - TInt err( KErrNone ); - - TInt expectedCount(0); - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); - - RPointerArray programs; - - err = iApi->GetOverlappingSchedules( *iProgram, programs ); - - if( err == KErrNone ) - { - if( programs.Count() != expectedCount ) - { - err = KErrCorrupt; - } - else - if( programs.Count() > 0 ) - { - delete iProgram; - iProgram = NULL; - - iProgram = programs[0]; - programs.Remove( 0 ); - } - } - - programs.ResetAndDestroy(); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetSchedulesByPluginUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetSchedulesByPluginUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetSchedulesByPluginUidL ------>"); - LogMethod(_L("API_GetSchedulesByPluginUidL")); - - TInt err( KErrNone ); - - TInt pluginUid( 0 ); - User::LeaveIfError( aItem.GetNextInt( pluginUid ) ); - - TInt expectedCount(0); - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); - - RPointerArray programs; - - err = iApi->GetSchedulesByPluginUid( pluginUid, programs ); - - if( err == KErrNone ) - { - if( programs.Count() != expectedCount ) - { - err = KErrCorrupt; - } - else - if( programs.Count() > 0 ) - { - delete iProgram; - iProgram = NULL; - - iProgram = programs[0]; - programs.Remove( 0 ); - } - } - - programs.ResetAndDestroy(); - - return err; - } - - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetSchedulesByTypeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetSchedulesByTypeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetSchedulesByTypeL ------>"); - LogMethod(_L("API_GetSchedulesByTypeL")); - - TInt err( KErrNone ); - - TInt type(0); - User::LeaveIfError( aItem.GetNextInt( type ) ); - - TInt expectedCount(0); - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); - - RPointerArray programs; - - err = iApi->GetSchedulesByType( type, programs ); - - if( err == KErrNone ) - { - VCXLOGLO2("CVideoScheduler_ApiTest::API_GetSchedulesByTypeL count: %d", programs.Count()); - VCXLOGLO2("CVideoScheduler_ApiTest::API_GetSchedulesByTypeL expected: %d", expectedCount); - if( programs.Count() != expectedCount ) - { - err = KErrCorrupt; - } - else - if( programs.Count() > 0 ) - { - delete iProgram; - iProgram = NULL; - - iProgram = programs[0]; - programs.Remove( 0 ); - } - } - - programs.ResetAndDestroy(); - - return err; - } - - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::API_GetSchedulesByTimeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::API_GetSchedulesByTimeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_GetSchedulesByTimeL ------>"); - LogMethod(_L("API_GetSchedulesByTimeL")); - - TInt err( KErrNone ); - TInt intervalStart( 0 ); - TInt intervalEnd( 0 ); - - User::LeaveIfError( aItem.GetNextInt( intervalStart ) ); - User::LeaveIfError( aItem.GetNextInt( intervalEnd ) ); - - TTime startTime( 0 ); - TTime endTime( 0 ); - - startTime.UniversalTime(); - endTime.UniversalTime(); - - startTime += TTimeIntervalSeconds( intervalStart ); - endTime += TTimeIntervalSeconds( intervalEnd ); - - TInt expectedCount(0); - User::LeaveIfError( aItem.GetNextInt( expectedCount ) ); - - RPointerArray programs; - - err = iApi->GetSchedulesByTime( startTime, endTime, programs ); - - if( err == KErrNone ) - { - if( programs.Count() != expectedCount ) - { - err = KErrCorrupt; - } - else - if( programs.Count() > 0 ) - { - delete iProgram; - iProgram = NULL; - - iProgram = programs[0]; - programs.Remove( 0 ); - } - } - - programs.ResetAndDestroy(); - - return err; - } - - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_NewL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_NewL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_NewL ------>"); - LogMethod(_L("Program_NewL")); - - TInt err( KErrNone ); - - iProgram = CCseScheduledProgram::NewL(); - iProgram->SetAppUid( 0x020202 ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_NewLFromProgramL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_NewLFromProgramL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_NewLFromProgramL ------>"); - LogMethod(_L("Program_NewLFromProgramL")); - - TInt err( KErrNone ); - - CCseScheduledProgram* program = iProgram; - iProgram = NULL; - - CleanupStack::PushL( program ); - iProgram = CCseScheduledProgram::NewL( *program ); - CleanupStack::PopAndDestroy( program ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_ExternalizeLL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_ExternalizeLL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_ExternalizeLL ------>"); - LogMethod(_L("Program_ExternalizeLL")); - - TInt err( KErrNone ); - - TUint32 dataSize = iProgram->ExternalizeLength(); - - delete iExternalizeBuff; - iExternalizeBuff = NULL; - iExternalizeBuff = HBufC8::NewL( dataSize ); - TPtr8 buffPtr( iExternalizeBuff->Des() ); - - RDesWriteStream stream; - stream.Open( buffPtr ); - iProgram->ExternalizeL( stream ); - stream.CommitL(); - stream.Close(); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_InternalizeLL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_InternalizeLL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_InternalizeLL ------>"); - LogMethod(_L("Program_InternalizeLL")); - - TInt err( KErrNone ); - - CCseScheduledProgram* program = CCseScheduledProgram::NewL(); - CleanupStack::PushL( program ); - - RDesReadStream stream; - TPtr8 buffPtr( iExternalizeBuff->Des() ); - stream.Open( buffPtr ); - program->InternalizeL( stream ); - stream.Close(); - - err = ComparePrograms( *program, *iProgram ); - - CleanupStack::PopAndDestroy( program ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_ExternalizeLengthL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_ExternalizeLengthL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_ExternalizeLengthL ------>"); - LogMethod(_L("Program_ExternalizeLengthL")); - - TInt err( KErrNone ); - - iProgram->ExternalizeLength(); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetPluginTypeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetPluginTypeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetPluginTypeL ------>"); - LogMethod(_L("Program_SetPluginTypeL")); - - TInt err( KErrNone ); - - TInt pluginType; - User::LeaveIfError( aItem.GetNextInt( pluginType ) ); - - iProgram->SetPluginType( pluginType ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetNameL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetNameL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetNameL ------>"); - LogMethod(_L("Program_SetNameL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC name; - User::LeaveIfError( aItem.GetNextString( name ) ); - - TBuf8<1024> name8; - name8.Copy( name ); - - iProgram->SetName( name8 ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetStartTimeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetStartTimeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetStartTimeL ------>"); - LogMethod(_L("Program_SetStartTimeL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC dayString; - User::LeaveIfError( aItem.GetNextString( dayString ) ); - - TTime time( dayString ); - - iProgram->SetStartTime( time ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetEndTimeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetEndTimeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetEndTimeL ------>"); - LogMethod(_L("Program_SetEndTimeL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC dayString; - User::LeaveIfError( aItem.GetNextString( dayString ) ); - - TTime time( dayString ); - - iProgram->SetEndTime( time ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetAppUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetAppUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetAppUidL ------>"); - LogMethod(_L("Program_SetAppUidL")); - - TInt err( KErrNone ); - - TInt uid( 0 ); - User::LeaveIfError( aItem.GetNextInt( uid ) ); - - iProgram->SetAppUid( uid ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetPluginUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetPluginUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetPluginUidL ------>"); - LogMethod(_L("Program_SetPluginUidL")); - - TInt err( KErrNone ); - - TInt uid( 0 ); - User::LeaveIfError( aItem.GetNextInt( uid ) ); - - iProgram->SetPluginUid( uid ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetApplicationDataLL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetApplicationDataLL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetApplicationDataLL ------>"); - LogMethod(_L("Program_SetApplicationDataLL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC data; - User::LeaveIfError( aItem.GetNextString( data ) ); - - TBuf8<1024> data8; - data8.Copy( data ); - - iProgram->SetApplicationDataL( data8 ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetDbIdentifierL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetDbIdentifierL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetDbIdentifierL ------>"); - LogMethod(_L("Program_SetDbIdentifierL")); - - TInt err( KErrNone ); - - TInt id; - User::LeaveIfError( aItem.GetNextInt( id ) ); - - iProgram->SetDbIdentifier( id ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetScheduleTypeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetScheduleTypeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetScheduleTypeL ------>"); - LogMethod(_L("Program_SetScheduleTypeL")); - - TInt err( KErrNone ); - - TInt type; - User::LeaveIfError( aItem.GetNextInt( type ) ); - - iProgram->SetScheduleType( type ); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_PluginTypeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_PluginTypeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_PluginTypeL ------>"); - LogMethod(_L("Program_PluginTypeL")); - - TInt err( KErrNone ); - - TInt pluginType; - TInt expectedPluginType; - User::LeaveIfError( aItem.GetNextInt( expectedPluginType ) ); - - pluginType = iProgram->PluginType(); - - if( pluginType != expectedPluginType ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_NameL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_NameL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_NameL ------>"); - LogMethod(_L("Program_NameL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC expectedName; - User::LeaveIfError( aItem.GetNextString( expectedName ) ); - - const TPtrC8 name8 = iProgram->Name(); - - TBuf<1024> name; - name.Copy( name8 ); - - if( name != expectedName ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_StartTimeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_StartTimeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_StartTimeL ------>"); - LogMethod(_L("Program_StartTimeL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC dayString; - User::LeaveIfError( aItem.GetNextString( dayString ) ); - - TTime expectedTime( dayString ); - - TTime time = iProgram->StartTime(); - - if( time != expectedTime ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_EndTimeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_EndTimeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_EndTimeL ------>"); - LogMethod(_L("Program_EndTimeL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC dayString; - User::LeaveIfError( aItem.GetNextString( dayString ) ); - - TTime expectedTime( dayString ); - - TTime time = iProgram->EndTime(); - - if( time != expectedTime ) - { - err = KErrCorrupt; - } - - return err; - } - - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_SetToFutureL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_SetToFutureL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_SetToFutureL ------>"); - LogMethod(_L("Program_SetToFutureL")); - - TInt err( KErrNone ); - TInt intervalStart( 0 ); - TInt intervalEnd( 0 ); - - User::LeaveIfError( aItem.GetNextInt( intervalStart ) ); - User::LeaveIfError( aItem.GetNextInt( intervalEnd ) ); - - TTime startTime( 0 ); - TTime endTime( 0 ); - - startTime.UniversalTime(); - endTime.UniversalTime(); - - startTime += TTimeIntervalSeconds( intervalStart ); - endTime += TTimeIntervalSeconds( intervalEnd ); - - iProgram->SetStartTime( startTime ); - iProgram->SetEndTime( endTime ); - - VCXLOGLO3("CVideoScheduler_ApiTest::Program_SetToFutureL -- start %d end %d", startTime, endTime); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_AppUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_AppUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_AppUidL ------>"); - LogMethod(_L("Program_AppUidL")); - - TInt err( KErrNone ); - - TInt expectedUid; - User::LeaveIfError( aItem.GetNextInt( expectedUid ) ); - - TInt32 uid = iProgram->AppUid(); - - if( uid != expectedUid ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_PluginUidL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_PluginUidL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_PluginUidL ------>"); - LogMethod(_L("Program_PluginUidL")); - - TInt err( KErrNone ); - - TInt expectedUid; - User::LeaveIfError( aItem.GetNextInt( expectedUid ) ); - - TInt32 uid = iProgram->PluginUid(); - - if( uid != expectedUid ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_ApplicationDataL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_ApplicationDataL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_ApplicationDataL ------>"); - LogMethod(_L("Program_ApplicationDataL")); - - TInt err( KErrNone ); - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - - TPtrC expectedData; - User::LeaveIfError( aItem.GetNextString( expectedData ) ); - - const TPtrC8 data8 = iProgram->ApplicationData(); - - TBuf<1024> data; - data.Copy( data8 ); - - if( data != expectedData ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_DbIdentifierL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_DbIdentifierL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_DbIdentifierL ------>"); - LogMethod(_L("Program_DbIdentifierL")); - - TInt err( KErrNone ); - - TInt expectedId; - User::LeaveIfError( aItem.GetNextInt( expectedId ) ); - - TUint32 id = iProgram->DbIdentifier(); - - if( id != expectedId ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_ScheduleTypeL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_ScheduleTypeL( CStifItemParser& aItem ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::API_AddScheduleL ------>"); - LogMethod(_L("Program_ScheduleTypeL")); - - TInt err( KErrNone ); - - TInt expectedType; - User::LeaveIfError( aItem.GetNextInt( expectedType ) ); - - TInt32 type = iProgram->ScheduleType(); - - if( type != expectedType ) - { - err = KErrCorrupt; - } - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::Program_DebugDumpL -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::Program_DebugDumpL( CStifItemParser& /*aItem*/ ) - { - VCXLOGLO1("CVideoScheduler_ApiTest::Program_DebugDumpL ------>"); - LogMethod(_L("Program_DebugDumpL")); - - TInt err( KErrNone ); - - iProgram->DebugDump(); - - return err; - } - -// ----------------------------------------------------------------------------- -// CVideoScheduler_ApiTest::ComparePrograms -// ----------------------------------------------------------------------------- -// -TInt CVideoScheduler_ApiTest::ComparePrograms( CCseScheduledProgram& aProgram1, CCseScheduledProgram& aProgram2 ) - { - TInt err( KErrNone ); - - if( aProgram1.DbIdentifier() != aProgram2.DbIdentifier() ) - { - VCXLOGLO3("CVideoScheduler_ApiTest::ComparePrograms: Error, db identifiers differ: %d vs. %d.", aProgram1.DbIdentifier(), aProgram2.DbIdentifier() ); - err = KErrCorrupt; - } - - return err; - } -// ========================== OTHER EXPORTED FUNCTIONS ========================= -// None - -// [End of File] - Do not remove diff -r d88d70d98bbc -r 3bc36dbd63c2 videoutils_plat/videoscheduler_api/videoscheduler_api.metaxml --- a/videoutils_plat/videoscheduler_api/videoscheduler_api.metaxml Fri Aug 06 09:54:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - -Video Scheduler API -Video Scheduler API provides an interface for creating scheduled events (for example, timed TV recording). -C++ -videoserviceutils - - - - -no -no - -