remotecontrol/remotecontrolfw/client/intermediate/public/remconinterfaceselector.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
 @publishedAll
20ac952a623c 201040_02
hgs
parents:
diff changeset
    19
 @released
20ac952a623c 201040_02
hgs
parents:
diff changeset
    20
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    21
20ac952a623c 201040_02
hgs
parents:
diff changeset
    22
#ifndef REMCONINTERFACESELECTOR_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    23
#define REMCONINTERFACESELECTOR_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    24
20ac952a623c 201040_02
hgs
parents:
diff changeset
    25
#include <e32base.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    26
#include <remcon/messagetype.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    27
#include <remcon/clienttype.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    28
#include <remcon/playertype.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    29
#include <remcon/remconinterfaceif.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    30
#include <remconaddress.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    31
20ac952a623c 201040_02
hgs
parents:
diff changeset
    32
class CRemConInterfaceBase;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    33
class CBulkReceiver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    34
class CReceiver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    35
class MRemConErrorObserver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    36
class RRemConInterfaceFeatures;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    37
class RSpecificThreadCallBack;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    38
class CRemConInterfaceDetailsArray;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    39
class RNestableLock;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    40
class RRemConController;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    41
class RRemConTarget;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    42
class RRemConBulk;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    43
class RRemCon;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    44
20ac952a623c 201040_02
hgs
parents:
diff changeset
    45
// Panic information
20ac952a623c 201040_02
hgs
parents:
diff changeset
    46
_LIT(KRemConIfSelPanicCat, "RemConIfSel");
20ac952a623c 201040_02
hgs
parents:
diff changeset
    47
