diff -r 000000000000 -r af10295192d8 networkcontrol/commsuserpromptmgr/interface/inc/netupspolicycheckrequestqueue.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/commsuserpromptmgr/interface/inc/netupspolicycheckrequestqueue.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,120 @@ + +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// policycheckrequestqueue.h +// This file provides the interface for the policy check request +// queue and its associated elements. +// @internalComponent +// @prototype +// +// + +#ifndef NETUPS_PCR_QUEUE_H +#define NETUPS_PCR_QUEUE_H + +#include // defines CBase, CActive +#include // defines TSglQueLink + +#include "netupstypes.h" + +#include // defines the comms debug logging utility + +namespace NetUps +{ +class CSubSession; +class MPolicyCheckRequestOriginator; + +NONSHARABLE_CLASS (CPolicyCheckRequestData) : public CBase + { +public: + static CPolicyCheckRequestData* NewL(const TPolicyCheckRequestData& PolicyCheckRequestData); + ~CPolicyCheckRequestData(); +private: + void ConstructL(const TDesC& aDestinationName, + const TDesC& aAccessPointName); + + CPolicyCheckRequestData(const TPolicyCheckRequestData& aPolicyCheckRequestData) : + iProcessId(aPolicyCheckRequestData.iProcessId), + iThreadId(aPolicyCheckRequestData.iThreadId), + iServiceId(aPolicyCheckRequestData.iServiceId), + iPlatSecCheckResult(aPolicyCheckRequestData.iPlatSecCheckResult), + iCommsId(aPolicyCheckRequestData.iCommsId), + iPolicyCheckRequestOriginator(aPolicyCheckRequestData.iPolicyCheckRequestOriginator) + { + } +public: + TProcessId iProcessId; + TThreadId iThreadId; + TInt32 iServiceId; + TBool iPlatSecCheckResult; + RBuf iDestinationName; + RBuf iAccessPointName; + Messages::TNodeId iCommsId; + MPolicyCheckRequestOriginator& iPolicyCheckRequestOriginator; +private: + __FLOG_DECLARATION_MEMBER; + }; + +NONSHARABLE_CLASS (CQueuedPolicyCheckRequest) : public CBase + { + friend class CPolicyCheckRequestQueue; // needs iLink +public: + static CQueuedPolicyCheckRequest* NewL(const TPolicyCheckRequestData& aPolicyCheckRequestData, const TRequestId& aRequestId); + ~CQueuedPolicyCheckRequest(); + CPolicyCheckRequestData& PolicyCheckRequestData() { return *iPolicyCheckRequestData; } + const TRequestId& RequestId(); +private: + void ConstructL(const TPolicyCheckRequestData& PolicyCheckRequestData); + CQueuedPolicyCheckRequest(const TRequestId& aRequestId); +private: + TRequestId iRequestId; + CPolicyCheckRequestData* iPolicyCheckRequestData; + TSglQueLink iLink; + }; + +NONSHARABLE_CLASS (CPolicyCheckRequestQueue) : public CBase + { +public: + static CPolicyCheckRequestQueue* NewL(CSubSession&); + ~CPolicyCheckRequestQueue(); + + TBool IsEmpty() const; + CPolicyCheckRequestData& GetNextRequest(); // used by the subSession to get 1st entry on queue. + void DeleteCurrentEntry(); + + TBool OutStandingRequestToProcess(); // used by the subSession to get entries other than the 1st entry in order + // to reply outstanding requests when entering a Session State + // (other than 1st entry for which are reply has already been received from the UPS Server). + CPolicyCheckRequestData& GetOutStandingRequestToProcess(); + void DeleteOutStandingRequest(); + + void SendRequestL(const TPolicyCheckRequestData& aPolicyCheckRequestData, const TRequestId& aRequestId); + TInt CancelRequest(const Messages::TNodeId& aCommsId, const TRequestId& aRequestId); + void CancelAllRequests(TInt aError); +private: + void ConstructL(); + void DoCancel(); + CPolicyCheckRequestQueue(CSubSession& aSubsession); + + void PostFirstRequestOnQueueToUpsServer(); +private: + TSglQue iRequestQueue; + CSubSession& iSubSession; + + __FLOG_DECLARATION_MEMBER; + }; + +} // end namespace NetUps + +#endif // NETUPS_PCR_QUEUE_H