devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlaySession.cpp
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
child 2 5c1df44f2eed
permissions -rw-r--r--
2010wk40
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));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
    TPtr16 ptr = inputBuf->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
    aMessage.Read(3,ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
    const TDataStruct &theStruct = params();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
    iPlayUtil = CMdaAudioPlayerUtility::NewFilePlayerL( inputBuf->Des(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
                                                       *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
                                                       iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
                                                       iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
    delete inputBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
void CDRMPlayServerSession::NewDesPlayerL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
    iPlayUtil = CMdaAudioPlayerUtility::NewDesPlayerL(thePckg().iData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
                                                      *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
                                                      iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
                                                      iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
void CDRMPlayServerSession::NewDesPlayerReadOnlyL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
    iPlayUtil = CMdaAudioPlayerUtility::NewDesPlayerReadOnlyL(thePckg().iData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
                                                              *this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
                                                              iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
                                                              iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
void CDRMPlayServerSession::NewPlayerL(const RMessage2 aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
    TDataStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
    delete iPlayUtil;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
    iPlayUtil = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
    iPlayUtil = CMdaAudioPlayerUtility::NewL(*this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
                                             iPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
                                             iPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
void CDRMPlayServerSession::OpenFileL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
    //call mmfclientaudioplayer open file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
    iFileHandleUsed = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
    // Get the file length
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
    TInt len = aMessage.GetDesLengthL(1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
    HBufC* fileName = HBufC::NewLC(len);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
    TPtr fileNamePtr = fileName->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
    aMessage.Read(1,fileNamePtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
        iPlayUtil->OpenFileL(fileNamePtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
    CleanupStack::PopAndDestroy(fileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
void CDRMPlayServerSession::OpenFileByHandleL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
    iFileHandleUsed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
    TInt err = iFileHandle.AdoptFromClient(aMessage,1,3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
    if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
        if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
            iPlayUtil->OpenFileL(iFileHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
        User::Leave(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
void CDRMPlayServerSession::OpenFileBySourceL(const RMessage2 &/*aMessage*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
void CDRMPlayServerSession::OpenDesL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
    //call mmfclientaudioplayer OpenDesL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
    TBuf8<50> aDes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
    aMessage.Read(1,aDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
        iPlayUtil->OpenDesL(aDes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
void CDRMPlayServerSession::OpenUrlL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
    //call mmfclientaudioplayer OpenUrlL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
    TUrlStructPckgBuf thePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
    aMessage.Read(1,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
    aMessage.Read(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
        iPlayUtil->OpenUrlL(thePckg().iUrl,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
                            thePckg().iIapId,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
                            thePckg().iMimeType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
void CDRMPlayServerSession::Play()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
    //call mmfclientaudioplayer Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
    iState = EPlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
        iPlayUtil->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
        TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
                                            CTspClientMapper::EPlayingClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
                                            iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
        DEP_PRN2(_L("CDRMPlayServerSession::Play:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
void CDRMPlayServerSession::Stop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
    //call mmfclientaudioplayer Stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
        iPlayUtil->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
        TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
                                            CTspClientMapper::EStoppedClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
                                            iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
        DEP_PRN2(_L("CDRMPlayServerSession::Stop:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
void CDRMPlayServerSession::SetVolume(const RMessage2 & aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
    //call mmfclientaudioplayer SetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
    TInt theVolume = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
        iPlayUtil->SetVolume(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
void CDRMPlayServerSession::SetRepeats(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
    //call mmfclientaudioplayer SetRepeats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
    TInt theRepeatNumberOfTimes = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
    TTimeIntervalMicroSeconds theTrailingSilence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
    TPckgTTimeIntervalMicroSeconds theTrailingSilencePckg(theTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
    aMessage.Read(1,theTrailingSilencePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
    iPlayUtil->SetRepeats(theRepeatNumberOfTimes,theTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
void CDRMPlayServerSession::SetVolumeRamp(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
    //call mmfclientaudioplayer SetVolumeRamp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
    TTimeIntervalMicroSeconds theRampDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
    TPckgTTimeIntervalMicroSeconds theRampDurationPckg(theRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
    aMessage.Read(0,theRampDurationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
    iPlayUtil->SetVolumeRamp(theRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
void CDRMPlayServerSession::Duration(const RMessage2& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
    TTimeIntervalMicroSeconds theDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
    theDuration = iPlayUtil->Duration();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
    TPckgBufTTimeIntervalMicroSeconds theDurationPckg(theDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
    aMessage.Write(0,theDurationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
TInt CDRMPlayServerSession::MaxVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
    TInt theMaxVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
    theMaxVolume = iPlayUtil->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
    return theMaxVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
// API Additions since version 7.0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
TInt CDRMPlayServerSession::Pause()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
    TInt ret = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
    if(iPlayUtil)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
        ret = iPlayUtil->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
    // This message should not be completed here. It should be completed in ServiceL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
/*    if(iState == EPlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
        iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
        }*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
void CDRMPlayServerSession::Close()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
    if(iFileHandleUsed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
     iFileHandle.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
    iPlayUtil->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
TInt CDRMPlayServerSession::GetPosition(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
    TTimeIntervalMicroSeconds thePosition;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
    ret = iPlayUtil->GetPosition(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
    TPckgTTimeIntervalMicroSeconds thePositionPckg(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
    aMessage.Write(0,thePositionPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
void CDRMPlayServerSession::SetPosition(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
    TTimeIntervalMicroSeconds thePosition;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
    TPckgTTimeIntervalMicroSeconds thePositionPckg(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
    aMessage.Read(0,thePositionPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
    iPlayUtil->SetPosition(thePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
TInt CDRMPlayServerSession::SetPriority(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
    TInt thePriority = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
    TMdaPriorityPreference thePref = (TMdaPriorityPreference)aMessage.Int1();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
    TInt ret = iPlayUtil->SetPriority(thePriority,thePref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
TInt CDRMPlayServerSession::GetVolume(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
    TInt theVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
    TInt ret = iPlayUtil->GetVolume(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
    TPckgBufTInt pckg(theVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
TInt CDRMPlayServerSession::GetNumberOfMetaDataEntries(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
    TInt theNumOfMetaDataEntries;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
    ret = iPlayUtil->GetNumberOfMetaDataEntries(theNumOfMetaDataEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
    TPckgBufTInt pckg(theNumOfMetaDataEntries);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
void CDRMPlayServerSession::GetMetaDataEntryL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
    //Get the index of the required entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
    TInt theIndex = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
    CMMFMetaDataEntry* entry = iPlayUtil->GetMetaDataEntryL(theIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
    CleanupStack::PushL(entry);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
    // Delete any existing buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
    if (iMetaDataBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
    	delete iMetaDataBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
    	iMetaDataBuffer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
    // Create a buffer to hold the externalised entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
    iMetaDataBuffer = CBufFlat::NewL(32);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
    RBufWriteStream s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
    s.Open(*iMetaDataBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
    CleanupClosePushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
    entry->ExternalizeL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
    CleanupStack::PopAndDestroy(2);//s, entry
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
    //Write the externalised data back to the client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
    aMessage.Write(1,iMetaDataBuffer->Ptr(0));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
TInt CDRMPlayServerSession::SetPlayWindow(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
    TPlayWindowStructBuf buf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
    aMessage.Read(0,buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
    TTimeIntervalMicroSeconds playStart = buf().iPlayStart;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
    TTimeIntervalMicroSeconds playEnd = buf().iPlayEnd;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
    TInt ret = iPlayUtil->SetPlayWindow(playStart,playEnd);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
TInt CDRMPlayServerSession::ClearPlayWindow()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
    return iPlayUtil->ClearPlayWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
TInt CDRMPlayServerSession::SetBalance(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
    TInt theBalance = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
    return iPlayUtil->SetBalance(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
TInt CDRMPlayServerSession::GetBalance(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
    TInt theBalance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
    ret = iPlayUtil->GetBalance(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
    TPckgBufTInt pckg(theBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
TInt CDRMPlayServerSession::GetBitRate(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
    TUint theBitRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
    TInt ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
    ret = iPlayUtil->GetBitRate(theBitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
    TPckgBufTUint pckg(theBitRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
    return ret;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
void CDRMPlayServerSession::RegisterForAudioLoadingNotification(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
    aMessage.Read(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
    if(iCallbackState()==ELoadingStarted)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
        iPlayUtil->RegisterForAudioLoadingNotification(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
void CDRMPlayServerSession::GetAudioLoadingProgressL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
    TInt thePercentProgress;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
    iPlayUtil->GetAudioLoadingProgressL(thePercentProgress);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
    TPckgBufTInt pckg(thePercentProgress);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
    aMessage.Write(0,pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
void CDRMPlayServerSession::ControllerImplementationInformationL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
    const CMMFControllerImplementationInformation& x= iPlayUtil->ControllerImplementationInformationL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
    //for now just write Uid by to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
    typedef TPckg<TUid> TPckgTUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
    TPckgTUid thePckg(x.Uid());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
    aMessage.Write(0,thePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
void CDRMPlayServerSession::CustomCommandSyncL(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandSyncL:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
    TPckgCustomCommand thePckgCustomCommand;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
    User::LeaveIfError(aMessage.Read(0,thePckgCustomCommand));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
    HBufC8* dataTo1Buf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
    HBufC8* dataTo2Buf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
    HBufC8* dataFromBuf(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
    TPtr8 ptr1(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
    TPtr8 ptr2(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
    TPtr8 ptr3(NULL, NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
    // Read data1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
    dataTo1Buf = HBufC8::NewL(aMessage.GetDesLengthL(1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
    CleanupStack::PushL(dataTo1Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
    ptr1.Set(dataTo1Buf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
    User::LeaveIfError(aMessage.Read(1,ptr1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
   // Check and filter the messages
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
   // Dont Allow Select Custom Commands
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
   if( !IsValidCustomCommandDestination(thePckgCustomCommand().iDestination().InterfaceId(), ptr1) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
            User::Leave(KErrAccessDenied);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
    // Read data2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
    dataTo2Buf = HBufC8::NewL(aMessage.GetDesLengthL(2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
    CleanupStack::PushL(dataTo2Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
    ptr2.Set(dataTo2Buf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
    User::LeaveIfError(aMessage.Read(2,ptr2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
    if ( aMessage.Function() == EDRMPlayServCustomCommandSyncWithReturn )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
        // Read data3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
        dataFromBuf = HBufC8::NewL(aMessage.GetDesLengthL(3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
        CleanupStack::PushL(dataFromBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
        ptr3.Set(dataFromBuf->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
        User::LeaveIfError(aMessage.Read(3,ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandSync:IFId[%x]DestHndl[%x]Fn[%d]RetDesLen[%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
                                    thePckgCustomCommand().iDestination().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
                                    thePckgCustomCommand().iDestination().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
                                    thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
                                    ptr3.MaxLength());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
        // Call CustomCommandSync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
        User::LeaveIfError(iPlayUtil->CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
                                            thePckgCustomCommand().iDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
                                            thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
                                            ptr1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
                                            ptr2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
                                            ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
        User::LeaveIfError(aMessage.Write(3,ptr3));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
        // Free heap allocated for data3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
        CleanupStack::PopAndDestroy(dataFromBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
        RDebug::Print(_L("CDRMPlayServerSession::CustomCommandSync:IFId[%x]DestHndl[%x]Fn[%d]"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
                                    thePckgCustomCommand().iDestination().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
                                    thePckgCustomCommand().iDestination().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
                                    thePckgCustomCommand().iFunction );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
        // Call CustomCommandSync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
        User::LeaveIfError(iPlayUtil->CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
                                            thePckgCustomCommand().iDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
                                            thePckgCustomCommand().iFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
                                            ptr1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
                                            ptr2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
    // Free heap allocated for data2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
    CleanupStack::PopAndDestroy(dataTo2Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
    // Free heap allocated for data1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
    CleanupStack::PopAndDestroy(dataTo1Buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandSyncL:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
void CDRMPlayServerSession::CustomCommandAsyncStep1L( const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep1L:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
    // If there is a pending phase1, then there is something wrong.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
    if ( iCDRMCustomCommandAsyncAO2Phase )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
        User::Leave(KErrAlreadyExists);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
    if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithReturnStep1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
        iCDRMCustomCommandAsyncAO2Phase = CDRMCustomCommandAsyncAO::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
                                                    aMessage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
                                                    CDRMCustomCommandAsyncAO::ECustomCommandWithResult,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
                                                    *this );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
    else /*if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithoutReturnStep1 )*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
        iCDRMCustomCommandAsyncAO2Phase = CDRMCustomCommandAsyncAO::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
                                                    aMessage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
                                                    CDRMCustomCommandAsyncAO::ECustomCommandWithoutResult,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
                                                    *this );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
    // Get reference to data1 descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
    TPtr8 data1Ptr(iCDRMCustomCommandAsyncAO2Phase->GetData1FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
    // Check and filter the messages
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
    // Dont Allow Select Custom Commands
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
    if( !IsValidCustomCommandDestination((iCDRMCustomCommandAsyncAO2Phase->GetMMFMessageDestinationPckg())().InterfaceId(), data1Ptr) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
        User::Leave( KErrAccessDenied );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
    aMessage.Complete( KErrNone );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep1L:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
void CDRMPlayServerSession::CustomCommandAsyncStep2L( const RMessage2& aMessage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
    // Read info from client session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
    TPtr8 data1Ptr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
    TPtr8 data2Ptr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
    TPtr8 dataToClientPtr(NULL,NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
    // If there is no pending phase1, then there is something wrong.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
    if ( !iCDRMCustomCommandAsyncAO2Phase )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
        User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
    // Add custCmdAsyncAO object to array of async custom command objects
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
    iActiveAsyncCustomCommands.AppendL( iCDRMCustomCommandAsyncAO2Phase );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
    // aMessage ownership is transferred to custCmdAsyncAO.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
    // After succesful transfer, aMessage should not be completed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
    // anywhere outside of this object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
    iCDRMCustomCommandAsyncAO2Phase->TransferOwnershipL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
    CDRMCustomCommandAsyncAO* drmCCAsyncAO = iCDRMCustomCommandAsyncAO2Phase;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
    iCDRMCustomCommandAsyncAO2Phase = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
    // Get reference to descriptors
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
    data1Ptr.Set(drmCCAsyncAO->GetData1FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
    data2Ptr.Set(drmCCAsyncAO->GetData2FromClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
    // Make call on controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
    drmCCAsyncAO->SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
    if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithReturnStep2 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
        // If date needs to be returned, get reference to the descriptor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
        dataToClientPtr.Set(drmCCAsyncAO->GetDataToClient()->Des());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
        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
   930
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
                                    drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
                                    data1Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
                                    data1Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
                                    data2Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
                                    data2Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
                                    dataToClientPtr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
                                    dataToClientPtr.MaxLength() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
        // Call CustomCommandAsync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
        iPlayUtil->CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
                        drmCCAsyncAO->GetMMFMessageDestinationPckg(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
                        drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
                        data1Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
                        data2Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
                        dataToClientPtr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
                        drmCCAsyncAO->iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
    else /*if ( aMessage.Function() == EDRMPlayServCustomCommandAsyncWithoutReturnStep2 )*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
        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
   953
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().InterfaceId(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
                                    (drmCCAsyncAO->GetMMFMessageDestinationPckg())().DestinationHandle(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
                                    drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
                                    data1Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
                                    data1Ptr.MaxLength(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
                                    data2Ptr.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
                                    data2Ptr.MaxLength() );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
        // Call CustomCommandAsync on play util
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
        iPlayUtil->CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
                        drmCCAsyncAO->GetMMFMessageDestinationPckg(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
                        drmCCAsyncAO->GetMMFMessageFunction(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
                        data1Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
                        data2Ptr,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
                        drmCCAsyncAO->iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
    DEP_PRN0(_L("CDRMPlayServerSession::CustomCommandAsyncStep2L:Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
void CDRMPlayServerSession::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
    DEP_PRN2(_L("CDRMPlayServerSession::MapcInitComplete :-> Status[%d] Duration[%d]"), aError, I64INT(aDuration.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
     //iMessage.Write aError & aDuration to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
    iCallbackState() = EInitComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
    iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
    iErrDurPckg().iDuration = aDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
    iMessage.Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
    iMessage.Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
void CDRMPlayServerSession::MapcPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
    DEP_PRN1(_L("CDRMPlayServerSession::MapcPlayComplete :-> Error[%d]"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
#ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
    TInt status = iTSPClientMapper->SetTspTargetClientToOtherType(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
                                        CTspClientMapper::EStoppedClients,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
                                        iClientProcessId );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
    DEP_PRN2(_L("CDRMPlayServerSession::MapcPlayComplete:Change PID[%x]Status[%d]"), iClientProcessId.Id(), status );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
#endif // #ifdef RD_TSP_CLIENT_MAPPER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
    iState = EStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
    iCallbackState()= EPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
    iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
    iErrDurPckg().iDuration = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
    iMessage.Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
    iMessage.Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
    if ( iMessage2 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
         //iMessage2. Write aError & aDuration to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
        iCallbackState() = EPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
        iMessage2->Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
        iErrDurPckg().iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
        iErrDurPckg().iDuration = 0;    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
        iMessage2->Write(2,iErrDurPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
        iMessage2->Complete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
        delete iMessage2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
        iMessage2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
void CDRMPlayServerSession::MaloLoadingStarted()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
    //send event to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
    iCallbackState() = ELoadingStarted;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
    iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
void CDRMPlayServerSession::MaloLoadingComplete()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
    //send event to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
    iCallbackState() = ELoadingComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
    iMessage.Write(0,iCallbackState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
    iMessage.Complete(KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
    iAsyncComplete= EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
void CDRMPlayServerSession::AsyncCustomCommandCompleted( CDRMCustomCommandAsyncAO* aObject)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
    TInt index = iActiveAsyncCustomCommands.Find( aObject );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
    // This should never happen. Else there is something wrong....
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
    if ( index != KErrNotFound )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
        iActiveAsyncCustomCommands.Remove(index);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
    delete aObject;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
void CDRMPlayServerSession::SetPriorityPreference(const RMessage2 &aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
    iPriority = aMessage.Int0();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
    iPref = (TMdaPriorityPreference)aMessage.Int1();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
TBool CDRMPlayServerSession::IsValidCustomCommandDestination(TUid aDestinationUid, TDesC8& aParam)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
    TBool retValue(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
    if (aDestinationUid == KUidInterfaceMMFDRMControl)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
        retValue = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
    else if ( aDestinationUid == KUidCustomInterfaceBuilderImpl )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
        RDesReadStream stream(aParam);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
        CleanupClosePushL(stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
        TUid paramUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
        TRAPD(status, paramUid.iUid = stream.ReadInt32L());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
        CleanupStack::PopAndDestroy(&stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
        if ( (status == KErrNone ) && (paramUid == KUidAudioOutput) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
            retValue = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
    return retValue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
// End of File
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088