enum 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    48
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    49
	/** The client has given a bad message type. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    50
	ERemConIfSelBadMessageType = 0,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    51
20ac952a623c 201040_02
hgs
parents:
diff changeset
    52
	/** The client has already called OpenTargetL successfully.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    53
		
20ac952a623c 201040_02
hgs
parents:
diff changeset
    54
	This is no longer an illegal condition and so the panic will never
20ac952a623c 201040_02
hgs
parents:
diff changeset
    55
	be raised.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    56
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    57
	ERemConIfSelTargetSessionAlreadyExists = 1,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    58
20ac952a623c 201040_02
hgs
parents:
diff changeset
    59
	/** The client has already called OpenControllerL successfully.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    60
		
20ac952a623c 201040_02
hgs
parents:
diff changeset
    61
	This is no longer an illegal condition and so the panic will never
20ac952a623c 201040_02
hgs
parents:
diff changeset
    62
	be raised.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    63
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    64
	ERemConIfSelControllerSessionAlreadyExists = 2,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    65
20ac952a623c 201040_02
hgs
parents:
diff changeset
    66
	/** The client has created (and registered) an outer layer interface of a 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    67
	type which is already registered. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    68
	ERemConIfSelInterfaceOfThatTypeAlreadyRegistered = 3,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    69
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    70
	/** The client has not offended- there is a defect in some layer of the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    71
	Remote Control system. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    72
	ERemConIfSelInternalError = 4,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    73
20ac952a623c 201040_02
hgs
parents:
diff changeset
    74
	/** An outer-layer interface has been instantiated (and registered with 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    75
	the intermediate layer) after OpenControllerL or OpenTargetL has been 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    76
	successfully called. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    77
	ERemConIfSelTardyInterfaceRegistration = 5,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    78
20ac952a623c 201040_02
hgs
parents:
diff changeset
    79
	/** OpenControllerL has not successfully been called before using an API 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    80
	which expects a controller session to have been created. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    81
	ERemConIfSelNoControllerSession = 6,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    82
20ac952a623c 201040_02
hgs
parents:
diff changeset
    83
	/** OpenTargetL has not successfully been called before using an API which 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    84
	expects a target session to have been created. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    85
	ERemConIfSelNoTargetSession = 7,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    86
20ac952a623c 201040_02
hgs
parents:
diff changeset
    87
	/** Neither OpenControllerL not OpenTargetL has been successfully called 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    88
	before using an API which expects either a controller or a target session 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    89
	to have been created. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    90
	ERemConIfSelNoSession = 8,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    91
20ac952a623c 201040_02
hgs
parents:
diff changeset
    92
	/** An outer layer DLL has instantiated CRemConInterfaceBase with an 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    93
	illegal client type. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    94
	ERemConIfSelUndefinedClientType = 9,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    95
20ac952a623c 201040_02
hgs
parents:
diff changeset
    96
	/** An implementation of CRemConInterfaceBase::GetInterface does not 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    97
	provide an implementation of MRemConInterfaceIf. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
    98
	ERemConIfSelNoInterfaceImplementation = 10,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    99
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   100
	/** A client has created bulk interfaces in multiple different threads,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   101
	all bulk interfaces must be created in the same thread*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   102
	ERemConIfSelMultipleBulkInterfaceThreads = 11,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   103
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   104
20ac952a623c 201040_02
hgs
parents:
diff changeset
   105
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   106
CRemConInterfaceSelector is only instantiable via its NewL function. It is not 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   107
derivable.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   108
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   109
NONSHARABLE_CLASS(CRemConInterfaceSelector) : public CBase
20ac952a623c 201040_02
hgs
parents:
diff changeset
   110
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
   111
public: 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   112
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   113
	Factory method.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   114
	@return Ownership of a new CRemConInterfaceSelector.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   115
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   116
	IMPORT_C static CRemConInterfaceSelector* NewL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   117
20ac952a623c 201040_02
hgs
parents:
diff changeset
   118
	/** Destructor. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
   119
	IMPORT_C ~CRemConInterfaceSelector();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   120
20ac952a623c 201040_02
hgs
parents:
diff changeset
   121
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
   122
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   123
	Register the interface with the selector. This is called by the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   124
	interface's BaseConstructL. Takes ownership of aInterface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   125
	 This function is not to be called outside of remconinterfacebase.dll. It is available for compatibility with previous
20ac952a623c 201040_02
hgs
parents:
diff changeset
   126
	 versions, but it is intended to be called only by CRemConInterfaceBase::BaseConstructL.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   127
	 CRemConInterfaceBase-derived classes should indirectly perform a RegisterInterfaceL, by calling
20ac952a623c 201040_02
hgs
parents:
diff changeset
   128
	 CRemConInterfaceBase::BaseConstructL from their construction functions.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   129
	@param aInterface The interface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   130
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   131
	IMPORT_C void RegisterInterfaceL(CRemConInterfaceBase& aInterface);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   132
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   133
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   134
	Register the interface with the selector. This is called by the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   135
	interface's BaseConstructL. Takes ownership of aInterface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   136
	 This function is not to be called outside of remconinterfacebase.dll. It is available for compatibility with previous
20ac952a623c 201040_02
hgs
parents:
diff changeset
   137
	 versions, but it is intended to be called only by CRemConInterfaceBase::BaseConstructL.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   138
	 CRemConInterfaceBase-derived classes should indirectly perform a RegisterInterfaceL, by calling
20ac952a623c 201040_02
hgs
parents:
diff changeset
   139
	 CRemConInterfaceBase::BaseConstructL from their construction functions.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   140
	@param aInterface The interface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   141
	@param aRemConInterfaceFeatures The operation IDs of the interface.  Ownership is retained by the caller.  Any necessary
20ac952a623c 201040_02
hgs
parents:
diff changeset
   142
			data will be copied by the interface selector.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   143
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   144
	void RegisterInterfaceL(CRemConInterfaceBase& aInterface, RRemConInterfaceFeatures& aRemConInterfaceFeatures);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   145
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   146
	Register an error observer.  This is provided to allow the client to
20ac952a623c 201040_02
hgs
parents:
diff changeset
   147
	discover when an error has occurred passively.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   148
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   149
	@param aObserver An error observer to be notified on a passive error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   150
					 NULL to stop receiving notifications.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   151
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   152
	IMPORT_C void RegisterErrorObserver(MRemConErrorObserver* aObserver);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   153
20ac952a623c 201040_02
hgs
parents:
diff changeset
   154
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   155
	Opens a controller session to RemCon. The session is connectionless until 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   156
	such time as GoConnectionOriented may be called.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   157
	@leave KErrInUse If a controller session is already open.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   158
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   159
	IMPORT_C void OpenControllerL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   160
20ac952a623c 201040_02
hgs
parents:
diff changeset
   161
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   162
	Makes the controller session (which must already exist- use 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   163
	OpenControllerL) connection-oriented.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   164
	@param aConnection The remote to talk to. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   165
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   166
	IMPORT_C void GoConnectionOrientedL(const TRemConAddress& aConnection);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   167
20ac952a623c 201040_02
hgs
parents:
diff changeset
   168
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   169
	Makes the controller session (which must already exist- use 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   170
	OpenControllerL) connectionless.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   171
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   172
	IMPORT_C void GoConnectionlessL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   173
20ac952a623c 201040_02
hgs
parents:
diff changeset
   174
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   175
	Brings up a bearer-level connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   176
	The controller session must already exist (use OpenControllerL) and 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   177
	be connection-oriented.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   178
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   179
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   180
	IMPORT_C void ConnectBearer(TRequestStatus& aStatus);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   181
20ac952a623c 201040_02
hgs
parents:
diff changeset
   182
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   183
	Cancels interest in the completion of a ConnectBearer request.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   184
	@return KErrNone.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   185
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   186
	IMPORT_C TInt ConnectBearerCancel();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   187
20ac952a623c 201040_02
hgs
parents:
diff changeset
   188
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   189
	Destroys a bearer-level connection. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   190
	The controller session must already exist (use OpenControllerL) and be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   191
	connection-oriented.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   192
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   193
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   194
	IMPORT_C void DisconnectBearer(TRequestStatus& aStat);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   195
20ac952a623c 201040_02
hgs
parents:
diff changeset
   196
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   197
	Cancels interest in the completion of a DisconnectBearer request.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   198
	@return KErrNone.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   199
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   200
	IMPORT_C TInt DisconnectBearerCancel();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   201
20ac952a623c 201040_02
hgs
parents:
diff changeset
   202
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   203
	Opens a target session to RemCon.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   204
	@leave KErrInUse If a target session is already open.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   205
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   206
	IMPORT_C void OpenTargetL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   207
20ac952a623c 201040_02
hgs
parents:
diff changeset
   208
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   209
	Opens a target session to RemCon.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   210
	@param aPlayerType The type of player
20ac952a623c 201040_02
hgs
parents:
diff changeset
   211
	@param aPlayerSubType The sub-type of the player
20ac952a623c 201040_02
hgs
parents:
diff changeset
   212
	@param aPlayerName  The name of the player in UTF-8.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   213
	@leave KErrInUse If a target session is already open.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   214
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   215
	IMPORT_C void OpenTargetL(TPlayerType aPlayerType, TPlayerSubType aPlayerSubType, const TDesC8& aPlayerName);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   216
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   217
	Sends a message to the remote device(s).
20ac952a623c 201040_02
hgs
parents:
diff changeset
   218
	There should be only one command and response outstanding at any one time.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   219
	Send cannot be called again until aStatus is completed.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   220
	@panic RemConClient 4 If a send is already outstanding
20ac952a623c 201040_02
hgs
parents:
diff changeset
   221
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   222
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   223
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   224
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   225
	@param aNumRemotes On success, the number of remotes the message was 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   226
	successfully sent to.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   227
	@param aMsgType Whether the message is a command or a response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   228
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   229
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   230
	IMPORT_C void Send(TRequestStatus& aStatus, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   231
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   232
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   233
		TUint& aNumRemotes,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   234
		TRemConMessageType aMsgType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   235
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   236
20ac952a623c 201040_02
hgs
parents:
diff changeset
   237
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   238
	Sends a message to the remote device(s).
20ac952a623c 201040_02
hgs
parents:
diff changeset
   239
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   240
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   241
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   242
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   243
	@param aNumRemotes On success, the number of remotes the message was 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   244
	successfully sent to.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   245
	@param aMsgType Whether the message is a command or a response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   246
	@param aMsgSubType The subtype of the command of response
20ac952a623c 201040_02
hgs
parents:
diff changeset
   247
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   248
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   249
	IMPORT_C void Send(TRequestStatus& aStatus, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   250
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   251
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   252
		TUint& aNumRemotes,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   253
		TRemConMessageType aMsgType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   254
		TRemConMessageSubType aMsgSubType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   255
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   256
20ac952a623c 201040_02
hgs
parents:
diff changeset
   257
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   258
	Sends a 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   259
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   260
	IMPORT_C void SendNotify(TRequestStatus& aStatus, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   261
			TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   262
			TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   263
			TRemConMessageType aMsgType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   264
			TRemConMessageSubType aMsgSubType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   265
			const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   266
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   267
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   268
	This method is for internal sub-system use only and should be not be used otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   269
	Sends a message to the remote device(s), without waiting for the send to complete
20ac952a623c 201040_02
hgs
parents:
diff changeset
   270
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   271
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   272
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   273
	@param aMsgType Whether the message is a command or a response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   274
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   275
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   276
	IMPORT_C TInt SendUnreliable(
20ac952a623c 201040_02
hgs
parents:
diff changeset
   277
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   278
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   279
		TRemConMessageType aMsgType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   280
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   281
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   282
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   283
	This method is for internal sub-system use only and should be not be used otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   284
	Sends a message to the remote device(s), without waiting for the send to complete
20ac952a623c 201040_02
hgs
parents:
diff changeset
   285
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   286
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   287
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   288
	@param aMsgType Whether the message is a command or a response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   289
	@param aMsgSubType The subtype of the command of response
20ac952a623c 201040_02
hgs
parents:
diff changeset
   290
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   291
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   292
	IMPORT_C TInt SendUnreliable(
20ac952a623c 201040_02
hgs
parents:
diff changeset
   293
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   294
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   295
		TRemConMessageType aMsgType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   296
		TRemConMessageSubType aMsgSubType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   297
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   298
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   299
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   300
	Cancels interest in the completion of a Send request.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   301
	@param aMsgType The type of the message, the completion of the send of 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   302
	which we are not interested in. This is needed because a single 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   303
	CRemConInterfaceSelector may have two sends outstanding at once, one on 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   304
	a controller session and another on a target session.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   305
	@return KErrNone.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   306
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   307
	IMPORT_C TInt SendCancel(TRemConMessageType aMsgType);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   308
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   309
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   310
	This method is for internal sub-system use only and should be not be used otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   311
	Sends a message to the remote device(s) through the bulk path.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   312
	There should be only one response outstanding at any one time.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   313
	Send cannot be called again until aStatus is completed.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   314
	@panic RemConClient 4 If a send is already outstanding
20ac952a623c 201040_02
hgs
parents:
diff changeset
   315
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   316
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   317
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   318
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   319
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   320
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   321
	IMPORT_C void SendBulk(TRequestStatus& aStatus, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   322
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   323
		TUint aOperationId,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   324
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   325
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   326
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   327
	This method is for internal sub-system use only and should be not be used otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   328
	Sends a message to the remote device(s) through the bulk path, without 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   329
	waiting for the send to complete.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   330
	@param aInterfaceUid The UID of the concrete (outer-layer) interface 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   331
	sending the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   332
	@param aOperationId The interface-specific operation identifier.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   333
	@param aData Any associated message data in interface-specific format.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   334
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   335
	IMPORT_C TInt SendBulkUnreliable(
20ac952a623c 201040_02
hgs
parents:
diff changeset
   336
		TUid aInterfaceUid,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   337
		TUint aOperationId,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   338
		const TDesC8& aData = KNullDesC8());
20ac952a623c 201040_02
hgs
parents:
diff changeset
   339
20ac952a623c 201040_02
hgs
parents:
diff changeset
   340
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   341
	This method is for internal sub-system use only and should be not be used otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   342
	Cancels interest in the completion of a BulkSend request.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   343
	@return KErrNone.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   344
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   345
	IMPORT_C TInt SendBulkCancel();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   346
20ac952a623c 201040_02
hgs
parents:
diff changeset
   347
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   348
	Only called internally, by the Active Object which sucks messages out of 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   349
	RemCon. Note that the message type is not given- it is interpolated from 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   350
	the type of the session doing the receiving.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   351
	@param aInterfaceUid Interface UID of the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   352
	@param aOperationId Operation ID of the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   353
	@param aMsgSubType The message subtype.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   354
	@param aRemoteAddress The address of the remote which sent the message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   355
	@param aData Data associated with the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   356
	@param aType The type of session which received the message (from which 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   357
	the type of the message can be interpolated).
20ac952a623c 201040_02
hgs
parents:
diff changeset
   358
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   359
	void ReceiveComplete(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   360
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   361
		TRemConMessageSubType aMsgSubType,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   362
		const TRemConAddress& aRemoteAddress,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   363
		const TDesC8& aData,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   364
		TRemConClientType aType);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   365
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   366
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   367
	Only called internally, by the Active Object which sucks messages out of 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   368
	RemCon. Note that the message type is not given- it is interpolated from 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   369
	the type of the session doing the receiving.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   370
	@param aInterfaceUid Interface UID of the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   371
	@param aOperationId Operation ID of the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   372
	@param aData Data associated with the new message.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   373
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   374
	void BulkReceiveComplete(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   375
		TUint aOperationId,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   376
		const TDesC8& aData);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   377
20ac952a623c 201040_02
hgs
parents:
diff changeset
   378
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   379
	Only called internally, by the Active Object which sucks messages out of 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   380
	RemCon.  This is called in the case of a session error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   381
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   382
	@param The error that has occurred.  If this is KErrServerTerminated, the
20ac952a623c 201040_02
hgs
parents:
diff changeset
   383
		   error is fatal and the session must be restarted before any new 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   384
		   messages can be received.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   385
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   386
	void Error(TInt aError);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   387
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   388
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   389
	Only called internally, by the Active Object which sucks messages out of 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   390
	RemCon Bulk Server.  This is called in the case of a session error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   391
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   392
	@param The error that has occurred.  If this is KErrServerTerminated, the
20ac952a623c 201040_02
hgs
parents:
diff changeset
   393
		   error is fatal and the session must be restarted before any new 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   394
		   messages can be received.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   395
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   396
	void BulkError(TInt aError);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   397
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   398
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   399
	Only called internally, by the Active Object which sucks messages out of
20ac952a623c 201040_02
hgs
parents:
diff changeset
   400
	RemCon (bulk server).
20ac952a623c 201040_02
hgs
parents:
diff changeset
   401
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   402
	void BulkSessionConnectL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   403
20ac952a623c 201040_02
hgs
parents:
diff changeset
   404
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   405
	Getter for the current set of connections in the system (not just those 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   406
	associated with this session). The client is responsible for cleaning up 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   407
	aConnections- the addresses will be on the heap.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   408
	@param aConnections A collection of remote addresses, representing all the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   409
	currently extant connections.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   410
	@return Error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   411
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   412
	IMPORT_C TInt GetConnections(TSglQue<TRemConAddress>& aConnections);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   413
20ac952a623c 201040_02
hgs
parents:
diff changeset
   414
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   415
	Notification for changes in the set of connections.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   416
	@param aStatus TRequestStatus for asynchronous completion.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   417
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   418
	IMPORT_C void NotifyConnectionsChange(TRequestStatus& aStatus);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   419
20ac952a623c 201040_02
hgs
parents:
diff changeset
   420
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   421
	Cancels interest in the completion of an outstanding 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   422
	NotifyConnectionsChange operation.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   423
	@return KErrNone.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   424
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   425
	IMPORT_C TInt NotifyConnectionsChangeCancel();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   426
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   427
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   428
	To determine if a target session has been opened.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   429
	@return EFalse if no session has been opened, ETrue otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   430
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   431
	IMPORT_C TBool TargetOpened() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   432
20ac952a623c 201040_02
hgs
parents:
diff changeset
   433
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   434
	To determine if a controller session has been opened.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   435
	@return EFalse if no session has been opened, ETrue otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   436
	*/	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   437
	IMPORT_C TBool ControllerOpened() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   438
