ximpfw/presence/srcpresencecache/presencecacheclient/presencecacheclientnotification.h
author hgs
Wed, 03 Nov 2010 09:32:20 +0530
changeset 51 61fad867f68e
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Implementation for presence cache reader notification handling
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef PRESENCECACHECLIENTNOTIFICATION_H
hgs
parents:
diff changeset
    19
#define PRESENCECACHECLIENTNOTIFICATION_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include "presencecacheclient.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "presencecachedefs.h"
hgs
parents:
diff changeset
    24
#include "presenceapiobjbase.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
/**
hgs
parents:
diff changeset
    28
 * Implementation for presence cache reader notification. This object is 
hgs
parents:
diff changeset
    29
 * instantiated by CPresenceCacheClient. This class handles client-server
hgs
parents:
diff changeset
    30
 * messaging for notifications.
hgs
parents:
diff changeset
    31
 *
hgs
parents:
diff changeset
    32
 * @ingroup ximpprescacheapi
hgs
parents:
diff changeset
    33
 * @since S60 v5.0
hgs
parents:
diff changeset
    34
 */
hgs
parents:
diff changeset
    35
 NONSHARABLE_CLASS( CPresenceCacheClientNotification ) : public CActive
hgs
parents:
diff changeset
    36
    {
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
public:
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
        /**
hgs
parents:
diff changeset
    41
        * Two-phased constructor.
hgs
parents:
diff changeset
    42
        * @param aClient presence cache client
hgs
parents:
diff changeset
    43
        */
hgs
parents:
diff changeset
    44
        static CPresenceCacheClientNotification* NewL( CPresenceCacheClient& aClient );
hgs
parents:
diff changeset
    45
        
hgs
parents:
diff changeset
    46
        /**
hgs
parents:
diff changeset
    47
        * Destructor.
hgs
parents:
diff changeset
    48
        */
hgs
parents:
diff changeset
    49
        virtual ~CPresenceCacheClientNotification();
hgs
parents:
diff changeset
    50
        
hgs
parents:
diff changeset
    51
        /**
hgs
parents:
diff changeset
    52
         * Subscribe for given presence buddy's change in presence. 
hgs
parents:
diff changeset
    53
         *
hgs
parents:
diff changeset
    54
         * @param aIdentity buddy id, in xsp format
hgs
parents:
diff changeset
    55
         * @return KErrNone if successful, KErrArgument if observer not set
hgs
parents:
diff changeset
    56
         * @leave Only in system error cases e.g. if failed to allocate memory.
hgs
parents:
diff changeset
    57
         */
hgs
parents:
diff changeset
    58
        TInt SubscribePresenceBuddyChangeL(const MXIMPIdentity& aIdentity);   
hgs
parents:
diff changeset
    59
        
hgs
parents:
diff changeset
    60
        /**
hgs
parents:
diff changeset
    61
         * Unsubscribe for given presence buddy's change in presence. 
hgs
parents:
diff changeset
    62
         *
hgs
parents:
diff changeset
    63
         * @param aIdentity buddy id, in xsp format
hgs
parents:
diff changeset
    64
         * @leave Only in system error cases e.g. if failed to allocate memory.
hgs
parents:
diff changeset
    65
         */
hgs
parents:
diff changeset
    66
        void UnsubscribePresenceBuddyChangeL(const MXIMPIdentity& aIdentity);          
hgs
parents:
diff changeset
    67
        
hgs
parents:
diff changeset
    68
private:
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    /**
hgs
parents:
diff changeset
    71
    * C++ constructor
hgs
parents:
diff changeset
    72
    */
hgs
parents:
diff changeset
    73
    CPresenceCacheClientNotification( CPresenceCacheClient& aClient );
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    /**
hgs
parents:
diff changeset
    76
    * Symbian second phase constructor
hgs
parents:
diff changeset
    77
    */
hgs
parents:
diff changeset
    78
    void ConstructL();
hgs
parents:
diff changeset
    79
    
hgs
parents:
diff changeset
    80
    void StartNotifySubscription();
hgs
parents:
diff changeset
    81
    
hgs
parents:
diff changeset
    82
    /**
hgs
parents:
diff changeset
    83
     * Client callback handler Accesor 
hgs
parents:
diff changeset
    84
     */
hgs
parents:
diff changeset
    85
    MPresCacheReadHandler* ClientNotifyHandler(); 
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    /**
hgs
parents:
diff changeset
    88
     * Get presence from Cache server to a client observer
hgs
parents:
diff changeset
    89
     * @param aClient client callback observer
hgs
parents:
diff changeset
    90
     * @param aSize notification size
hgs
parents:
diff changeset
    91
     */
hgs
parents:
diff changeset
    92
    void PreseneceFromServerToClientL( MPresCacheReadHandler& aClient, TInt aSize );
hgs
parents:
diff changeset
    93
       
hgs
parents:
diff changeset
    94
                                       
hgs
parents:
diff changeset
    95
public:  //From CActive
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    void RunL();
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
    void DoCancel();
hgs
parents:
diff changeset
   100
    
hgs
parents:
diff changeset
   101
    TInt RunError( TInt aError );
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
private: // Data
hgs
parents:
diff changeset
   104
    
hgs
parents:
diff changeset
   105
        /**
hgs
parents:
diff changeset
   106
         * presence cache client handling client-server messages
hgs
parents:
diff changeset
   107
         */
hgs
parents:
diff changeset
   108
        CPresenceCacheClient& iClient;
hgs
parents:
diff changeset
   109
                
hgs
parents:
diff changeset
   110
        /**
hgs
parents:
diff changeset
   111
         * Size of presence notification for client-sever messages
hgs
parents:
diff changeset
   112
         */
hgs
parents:
diff changeset
   113
        TPckgBuf<TInt> iSizePckg;  
hgs
parents:
diff changeset
   114
        
hgs
parents:
diff changeset
   115
        /**
hgs
parents:
diff changeset
   116
         * Whether the first notification subscription is done
hgs
parents:
diff changeset
   117
         */
hgs
parents:
diff changeset
   118
        TBool iNotificationSubscribed;
hgs
parents:
diff changeset
   119
        
hgs
parents:
diff changeset
   120
    };
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
#endif // PRESENCECACHECLIENTNOTIFICATION_H
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125