services/terminalmodeservice/inc/upnptmserverimpl.h
author hgs
Fri, 03 Sep 2010 09:13:04 +0300
changeset 31 b51a6f4f15ba
parent 24 e9457ebcc4df
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
hgs
parents:
diff changeset
     1
/**
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: CUpnpTmServerImpl class declaration
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef __UPNPTMSERVERIMPL_H__
hgs
parents:
diff changeset
    19
#define __UPNPTMSERVERIMPL_H__
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// System Includes
hgs
parents:
diff changeset
    22
#include <upnpsettings.h>
hgs
parents:
diff changeset
    23
#include <upnphttpserversession.h>
hgs
parents:
diff changeset
    24
#include <utf.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// User Includes
hgs
parents:
diff changeset
    27
#include "upnptmserver.h"
hgs
parents:
diff changeset
    28
#include "upnptminfoelement.h"
hgs
parents:
diff changeset
    29
#include "upnptmserverdevice.h"
hgs
parents:
diff changeset
    30
#include "upnpremotableappstore.h"
hgs
parents:
diff changeset
    31
#include "upnptmfilteredapplist.h"
hgs
parents:
diff changeset
    32
#include "upnptmiconmapping.h"
hgs
parents:
diff changeset
    33
#include "upnpsvgimageconverter.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
//Literals
hgs
parents:
diff changeset
    36
_LIT8(KStartApp,                 "&lt;app&gt;");
hgs
parents:
diff changeset
    37
_LIT8(KEndApp,                   "&lt;/app&gt;");
hgs
parents:
diff changeset
    38
_LIT8(KStartIconList,            "&lt;iconList&gt;");
hgs
parents:
diff changeset
    39
_LIT8(KEndIconList,              "&lt;/iconList&gt;");
hgs
parents:
diff changeset
    40
_LIT8(KStartNameDesc,            "&lt;description&gt;");
hgs
parents:
diff changeset
    41
_LIT8(KEndNameDesc,              "&lt;/description&gt;");
hgs
parents:
diff changeset
    42
_LIT8(KWildCard,                 "*");
hgs
parents:
diff changeset
    43
_LIT8(KAtToken,                  "@");
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
//Constants
hgs
parents:
diff changeset
    46
const TUint KActionBufferLength  = 1000;
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
/**
hgs
parents:
diff changeset
    49
 * Implementation class ( body ) for CUpnpTmServer class
hgs
parents:
diff changeset
    50
 *
hgs
parents:
diff changeset
    51
 */
hgs
parents:
diff changeset
    52
class CUpnpTmServerImpl : public CBase 
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
public:
hgs
parents:
diff changeset
    55
    static CUpnpTmServerImpl* NewL( CUpnpTmServerDeviceInfo& aDeviceInfo, 
hgs
parents:
diff changeset
    56
                                    MUpnpTmServerObserver& aTmServerObserver );
hgs
parents:
diff changeset
    57
    
hgs
parents:
diff changeset
    58
    virtual ~CUpnpTmServerImpl();   
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
    void RegisterAppL( CUpnpRemotableApp* aRemotableApp );
hgs
parents:
diff changeset
    61
    void RegisterAppsL(const RPointerArray<CUpnpRemotableApp>& aRemotableAppList);
hgs
parents:
diff changeset
    62
    TInt UnRegisterApp( TUint aAppId );
hgs
parents:
diff changeset
    63
    TInt UnRegisterApps( const RArray<TUint>& aAppIdArray );
hgs
parents:
diff changeset
    64
                                                                  
hgs
parents:
diff changeset
    65
    void SetXmlSignatureL( const TDesC8& aSignature );  
hgs
parents:
diff changeset
    66
    const TDesC8& XmlSignature()const;
hgs
parents:
diff changeset
    67
    // Start and Stop methods
hgs
parents:
diff changeset
    68
    void StartDeviceL();
hgs
parents:
diff changeset
    69
    void StopDeviceL();
hgs
parents:
diff changeset
    70
    CUpnpRemotableApp& GetRemotableApp( TUint aAppId, TInt& aErr );
hgs
parents:
diff changeset
    71
    void GenerateUrlComponents( CUpnpHttpServerSession& aHttpServerSession );
31
hgs
parents: 24
diff changeset
    72
    const TDesC8& ConvertIntToDescriptor( TUint aIntVal );
24
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
public:
hgs
parents:
diff changeset
    75
    //Action handling methods
hgs
parents:
diff changeset
    76
    const TDesC8& GetApplicationListL( const TDesC8& aAppListFilter,
hgs
parents:
diff changeset
    77
                                   TUint aProfileId, TTerminalModeErrorCode& aErr );
hgs
parents:
diff changeset
    78
    TTerminalModeErrorCode LaunchApp( TUint aAppId, TUint aProfileId, RBuf8& aUrl ); 
hgs
parents:
diff changeset
    79
    TTerminalModeErrorCode TerminateApp( TUint aAppId, TUint aProfileId );