20ac952a623c 201040_02
hgs
parents:
diff changeset
   439
private:
20ac952a623c 201040_02
hgs
parents:
diff changeset
   440
	CRemConInterfaceSelector();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   441
	void ConstructL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   442
20ac952a623c 201040_02
hgs
parents:
diff changeset
   443
private: // utility
20ac952a623c 201040_02
hgs
parents:
diff changeset
   444
	void AssertSession(RRemCon* aSess, TInt aPanicCode) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   445
	TInt TryToReconnect();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   446
	TInt TryToReconnectBulk();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   447
	void OpenTargetCommonL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   448
	void RegisterInterfaceCommonL(CRemConInterfaceBase& aInterface, const TDesC8& aFeatures);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   449
	void RegisterInterestedApisL(TRemConClientType aType);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   450
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   451
	void EstablishBulkThreadBindingL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   452
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   453
	static TInt StaticBulkCleanup(TAny* aSelf);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   454
	void BulkCleanup();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   455
	TBool BulkOpened() const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   456
20ac952a623c 201040_02
hgs
parents:
diff changeset
   457
private: // owned
20ac952a623c 201040_02
hgs
parents:
diff changeset
   458
	CRemConInterfaceDetailsArray* iInterfaces;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   459
20ac952a623c 201040_02
hgs
parents:
diff changeset
   460
	RRemConController* iControllerSession;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   461
	RRemConTarget* iTargetSession;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   462
	RRemConBulk* iBulkSession;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   463
