devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlaySession.cpp
author hgs
Wed, 13 Oct 2010 12:45:32 +0100
changeset 2 5c1df44f2eed
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk42_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
* All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
* Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
* Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
* Description:   DRM Play Session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#include "DRMPlaySession.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include <e32test.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include <e32std.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <e32svr.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <mmf/common/mmfcontrollerframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <tspclientmapper.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define DEP_PRN0(str)   RDebug::Print(str)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#define DEP_PRN1(str, v1)   RDebug::Print(str, v1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#define DEP_PRN2(str, v1, v2)   RDebug::Print(str, v1, v2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
#define DEP_PRN0(str)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#define DEP_PRN1(str, v1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#define DEP_PRN2(str, v1, v2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#endif // _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
// This is the UID defined by custom interface builder
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
const TUid KUidCustomInterfaceBuilderImpl = {0x10207A8E};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
// panic the client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
void CDRMPlayServerSession::PanicClient(const RMessage2 &aMessage, TInt aPanic) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
    _LIT(KTxtServer,"DRM Play server");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
    aMessage.Panic(KTxtServer,aPanic);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
CDRMPlayServerSession::CDRMPlayServerSession(CDRMPlayServer* aServer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
:iMessage2(NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
    iServer=aServer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
CDRMPlayServerSession* CDRMPlayServerSession::NewL(CDRMPlayServer* aServer, const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
    DEP_PRN0(_L("CDRMPlayServerSession::NewL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
    CDRMPlayServerSession* self = new(ELeave) CDRMPlayServerSession(aServer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
    CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
    self->ConstructL( aMessage );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
    CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
    return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
void CDRMPlayServerSession::ConstructL( const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
void CDRMPlayServerSession::ConstructL( const RMessage2& /*aMessage*/ )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
#endif //RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
    iTSPClientMapper = CTspClientMapper::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
    // Get client process ID
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
    RThread clientThread;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
    RProcess clientProcess;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
    // Open client thread and process handles
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
    User::LeaveIfError( aMessage.Client(clientThread) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
    User::LeaveIfError(  clientThread.Process(clientProcess) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
    // Get process id
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
    iClientProcessId = clientProcess.Id();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
    // Close client thread and client process handles
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
    clientThread.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
    clientProcess.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
    iTSPClientMapper->SetTspTargetClient(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
                            CTspClientMapper::ERegisteredClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
                            iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
    // Increment number of sessions in server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
    iServer->iClients++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
    DEP_PRN1(_L("CDRMPlayServerSession::iClients = %d"), iServer->iClients);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
CDRMPlayServerSession::~CDRMPlayServerSession()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
    if(iMetaDataBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
     delete iMetaDataBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
     iMetaDataBuffer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
    // Delete any pending message objects
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
    // This will never happen, only happens when
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
    // Client closes the session in the middle of playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
    // but we cannot complete the message as RSession Handle is invalid
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
/*    if (iMessage2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
        iMessage2->Complete(KErrCancel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
    if(iMessage2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
    {	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
     delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
     iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
    // Delete play utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
    if (iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
     {	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
     	delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
     	iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
     }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
    //delete iAsyncCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
    //iAsyncCallback = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
    if (iTSPClientMapper)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
    TInt status = iTSPClientMapper->RemoveTspTargetClient(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
                                        CTspClientMapper::ERegisteredClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
                                        iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
    DEP_PRN2(_L("CDRMPlayServerSession::~CDRMPlayServerSession:Unreg PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
    delete iTSPClientMapper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
    // Cancel any pending async messages.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
    TInt index(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
    CDRMCustomCommandAsyncAO* tempAO(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
    for (;index < iActiveAsyncCustomCommands.Count(); index++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
        tempAO = iActiveAsyncCustomCommands[0];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
        if ( iCDRMCustomCommandAsyncAO2Phase == tempAO )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
            iCDRMCustomCommandAsyncAO2Phase = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
        delete tempAO;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
        iActiveAsyncCustomCommands.Remove(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
    iActiveAsyncCustomCommands.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
    iActiveAsyncCustomCommands.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
    delete iCDRMCustomCommandAsyncAO2Phase;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
    iServer->iClients--;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
    if(!iServer->iClients)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
void CDRMPlayServerSession::ServiceL(const RMessage2& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
    TInt ret = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
    TRAPD(err,ret = DispatchMessageL(aMessage));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
    if (KErrNone != err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
        ret = err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
    if(iAsyncComplete == EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
        DEP_PRN1(_L("CDRMPlayServerSession::ServiceL - ret = %d"),ret);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
        aMessage.Complete(ret);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
// service a client request; test the opcode and then do appropriate servicing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
TInt CDRMPlayServerSession::DispatchMessageL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
    TInt ret=KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
    DEP_PRN1(_L("CDRMPlayServerSession::DispatchMessageL:FnId[%d]"),aMessage.Function());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
    switch (aMessage.Function())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
        case EDRMPlayServCreate:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
             break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
        case EDRMPlayServNewFilePlayerL:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
            NewFilePlayerL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
        case EDRMPlayServNewDesPlayerL:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
            NewDesPlayerL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
        case EDRMPlayServNewDesPlayerReadOnlyL:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
            NewDesPlayerReadOnlyL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
        case EDRMPlayServNewPlayerL:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
            NewPlayerL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
        case EDRMPlayServOpenFile:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
            OpenFileL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
        case EDRMPlayServOpenFileByHandle:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
            OpenFileByHandleL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
        case EDRMPlayServOpenFileBySource:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
            OpenFileBySourceL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
        case EDRMPlayServOpenDes:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
            OpenDesL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
        case EDRMPlayServOpenUrl:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
            OpenUrlL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
        case EDRMPlayServPlay:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
            if(iMessage2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
                iMessage2->Complete(KErrCancel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
                delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
                iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
            iMessage2 = new (ELeave) RMessage2(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
            Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
        case EDRMPlayServStop:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
            if(iState == EStopped)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
                break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
            if(iMessage2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
                iMessage2->Complete(KErrCancel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
                delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
                iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
            Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
        case EDRMPlayServSetVolume:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
            SetVolume(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
        case EDRMPlayServSetRepeats:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
            SetRepeats(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
        case EDRMPlayServSetVolumeRamp:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
            SetVolumeRamp(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
        case EDRMPlayServDuration:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
            Duration(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
        case EDRMPlayServMaxVolume:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
            ret = MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
        case EDRMPlayServPause:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
            ret = Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
            if(iMessage2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
                iMessage2->Complete(KErrCancel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
                delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
                iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
            iAsyncComplete = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
        case EDRMPlayServClose:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
            Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
        case EDRMPlayServGetPosition:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
            ret = GetPosition(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
        case EDRMPlayServSetPosition:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
            SetPosition(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
        case EDRMPlayServSetPriority:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
            ret = SetPriority(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
        case EDRMPlayServGetVolume:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
            ret = GetVolume(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
        case EDRMPlayServGetNumberOfMetaDataEntries:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
            ret = GetNumberOfMetaDataEntries(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
        case EDRMPlayServGetMetaDataEntry:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
            GetMetaDataEntryL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
        case EDRMPlayServClearPlayWindow:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
            ret = ClearPlayWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
        case EDRMPlayServSetBalance:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
            ret = SetBalance(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
        case EDRMPlayServGetBalance:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
            ret = GetBalance(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
        case EDRMPlayServGetBitRate:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
            ret = GetBitRate(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
        case EDRMPlayServRegisterForAudioLoadingNotification:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
            iMessage = aMessage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
            RegisterForAudioLoadingNotification(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
        case EDRMPlayServGetAudioLoadingProgress:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
            GetAudioLoadingProgressL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
        case EDRMPlayServSetPlayWindow:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
            SetPlayWindow(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
        case EDRMPlayServControllerImplementationInformation:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
            ControllerImplementationInformationL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
        case EDRMPlayServCustomCommandSyncWithReturn:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
        case EDRMPlayServCustomCommandSyncWithoutReturn:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
                CustomCommandSyncL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
                break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
        case EDRMPlayServCustomCommandAsyncWithReturnStep1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
        case EDRMPlayServCustomCommandAsyncWithoutReturnStep1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
            CustomCommandAsyncStep1L(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
            // Setting this flag does not complete message in ServiceL,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
        case EDRMPlayServCustomCommandAsyncWithReturnStep2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
        case EDRMPlayServCustomCommandAsyncWithoutReturnStep2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
            CustomCommandAsyncStep2L(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
            // Setting this flag does not complete message in ServiceL,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
            iAsyncComplete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
        case EDRMPlayServSetPriorityPreference:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
            SetPriorityPreference(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
       default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
         PanicClient(aMessage, EBadRequest);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
         break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
void CDRMPlayServerSession::NewFilePlayerL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
    TDataStructPckgBuf params;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
    aMessage.Read(1,params);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
    HBufC16* inputBuf = HBufC16::NewL(aMessage.GetDesLengthL(3));
2
5c1df44f2eed 2010wk42_01
hgs
parents: 0
diff changeset
   365
    CleanupStack::PushL(inputBuf);
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
    TPtr16 ptr = inputBuf->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
    aMessage.Read(3,ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
    const TDataStruct &theStruct = params();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
    iPlayUtil = CMdaAudioPlayerUtility::NewFilePlayerL( inputBuf->Des(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
                                                       *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
                                                       iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
                                                       iPref);
2
5c1df44f2eed 2010wk42_01
hgs
parents: 0
diff changeset
   375
    CleanupStack::Pop(inputBuf);
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
    delete inputBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
void CDRMPlayServerSession::NewDesPlayerL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
    iPlayUtil = CMdaAudioPlayerUtility::NewDesPlayerL(thePckg().iData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
                                                      *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
                                                      iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
                                                      iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
void CDRMPlayServerSession::NewDesPlayerReadOnlyL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
    iPlayUtil = CMdaAudioPlayerUtility::NewDesPlayerReadOnlyL(thePckg().iData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
                                                              *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
                                                              iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
                                                              iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
void CDRMPlayServerSession::NewPlayerL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
    iPlayUtil = CMdaAudioPlayerUtility::NewL(*this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
                                             iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
                                             iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
void CDRMPlayServerSession::OpenFileL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
    //call mmfclientaudioplayer open file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
    iFileHandleUsed = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
    // Get the file length
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
    TInt len = aMessage.GetDesLengthL(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
    HBufC* fileName = HBufC::NewLC(len);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
    TPtr fileNamePtr = fileName->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
    aMessage.Read(1,fileNamePtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
        iPlayUtil->OpenFileL(fileNamePtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
    CleanupStack::PopAndDestroy(fileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
void CDRMPlayServerSession::OpenFileByHandleL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
    iFileHandleUsed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
    TInt err = iFileHandle.AdoptFromClient(aMessage,1,3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
    if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
        if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
            iPlayUtil->OpenFileL(iFileHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
        User::Leave(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
void CDRMPlayServerSession::OpenFileBySourceL(const RMessage2 &/*aMessage*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
void CDRMPlayServerSession::OpenDesL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
    //call mmfclientaudioplayer OpenDesL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
    TBuf8<50> aDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
    aMessage.Read(1,aDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
        iPlayUtil->OpenDesL(aDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
void CDRMPlayServerSession::OpenUrlL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
    //call mmfclientaudioplayer OpenUrlL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
    TUrlStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
        iPlayUtil->OpenUrlL(thePckg().iUrl,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
                            thePckg().iIapId,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
                            thePckg().iMimeType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
void CDRMPlayServerSession::Play()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
    //call mmfclientaudioplayer Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
    iState = EPlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
        iPlayUtil->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
        TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
                                            CTspClientMapper::EPlayingClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
                                            iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
        DEP_PRN2(_L("CDRMPlayServerSession::Play:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
void CDRMPlayServerSession::Stop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
    //call mmfclientaudioplayer Stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
        iPlayUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
        TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
                                            CTspClientMapper::EStoppedClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
                                            iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
        DEP_PRN2(_L("CDRMPlayServerSession::Stop:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
void CDRMPlayServerSession::SetVolume(const RMessage2 & aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
    //call mmfclientaudioplayer SetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
    TInt theVolume = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
        iPlayUtil->SetVolume(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
void CDRMPlayServerSession::SetRepeats(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
    //call mmfclientaudioplayer SetRepeats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
    TInt theRepeatNumberOfTimes = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
    TTimeIntervalMicroSeconds theTrailingSilence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
    TPckgTTimeIntervalMicroSeconds theTrailingSilencePckg(theTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
    aMessage.Read(1,theTrailingSilencePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
    iPlayUtil->SetRepeats(theRepeatNumberOfTimes,theTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
void CDRMPlayServerSession::SetVolumeRamp(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
    //call mmfclientaudioplayer SetVolumeRamp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
    TTimeIntervalMicroSeconds theRampDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
    TPckgTTimeIntervalMicroSeconds theRampDurationPckg(theRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
    aMessage.Read(0,theRampDurationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
    iPlayUtil->SetVolumeRamp(theRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
void CDRMPlayServerSession::Duration(const RMessage2& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
    TTimeIntervalMicroSeconds theDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
    theDuration = iPlayUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
    TPckgBufTTimeIntervalMicroSeconds theDurationPckg(theDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
    aMessage.Write(0,theDurationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
TInt CDRMPlayServerSession::MaxVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
    TInt theMaxVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
    theMaxVolume = iPlayUtil->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
    return theMaxVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
// API Additions since version 7.0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
TInt CDRMPlayServerSession::Pause()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
    TInt ret = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
        ret = iPlayUtil->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
    // This message should not be completed here. It should be completed in ServiceL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
/*    if(iState == EPlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
        iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
        }*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
void CDRMPlayServerSession::Close()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
    if(iFileHandleUsed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
     iFileHandle.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
    iPlayUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
TInt CDRMPlayServerSession::GetPosition(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
    TTimeIntervalMicroSeconds thePosition;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
    ret = iPlayUtil->GetPosition(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
    TPckgTTimeIntervalMicroSeconds thePositionPckg(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
    aMessage.Write(0,thePositionPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
void CDRMPlayServerSession::SetPosition(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
    TTimeIntervalMicroSeconds thePosition;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
    TPckgTTimeIntervalMicroSeconds thePositionPckg(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
    aMessage.Read(0,thePositionPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
    iPlayUtil->SetPosition(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
TInt CDRMPlayServerSession::SetPriority(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
    TInt thePriority = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
    TMdaPriorityPreference thePref = (TMdaPriorityPreference)aMessage.Int1();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
    TInt ret = iPlayUtil->SetPriority(thePriority,thePref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
TInt CDRMPlayServerSession::GetVolume(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
    TInt theVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
    TInt ret = iPlayUtil->GetVolume(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
    TPckgBufTInt pckg(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
TInt CDRMPlayServerSession::GetNumberOfMetaDataEntries(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
    TInt theNumOfMetaDataEntries;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
    ret = iPlayUtil->GetNumberOfMetaDataEntries(theNumOfMetaDataEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
    TPckgBufTInt pckg(theNumOfMetaDataEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
void CDRMPlayServerSession::GetMetaDataEntryL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
    //Get the index of the required entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
    TInt theIndex = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
    CMMFMetaDataEntry* entry = iPlayUtil->GetMetaDataEntryL(theIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
    CleanupStack::PushL(entry);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
    // Delete any existing buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
    if (iMetaDataBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
    	delete iMetaDataBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
    	iMetaDataBuffer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
    // Create a buffer to hold the externalised entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
    iMetaDataBuffer = CBufFlat::NewL(32);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
    RBufWriteStream s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
    s.Open(*iMetaDataBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
    CleanupClosePushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
    entry->ExternalizeL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
    CleanupStack::PopAndDestroy(2);//s, entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
    //Write the externalised data back to the client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
    aMessage.Write(1,iMetaDataBuffer->Ptr(0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
TInt CDRMPlayServerSession::SetPlayWindow(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
    TPlayWindowStructBuf buf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
    aMessage.Read(0,buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
    TTimeIntervalMicroSeconds playStart = buf().iPlayStart;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
    TTimeIntervalMicroSeconds playEnd = buf().iPlayEnd;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
    TInt ret = iPlayUtil->SetPlayWindow(playStart,playEnd);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
TInt CDRMPlayServerSession::ClearPlayWindow()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
    return iPlayUtil->ClearPlayWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
TInt CDRMPlayServerSession::SetBalance(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
    TInt theBalance = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
    return iPlayUtil->SetBalance(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
TInt CDRMPlayServerSession::GetBalance(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
    TInt theBalance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
    ret = iPlayUtil->GetBalance(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
    TPckgBufTInt pckg(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
TInt CDRMPlayServerSession::GetBitRate(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
    TUint theBitRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
    ret = iPlayUtil->GetBitRate(theBitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
    TPckgBufTUint pckg(theBitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
void CDRMPlayServerSession::RegisterForAudioLoadingNotification(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
    if(iCallbackState()==ELoadingStarted)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
        iPlayUtil->RegisterForAudioLoadingNotification(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
void CDRMPlayServerSession::GetAudioLoadingProgressL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
    TInt thePercentProgress;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
    iPlayUtil->GetAudioLoadingProgressL(thePercentProgress);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
    TPckgBufTInt pckg(thePercentProgress);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
void CDRMPlayServerSession::ControllerImplementationInformationL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
    const CMMFControllerImplementationInformation& x= iPlayUtil->ControllerImplementationInformationL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
    //for now just write Uid by to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
    typedef TPckg<TUid> TPckgTUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
    TPckgTUid thePckg(x.Uid());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
    aMessage.Write(0,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
void CDRMPlayServerSession::CustomCommandSyncL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandSyncL:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
    TPckgCustomCommand thePckgCustomCommand;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
    User::LeaveIfError(aMessage.Read(0,thePckgCustomCommand));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
    HBufC8* dataTo1Buf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
    HBufC8* dataTo2Buf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
    HBufC8* dataFromBuf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
    TPtr8 ptr1(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
    TPtr8 ptr2(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
    TPtr8 ptr3(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
    // Read data1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
    dataTo1Buf = HBufC8::NewL(aMessage.GetDesLengthL(1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
    CleanupStack::PushL(dataTo1Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
    ptr1.Set(dataTo1Buf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
    User::LeaveIfError(aMessage.Read(1,ptr1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
   // Check and filter the messages
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
   // Dont Allow Select Custom Commands
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
   if( !IsValidCustomCommandDestination(thePckgCustomCommand().iDestination().InterfaceId(), ptr1) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
            User::Leave(KErrAccessDenied);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
    // Read data2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
    dataTo2Buf = HBufC8::NewL(aMessage.GetDesLengthL(2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
    CleanupStack::PushL(dataTo2Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
    ptr2.Set(dataTo2Buf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
    User::LeaveIfError(aMessage.Read(2,ptr2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
    if ( aMessage.Function() == EDRMPlayServCustomCommandSyncWithReturn )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
        // Read data3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
        dataFromBuf = HBufC8::NewL(aMessage.GetDesLengthL(3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
        CleanupStack::PushL(dataFromBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
        ptr3.Set(dataFromBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
        User::LeaveIfError(aMessage.Read(3,ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandSync:IFId[%x]DestHndl[%x]Fn[%d]RetDesLen[%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
                                    thePckgCustomCommand().iDestination().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
                                    thePckgCustomCommand().iDestination().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
                                    thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
                                    ptr3.MaxLength());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
        // Call CustomCommandSync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
        User::LeaveIfError(iPlayUtil->CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
                                            thePckgCustomCommand().iDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
                                            thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
                                            ptr1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
                                            ptr2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
                                            ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
        User::LeaveIfError(aMessage.Write(3,ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
        // Free heap allocated for data3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
        CleanupStack::PopAndDestroy(dataFromBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandSync:IFId[%x]DestHndl[%x]Fn[%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
                                    thePckgCustomCommand().iDestination().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
                                    thePckgCustomCommand().iDestination().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
                                    thePckgCustomCommand().iFunction );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
        // Call CustomCommandSync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
        User::LeaveIfError(iPlayUtil->CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
                                            thePckgCustomCommand().iDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
                                            thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
                                            ptr1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
                                            ptr2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
    // Free heap allocated for data2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
    CleanupStack::PopAndDestroy(dataTo2Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
    // Free heap allocated for data1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
    CleanupStack::PopAndDestroy(dataTo1Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandSyncL:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
void CDRMPlayServerSession::CustomCommandAsyncStep1L( const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep1L:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
    // If there is a pending phase1, then there is something wrong.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
    if ( iCDRMCustomCommandAsyncAO2Phase )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
        User::Leave(KErrAlreadyExists);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
    if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithReturnStep1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
        iCDRMCustomCommandAsyncAO2Phase = CDRMCustomCommandAsyncAO::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
                                                    aMessage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
                                                    CDRMCustomCommandAsyncAO::ECustomCommandWithResult,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
                                                    *this );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
    else /*if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithoutReturnStep1 )*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
        iCDRMCustomCommandAsyncAO2Phase = CDRMCustomCommandAsyncAO::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
                                                    aMessage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
                                                    CDRMCustomCommandAsyncAO::ECustomCommandWithoutResult,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
                                                    *this );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
    // Get reference to data1 descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
    TPtr8 data1Ptr(iCDRMCustomCommandAsyncAO2Phase->GetData1FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
    // Check and filter the messages
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
    // Dont Allow Select Custom Commands
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
    if( !IsValidCustomCommandDestination((iCDRMCustomCommandAsyncAO2Phase->GetMMFMessageDestinationPckg())().InterfaceId(), data1Ptr) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
        User::Leave( KErrAccessDenied );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
    aMessage.Complete( KErrNone );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep1L:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
void CDRMPlayServerSession::CustomCommandAsyncStep2L( const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
    // Read info from client session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
    TPtr8 data1Ptr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
    TPtr8 data2Ptr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
    TPtr8 dataToClientPtr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
    // If there is no pending phase1, then there is something wrong.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
    if ( !iCDRMCustomCommandAsyncAO2Phase )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
        User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
    // Add custCmdAsyncAO object to array of async custom command objects
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
    iActiveAsyncCustomCommands.AppendL( iCDRMCustomCommandAsyncAO2Phase );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
    // aMessage ownership is transferred to custCmdAsyncAO.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
    // After succesful transfer, aMessage should not be completed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
    // anywhere outside of this object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
    iCDRMCustomCommandAsyncAO2Phase->TransferOwnershipL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
    CDRMCustomCommandAsyncAO* drmCCAsyncAO = iCDRMCustomCommandAsyncAO2Phase;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
    iCDRMCustomCommandAsyncAO2Phase = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
    // Get reference to descriptors
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
    data1Ptr.Set(drmCCAsyncAO->GetData1FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
    data2Ptr.Set(drmCCAsyncAO->GetData2FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
    // Make call on controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
    drmCCAsyncAO->SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
    if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithReturnStep2 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
        // If date needs to be returned, get reference to the descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
        dataToClientPtr.Set(drmCCAsyncAO->GetDataToClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:IFId[%x]DestHndl[%x]Fn[%d]Data1[Len:%d:MaxLen:%d]Data2Len[Len:%d:MaxLen:%d]RetDesLen[Len:%d:MaxLen:%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
                                    drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
                                    data1Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
                                    data1Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
                                    data2Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
                                    data2Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
                                    dataToClientPtr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
                                    dataToClientPtr.MaxLength() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
        // Call CustomCommandAsync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
        iPlayUtil->CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
                        drmCCAsyncAO->GetMMFMessageDestinationPckg(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
                        drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
                        data1Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
                        data2Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
                        dataToClientPtr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
                        drmCCAsyncAO->iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
    else /*if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithoutReturnStep2 )*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:IFId[%x]DestHndl[%x]Fn[%d]Data1[Len:%d:MaxLen:%d]Data2Len[Len:%d:MaxLen:%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
                                    drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
                                    data1Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
                                    data1Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
                                    data2Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
                                    data2Ptr.MaxLength() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
        // Call CustomCommandAsync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
        iPlayUtil->CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
                        drmCCAsyncAO->GetMMFMessageDestinationPckg(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
                        drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
                        data1Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
                        data2Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
                        drmCCAsyncAO->iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
void CDRMPlayServerSession::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
    DEP_PRN2(_L("CDRMPlayServerSession::MapcInitComplete :-> Status[%d] Duration[%d]"), aError, I64INT(aDuration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
     //iMessage.Write aError & aDuration to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
    iCallbackState() = EInitComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
    iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
    iErrDurPckg().iDuration = aDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
    iMessage.Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
    iMessage.Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
void CDRMPlayServerSession::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
    DEP_PRN1(_L("CDRMPlayServerSession::MapcPlayComplete :-> Error[%d]"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
    TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
                                        CTspClientMapper::EStoppedClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
                                        iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
    DEP_PRN2(_L("CDRMPlayServerSession::MapcPlayComplete:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
    iCallbackState()= EPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
    iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
    iErrDurPckg().iDuration = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
    iMessage.Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
    iMessage.Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
    if ( iMessage2 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
         //iMessage2. Write aError & aDuration to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
        iCallbackState() = EPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
        iMessage2->Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
        iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
        iErrDurPckg().iDuration = 0;    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
        iMessage2->Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
        iMessage2->Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
        delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
        iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
void CDRMPlayServerSession::MaloLoadingStarted()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
    //send event to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
    iCallbackState() = ELoadingStarted;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
    iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
void CDRMPlayServerSession::MaloLoadingComplete()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
    //send event to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
    iCallbackState() = ELoadingComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
    iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
void CDRMPlayServerSession::AsyncCustomCommandCompleted( CDRMCustomCommandAsyncAO* aObject)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
    TInt index = iActiveAsyncCustomCommands.Find( aObject );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
    // This should never happen. Else there is something wrong....
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
    if ( index != KErrNotFound )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
        iActiveAsyncCustomCommands.Remove(index);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
    delete aObject;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
void CDRMPlayServerSession::SetPriorityPreference(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
    iPriority = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
    iPref = (TMdaPriorityPreference)aMessage.Int1();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
TBool CDRMPlayServerSession::IsValidCustomCommandDestination(TUid aDestinationUid, TDesC8& aParam)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
    TBool retValue(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
    if (aDestinationUid == KUidInterfaceMMFDRMControl)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
        retValue = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
    else if ( aDestinationUid == KUidCustomInterfaceBuilderImpl )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
        RDesReadStream stream(aParam);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
        CleanupClosePushL(stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
        TUid paramUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
        TRAPD(status, paramUid.iUid = stream.ReadInt32L());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
        CleanupStack::PopAndDestroy(&stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
        if ( (status == KErrNone ) && (paramUid == KUidAudioOutput) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
            retValue = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
    return retValue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
// End of File
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090