epoc32/include/comms-infras/ss_connselect.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     2
// All rights reserved.
williamr@4
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@4
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     7
//
williamr@4
     8
// Initial Contributors:
williamr@4
     9
// Nokia Corporation - initial contribution.
williamr@4
    10
//
williamr@4
    11
// Contributors:
williamr@4
    12
//
williamr@4
    13
// Description:
williamr@4
    14
//
williamr@4
    15
williamr@4
    16
#if !defined(__SS_CONNSELECT_H__)
williamr@4
    17
#define __SS_CONNSELECT_H__
williamr@4
    18
williamr@4
    19
#include <ss_select.h>
williamr@4
    20
#include <comms-infras/ss_mcprnodemessages.h>
williamr@4
    21
#include <comms-infras/ss_platsec_apiext.h>
williamr@4
    22
#include <comms-infras/ss_nodemessages_serviceprovider.h>
williamr@4
    23
williamr@4
    24
namespace ESock
williamr@4
    25
{
williamr@4
    26
williamr@4
    27
class CSelectionRequest : public CBase,
williamr@4
    28
                          public Messages::ASimpleNodeIdBase,
williamr@4
    29
	                      public MPlatsecApiExt,
williamr@4
    30
						  protected NetInterfaces::TInterfaceControl,
williamr@4
    31
						  public ITFHIERARCHY_1(CSelectionRequest,MPlatsecApiExt)
williamr@4
    32
williamr@4
    33
/**
williamr@4
    34
Connection selection request.
williamr@4
    35
williamr@4
    36
@internalTechnology
williamr@4
    37
*/
williamr@4
    38
	{
williamr@4
    39
public:
williamr@4
    40
	typedef ITFHIERARCHY_1(CSelectionRequest,MPlatsecApiExt) TIfStaticFetcherNearestInHierarchy;
williamr@4
    41
williamr@4
    42
public:
williamr@4
    43
	static CSelectionRequest* NewL(const Messages::TRuntimeCtxId& aRequestingClient, const Messages::TNodeId& aTierManagerId);
williamr@4
    44
	virtual ~CSelectionRequest();
williamr@4
    45
williamr@4
    46
	void Select(const TSelectionPrefs& aSelectionPreferences);
williamr@4
    47
	void SelectConnPrefList(const RConnPrefList& aConnPrefList);
williamr@4
    48
	void Provision(const Meta::SMetaData* aProvisionConfig);
williamr@4
    49
	void Cancel(); //Cancels all active requests
williamr@4
    50
williamr@4
    51
	void JoinComplete(const Messages::TNodeId& aSender, TCFPeer::TJoinComplete& aCFMessage);
williamr@4
    52
    void CommsBinderResponse(const TCFServiceProvider::TCommsBinderResponse& aMsg);
williamr@4
    53
	void SelectComplete(const Messages::TNodeId& aSenderId, const Messages::TNodeId& aMcprId, const TProviderInfo& aMcprInfo);
williamr@4
    54
williamr@4
    55
	// from MPlatsecApiExt
williamr@4
    56
	virtual TInt SecureId(TSecureId& aResult) const;
williamr@4
    57
    virtual TInt VendorId(TVendorId& aResult) const;
williamr@4
    58
    virtual TBool HasCapability(const TCapability aCapability) const;
williamr@4
    59
    virtual TInt CheckPolicy(const TSecurityPolicy& aPolicy) const;
williamr@4
    60
williamr@4
    61
	void ReturnInterfacePtrL(MPlatsecApiExt*& aInterface);
williamr@4
    62
	virtual NetInterfaces::TInterfaceControl* FetchNodeInterfaceControlL(TInt aInterfaceId);
williamr@4
    63
williamr@4
    64
protected:
williamr@4
    65
	explicit CSelectionRequest(const Messages::TRuntimeCtxId& aRequestingClient, const Messages::TNodeId& aTierManagerId);
williamr@4
    66
	virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
williamr@4
    67
williamr@4
    68
private:
williamr@4
    69
	TInt FindActiveRequest(const Messages::TRuntimeCtxId& aMcprId);
williamr@4
    70
	void HandleProviderSelection(const Messages::TNodeId& aMcprId);
williamr@4
    71
	void ProviderSelectionFinished(const Messages::TRuntimeCtxId& aMcprId); //Our selection request (SP or SNL) has been fully served -> SelectComplete(NULL).
williamr@4
    72
	void SelectionFinished(); //The whole selection has finished.
williamr@4
    73
	void PostError(const Messages::TNodeSignal::TMessageId& aMessageId, TInt aError);
williamr@4
    74
	void InitialiseDestroy();
williamr@4
    75
williamr@4
    76
private:
williamr@4
    77
	void SelectionError(const Messages::TRuntimeCtxId& aSenderId, TInt aError); //Selection error
williamr@4
    78
	void CommsBinderRequestError(const Messages::TRuntimeCtxId& aSenderId, Messages::TEBase::TError& aCFMessage); //CommsBinderRequest returned error
williamr@4
    79
williamr@4
    80
private:
williamr@4
    81
	enum {EIdle = 0x00, ESelecting = 0x01, ECancelling = 0x02, ERequestingCommsBinder = 0x04}; //Selection Status
williamr@4
    82
	TInt iOriginalError;
williamr@4
    83
	TSelectionPrefs iSelectionPreferences;
williamr@4
    84
	Messages::TNodeId iTierManagerId;
williamr@4
    85
	Messages::TNodeId iTopMcprId;
williamr@4
    86
	TProviderInfo iTopMcprInfo;
williamr@4
    87
	Messages::RNodeInterface     iRequestingNode;
williamr@4
    88
    Messages::RRequestOriginator iRequest;
williamr@4
    89
	RArray<Messages::RNodeInterface> iActiveRequests; //List of all service providers (mcprs) currently processing our selection requests
williamr@4
    90
	TUint iSelectionStatus : 4;
williamr@4
    91
	TUint iDestroying      : 1;
williamr@4
    92
	TUint iJoined          : 1;
williamr@4
    93
	ASubSessionPlatsecApiExt* iPlatsecApiExt;
williamr@4
    94
    const Meta::SMetaData* iProvision;
williamr@4
    95
	RConnPrefList iConnPrefList;
williamr@4
    96
	};
williamr@4
    97
williamr@4
    98
} //namespace ESock
williamr@4
    99
williamr@4
   100
williamr@4
   101
#endif //__SS_CONNSELECT_H__
williamr@4
   102