remotecontrol/remotecontrolfw/server/inc/convertermanager.h
author hgs
Wed, 13 Oct 2010 16:20:29 +0300
changeset 51 20ac952a623c
permissions -rw-r--r--
201040_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
20ac952a623c 201040_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
20ac952a623c 201040_02
hgs
parents:
diff changeset
     2
// All rights reserved.
20ac952a623c 201040_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
20ac952a623c 201040_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
20ac952a623c 201040_02
hgs
parents:
diff changeset
     7
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    10
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    11
// Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    12
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    13
// Description:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    14
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    15
20ac952a623c 201040_02
hgs
parents:
diff changeset
    16
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    17
 @file
20ac952a623c 201040_02
hgs
parents:
diff changeset
    18
 @internalComponent
20ac952a623c 201040_02
hgs
parents:
diff changeset
    19
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    20
20ac952a623c 201040_02
hgs
parents:
diff changeset
    21
#ifndef CONVERTERMANAGER_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    22
#define CONVERTERMANAGER_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    23
20ac952a623c 201040_02
hgs
parents:
diff changeset
    24
#include <e32base.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    25
20ac952a623c 201040_02
hgs
parents:
diff changeset
    26
class CRemConConverterPlugin;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    27
class MRemConConverterInterface;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    28
20ac952a623c 201040_02
hgs
parents:
diff changeset
    29
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    30
Converter manager.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    31
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    32
NONSHARABLE_CLASS(CConverterManager) : public CBase
20ac952a623c 201040_02
hgs
parents:
diff changeset
    33
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    34
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    35
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    36
	Converter manager construction.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    37
	@return Ownership of a new CConverterManager object
20ac952a623c 201040_02
hgs
parents:
diff changeset
    38
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    39
	static CConverterManager* NewL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    40
20ac952a623c 201040_02
hgs
parents:
diff changeset
    41
	/** Destructor. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    42
	~CConverterManager();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    43
20ac952a623c 201040_02
hgs
parents:
diff changeset
    44
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    45
	/** Returns the converter interface which supports the given outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    46
	API and bearer UIDs, or NULL if it does not exist. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    47
	MRemConConverterInterface* Converter(TUid aInterfaceUid, TUid aBearerUid) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    48
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    49
	/** Returns the converter interface which supports the given outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    50
	API and bearer UIDs, or NULL if it does not exist. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    51
	MRemConConverterInterface* Converter(const TDesC8& aInterfaceData, TUid aBearerUid) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    52
20ac952a623c 201040_02
hgs
parents:
diff changeset
    53
private:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    54
	/** Constructor. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    55
	CConverterManager();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    56
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    57
	/** 2nd-phase construction. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    58
	void ConstructL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    59
20ac952a623c 201040_02
hgs
parents:
diff changeset
    60
private: // utility
20ac952a623c 201040_02
hgs
parents:
diff changeset
    61
	/** Called during (2-phase) construction to instantiate all the converter 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    62
	plugins, from ROM only. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    63
	void LoadAllConvertersL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    64
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    65
#ifdef __FLOG_ACTIVE
20ac952a623c 201040_02
hgs
parents:
diff changeset
    66
	void LogConverters() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    67
#endif // __FLOG_ACTIVE
20ac952a623c 201040_02
hgs
parents:
diff changeset
    68
20ac952a623c 201040_02
hgs
parents:
diff changeset
    69
private: // owned
20ac952a623c 201040_02
hgs
parents:
diff changeset
    70
	RPointerArray<CRemConConverterPlugin> iConverters;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    71
20ac952a623c 201040_02
hgs
parents:
diff changeset
    72
	// Struct wrapping a pointer to a converter interface object with the UID 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    73
	// identifying that interface and the UID identifying the converter 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    74
	// supplying the interface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    75
	// In the current implementation iIfUid will always be the same as we've 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    76
	// only (so far) released one version of the converter API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    77
	struct TInterfaceInfo
20ac952a623c 201040_02
hgs
parents:
diff changeset
    78
		{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    79
		MRemConConverterInterface* iIf;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    80
		TUid iIfUid;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    81
		TUid iConverterUid;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    82
		};
20ac952a623c 201040_02
hgs
parents:
diff changeset
    83
	RArray<TInterfaceInfo> iConverterIfs;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    84
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
    85
20ac952a623c 201040_02
hgs
parents:
diff changeset
    86
#endif // CONVERTERMANAGER_H