presencefwsimpleadpt/inc/simplepluginauthorization.h
changeset 0 c8caa15ef882
--- /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 <e32std.h>
+
+#include <ximpbase.h>
+#include <protocolpresenceauthorization.h>
+
+#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<MXIMPIdentity>& 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