20ac952a623c 201040_02
hgs
parents:
diff changeset
   464
	CReceiver* iTargetReceiver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   465
	CReceiver* iControllerReceiver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   466
	CBulkReceiver* iBulkReceiver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   467
20ac952a623c 201040_02
hgs
parents:
diff changeset
   468
	/** For all registered interfaces, this is the size of the biggest 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   469
	operation-associated data lump. */
20ac952a623c 201040_02
hgs
parents:
diff changeset
   470
	TUint iControlMaxDataLength;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   471
	TUint iBulkMaxDataLength;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   472
20ac952a623c 201040_02
hgs
parents:
diff changeset
   473
	// The session to use for NotifyConnectionsChange and 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   474
	// NotifyConnectionsChangeCancel. It doesn't matter which we use- just one 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   475
	// that's connected will do. The only interesting bit is that the session 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   476
	// we called NotifyConnectionsChange on should be the one we call 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   477
	// NotifyConnectionsChangeCancel on, but as sessions are only closed when 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   478
	// 'this' comes down that's not a complication.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   479
	RRemCon* iNotificationSession;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   480
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   481
	TRemConAddress iAddress;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   482
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   483
	RHeap* iBulkHeap;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   484
	RThread iBulkThread;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   485
	RHeap* iSharedThreadHeap;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   486
	RSpecificThreadCallBack* iBulkCleanupCall;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   487
	RNestableLock*	iLock;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   488
private: // unowned	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   489
	MRemConErrorObserver* iErrorObserver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   490
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   491
20ac952a623c 201040_02
hgs
parents:
diff changeset
   492
#endif // REMCONINTERFACESELECTOR_H