hgs
parents:
diff changeset
    80
    void GetAppStatusL( const TDesC8& aAppIdBuffer,RBuf8& aStatusType,
hgs
parents:
diff changeset
    81
                                              TTerminalModeErrorCode& aErr );
hgs
parents:
diff changeset
    82
    TTerminalModeErrorCode GetMaxNumProfiles( TUint& aNumMaxProfiles );
hgs
parents:
diff changeset
    83
    TTerminalModeErrorCode SetClientProfile( TUint aProfileId, const TDesC8& aInputClientProfile,
hgs
parents:
diff changeset
    84
                                                                         RBuf8& aResultProfile );
hgs
parents:
diff changeset
    85
    TTerminalModeErrorCode GetClientProfile( TUint aProfileId, RBuf8& aClientProfile );
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    //Event Notification methods
hgs
parents:
diff changeset
    88
    void UpdateAppStatusL( const RArray<TUint>& aUpdatedAppIdList );
hgs
parents:
diff changeset
    89
    void UpdateAppListL( const RArray<TUint>& aUpdatedAppIdList );
hgs
parents:
diff changeset
    90
    void UpdateUnusedProfileIdsL( const RArray<TUint>& aUnusedProfileIdList );
hgs
parents:
diff changeset
    91
    
hgs
parents:
diff changeset
    92
    // Application icon fetching method
hgs
parents:
diff changeset
    93
    void GetIconInfoL( const TDesC8& aUrl, CUpnpHttpServerTransaction*& aResultTrans );
hgs
parents:
diff changeset
    94
    
hgs
parents:
diff changeset
    95
private:
hgs
parents:
diff changeset
    96
    CUpnpTmServerImpl( MUpnpTmServerObserver& aTmServerObserver );
hgs
parents:
diff changeset
    97
    void ConstructL(  CUpnpTmServerDeviceInfo&  aDeviceInfo );
hgs
parents:
diff changeset
    98
    void RestoreIap();
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
    void AppendDataL( const TDesC8& aData );
hgs
parents:
diff changeset
   101
    TTerminalModeErrorCode AuthorizeApp( TUint aAppId );
hgs
parents:
diff changeset
   102
    void ConstructActionResponseBufferL( TInt aAppIndex ); 
hgs
parents:
diff changeset
   103
    void ConstructLeadingSoapBufferL( TInt aAppIndex );
hgs
parents:
diff changeset
   104
    void SetRemotableAppIconInfoL(  const CUpnpTerminalModeIcon& aTmIcon );
hgs
parents:
diff changeset
   105
    void SetAllowedProfileIdListL( TInt aAppIndex );
hgs
parents:
diff changeset
   106
    void SetTerminalModeInfoElementL( const CUpnpTmInfoElement& aTmInfoElement );
hgs
parents:
diff changeset
   107
    void SetResourceStatusL( TInt aAppIndex );
hgs
parents:
diff changeset
   108
    void CreateGetAppStatusResponseL( TUint aAppId, TTerminalModeErrorCode& aErr ); 
hgs
parents:
diff changeset
   109
    void CreateEventMessageL( const RArray<TUint>& aIdList );
hgs
parents:
diff changeset
   110
    friend class CUpnpTmFilteredAppList;
hgs
parents:
diff changeset
   111
 
hgs
parents:
diff changeset
   112
private:
hgs
parents:
diff changeset
   113
    CUpnpTmServerDevice*                  iTmServerDevice;
hgs
parents:
diff changeset
   114
    MUpnpTmServerObserver&                iTmServerObserver;
hgs
parents:
diff changeset
   115
    RBuf8                                 iResponseBuf;
hgs
parents:
diff changeset
   116
    TBuf8<UpnpString::KShortStringLength> iAddrBuf;
hgs
parents:
diff changeset
   117
    TBuf8<UpnpString::KShortStringLength> iPortBuf;   
hgs
parents:
diff changeset
   118
    RBuf8                                 iXmSignature;
hgs
parents:
diff changeset
   119
    CUpnpRemotableAppStore*               iAppStore;
hgs
parents:
diff changeset
   120
    RFs                                   iIconFileSession;
hgs
parents:
diff changeset
   121
    CUpnpTmFilteredAppList*               iFilteredAppList;
hgs
parents:
diff changeset
   122
    TBuf8<UpnpString::KShortStringLength> iBufVal;
hgs
parents:
diff changeset
   123
    CUpnpSettings*                        iIapSetting;
hgs
parents:
diff changeset
   124
    TInt                                  iIapId;   // Original IAP ID used by DLNA  
hgs
parents:
diff changeset
   125
    TUint                                 iProfileId;
hgs
parents:
diff changeset
   126
    // Mapping between application icon filepath and its URL
hgs
parents:
diff changeset
   127
    CUpnpTmIconMapping*                   iIconMapping;
hgs
parents:
diff changeset
   128
    };
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
#endif  // __UPNPTMSERVERIMPL_H__