diff -r 000000000000 -r c8caa15ef882 presencefwsimpleadpt/inc/simplepluginauthorization.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presencefwsimpleadpt/inc/simplepluginauthorization.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,450 @@ +/* +* Copyright (c) 2006 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: Simple Protocol implementation for Presence Framework +* +*/ + + + + +#ifndef CSIMPLEPLUGINAUTHORIZATION_H +#define CSIMPLEPLUGINAUTHORIZATION_H + +#include + +#include +#include + +#include "simpleplugincommon.h" +#include "msimplepluginconnectionobs.h" + +class TXIMPRequestId; +class MXIMPIdentity; +class MPresenceInfoFilter; +class MProtocolPresenceAuthorizationDataHost; + +class MSimpleWinfo; +class CPresenceXDM; +class CRLSXDM; +class CXdmEngine; +class CXdmDocument; + + +/** + * CSimplePluginAuthorization + * + * Simple Engine Connection + * + * @lib ?library + * @since s60 v5.0 + */ +NONSHARABLE_CLASS( CSimplePluginAuthorization ) : public CActive, + public MProtocolPresenceAuthorization + { +public: + + + /** + * Current operation + */ + enum TPluginAuthOperation + { + ENoOperation, + // XDM operations + EGrantPresenceForPresentity, + EGrantPresenceForPresentityGroupMembers, + EWithdrawFromPresentity, + EWithdrawFromGroupMembers, + EGrantForEveryone, + EWithdrawFromEveryone, + ESubscribeBlockList, + EUnsubscribeBlockList, + EBlockPresentity, + EUnblockPresentity, + // SIP and XDM operations + ESubscribePresenceGrantRequestList, + EUnsubscribePresenceGrantRequestList + }; + + /** + * Current default rule + */ + enum TPluginAuthDefRule + { + ERuleDef, + ERuleConfirm, + ERuleAllow + }; + + /** + * Constructor. + * @param aObs callback for complete requests + */ + static CSimplePluginAuthorization* NewL( + MSimplePluginConnectionObs& aObs ); + + virtual ~CSimplePluginAuthorization(); + + /** + * SetDataHost + * + * Set Data Host + * + * @lib ?library + * @since s60 v5.0 + */ + void SetDataHost( MProtocolPresenceAuthorizationDataHost& aDataHost ); + + /** + * WinfoTerminatedL + * + * SIMPLE Winfo watcher subscription is terminated + * @param aReason reason code + */ + void WinfoTerminatedL( TInt aReason ); + + /** + * WINFO received from SIMPLE + * @param aWinfo WINFO + */ + void WinfoNotificationL( MSimpleWinfo& aWinfo ); + + /** + * This is to ensure that WINFO watchers responses are detected. + * @param aPrFwId framework request id to be completed + * @param sStatus error code + */ + TBool HandleIfMine( TXIMPRequestId aPrFwId, TInt aStatus ); + + +private: + + CSimplePluginAuthorization( + MSimplePluginConnectionObs& aObs ); + + void ConstructL( ); + + +// from base class MXIMPBase +public: + + /** + * Defined in a base class + */ + TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOps ); + + /** + * Defined in a base class + */ + const TAny* GetInterface( + TInt32 aInterfaceId, + TIfGetOps aOps ) const; + + /** + * Defined in a base class + */ + TInt32 GetInterfaceId() const; + + +// from base class MProtocolPresenceAuthorization + + /** + * Defined in a base class + */ + void DoSubscribePresenceGrantRequestListL( + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUnsubscribePresenceGrantRequestListL( + TXIMPRequestId aReqId ); + +// Granting presence information access to single presentities + + /** + * Defined in a base class + */ + void DoGrantPresenceForPresentityL( + const MXIMPIdentity& aPresentityId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUpdatePresenceGrantPifForPresentityL( + const MXIMPIdentity& aPresentityId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoWithdrawPresenceGrantFromPresentityL( + const MXIMPIdentity& aPresentityId, + TXIMPRequestId aReqId ); + +// Granting presence information access to presentity group members + + /** + * Defined in a base class + */ + void DoGrantPresenceForPresentityGroupMembersL( + const MXIMPIdentity& aGroupId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUpdatePresenceGrantPifForPresentityGroupMembersL( + const MXIMPIdentity& aGroupId, + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoWithdrawPresenceGrantFromPresentityGroupMembersL( + const MXIMPIdentity& aGroupId, + TXIMPRequestId aReqId ); + +// Granting presence information access to everyone + + /** + * Defined in a base class + */ + void DoGrantPresenceForEveryoneL( + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUpdatePresenceGrantPifForEveryoneL( + const MPresenceInfoFilter& aPif, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoWithdrawPresenceGrantFromEveryoneL( + TXIMPRequestId aReqId ); + +// Subscribe presence block list + + /** + * Defined in a base class + */ + void DoSubscribePresenceBlockListL( + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoUnsubscribePresenceBlockListL( + TXIMPRequestId aReqId ); + +// Blocking presence information access from single presentities + + /** + * Defined in a base class + */ + void DoBlockPresenceForPresentityL( + const MXIMPIdentity& aPresentityId, + TXIMPRequestId aReqId ); + + /** + * Defined in a base class + */ + void DoCancelPresenceBlockFromPresentityL( + const MXIMPIdentity& aPresentityId, + TXIMPRequestId aReqId ); + + + +protected: + +// from base class CActive + + /** + * Defined in a base class + */ + void RunL(); + + /** + * Defined in a base class + */ + TInt RunError( TInt aError ); + + /** + * Defined in a base class + */ + void DoCancel(); + +private: + + /** + * Save presentity id + * @param aPresentityId presentity id + */ + void SetPresIdentityL( + const MXIMPIdentity& aPresentityId ); + + /** + * Calls MXIMPProtocolConnectionHost callback + * @param aStatus error status + */ + void CompletePrFwReq( TInt aStatus ); + + + /** + * Start XDM operation + */ + void StartXdmOperationL( + const MXIMPIdentity& aId, + TXIMPRequestId aReqId, + TPluginAuthOperation aOperation ); + + /** + * Start XDM operation. StartXdmOperationL calls this. + */ + void DoStartXdmOperationL( + const MXIMPIdentity& aId, + TXIMPRequestId aReqId, + TPluginAuthOperation aOperation ); + + /** + * Start XDM operation. HandleIfMine calls this. + */ + void DoStartXdmOperationL( + TXIMPRequestId aReqId, + TPluginAuthOperation aOperation ); + + /** + * Call CSimpleXdmUtils operation + */ + void CallActualXdmOperationL(); + + /** + * Copy data from aBlockers to aBlockedSouls + * @param aBlockers user ids + * @param aBlockedSouls user PrFwIdentities + * + */ + void CopyBlockersToArrayL( + CPtrCArray& aBlockers, RPointerArray& aBlockedSouls ); + + /** + * Handle full Winfo notification + * @param aWinfo WINFO + */ + void HandleFullWinfoNotificationL( MSimpleWinfo& aWinfo ); + + /** + * Handle partial Winfo notification + * @param aWinfo WINFO + */ + void HandlePartialWinfoNotificationL( MSimpleWinfo& aWinfo ); + + /** + * Call HandlePresenceGrantRequestReceivedL + * @param aUserId user id + */ + void CallHandlePresenceGrantRequestReceivedL( const TDesC& aUserId ); + + /** + * Call HandlePresenceGrantRequestObsoletedL( + * @param aUserId user id + */ + void CallHandlePresenceGrantRequestObsoletedL( const TDesC& aUserId ); + + /** + * Handle block list subscription routines + */ + void HandleSubscribeBlockListL(); + + +private: // Data + + /** + * PrFw Plugin connection observer + */ + MSimplePluginConnectionObs& iConnObs; + + /** + * PrFw Plugin Authorization Data Host + * Not own. + */ + MProtocolPresenceAuthorizationDataHost* iDataHost; + + /** + * XDM Settings id + */ + TInt iSettingsId; + + /** + * PrFW request id + */ + TXIMPRequestId iPrFwId; + + /** + * PrFW request id for own requests + */ + TXIMPRequestId iPrFwIdOwn; + + /** + * Simple Engine request id + */ + TInt iSimpleId; + + /** + * Current operation + */ + TPluginAuthOperation iOperation; + + /** + * Current presentity in progress + * Own. + */ + HBufC16* iPresIdentity; + + /** + * Whether XDM utility is initialized + */ + TBool iXdmOk; + + /** + * XDM Utils + * Not own. + */ + CSimplePluginXdmUtils* iXdmUtils; + + /** + * Current default rule + */ + TPluginAuthDefRule iDefRule; + + /** + * Active WINFO subscription + */ + TBool iWinfoSubs; + + + }; + +#endif // CSimplePluginAuthorization_H