locationtriggering/ltserver/ltserverlogic/inc/lbtnotificationmap.h
author hgs
Wed, 03 Nov 2010 23:28:39 +0530
changeset 56 4e949f03ecc5
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 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:  Defines the notification map data structure used by Location 
hgs
parents:
diff changeset
    15
*				 Triggering Server Logic to store notification request messages
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef LBTNOTIFICATIONMAP_H
hgs
parents:
diff changeset
    21
#define LBTNOTIFICATIONMAP_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//  INCLUDE FILES
hgs
parents:
diff changeset
    24
#include <e32cmn.h>
hgs
parents:
diff changeset
    25
#include "lbtserverlogicbase.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    28
class RMessage2;
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// CLASS DECLARATION
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
 * Defination of notification map data structure used 
hgs
parents:
diff changeset
    35
 * by Location Triggering Server Logic to store IPC
hgs
parents:
diff changeset
    36
 * requests by client for asynchronous notifications
hgs
parents:
diff changeset
    37
 *  
hgs
parents:
diff changeset
    38
 */
hgs
parents:
diff changeset
    39
class CLbtNotificationMap : public CBase
hgs
parents:
diff changeset
    40
	{
hgs
parents:
diff changeset
    41
	public:
hgs
parents:
diff changeset
    42
		/**
hgs
parents:
diff changeset
    43
	     * Instantiates a new object of 
hgs
parents:
diff changeset
    44
	     * CLbtNotificationMap
hgs
parents:
diff changeset
    45
	     *	     
hgs
parents:
diff changeset
    46
	     */
hgs
parents:
diff changeset
    47
	    static CLbtNotificationMap* NewL();
hgs
parents:
diff changeset
    48
	    
hgs
parents:
diff changeset
    49
	    /**
hgs
parents:
diff changeset
    50
	     * Destructor
hgs
parents:
diff changeset
    51
	     *
hgs
parents:
diff changeset
    52
	     */
hgs
parents:
diff changeset
    53
	    ~CLbtNotificationMap();
hgs
parents:
diff changeset
    54
	    
hgs
parents:
diff changeset
    55
	    /**
hgs
parents:
diff changeset
    56
	     * Inserts the IPC message into the notification map.
hgs
parents:
diff changeset
    57
	     * The IPC messages is inserted such that the notification
hgs
parents:
diff changeset
    58
	     * map is always is sorted in ascending order based on the 
hgs
parents:
diff changeset
    59
	     * secure id of the client.
hgs
parents:
diff changeset
    60
	  	 *
hgs
parents:
diff changeset
    61
	  	 * @param aMessage[in] the IPC message to be inserted into 
hgs
parents:
diff changeset
    62
	  	 * notification map
hgs
parents:
diff changeset
    63
	     */
hgs
parents:
diff changeset
    64
	    void InsertL(
hgs
parents:
diff changeset
    65
	        const RMessage2& aMessage, 
hgs
parents:
diff changeset
    66
	        CLbtServerLogicBase::TSubSessionType aType);
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
	    /**
hgs
parents:
diff changeset
    69
	     * Retreives the IPC message which matches all the supplied data.
hgs
parents:
diff changeset
    70
	     * The retreived IPC message is removed from the notification
hgs
parents:
diff changeset
    71
	     * map
hgs
parents:
diff changeset
    72
	     * 
hgs
parents:
diff changeset
    73
	     * @param[out] aMessage the retreived IPC message is returned
hgs
parents:
diff changeset
    74
	     * through this parameter
hgs
parents:
diff changeset
    75
	     * @param[in] aSubSessionHandle the handle number of the sub-session
hgs
parents:
diff changeset
    76
	     * @param[in] aSecureId the secure id of the client whose IPC message
hgs
parents:
diff changeset
    77
	     * has to be retreived
hgs
parents:
diff changeset
    78
	     * @param[in] aServiceId the service id of the IPC message which matches
hgs
parents:
diff changeset
    79
	     * @param[in] aSession pointer to the session of the IPC message which
hgs
parents:
diff changeset
    80
	     * should be retreived id.
hgs
parents:
diff changeset
    81
	     */
hgs
parents:
diff changeset
    82
	    TInt Retreive(RMessage2& aMessage, 
hgs
parents:
diff changeset
    83
	    			  TUint32 aSubSessionHandle,
hgs
parents:
diff changeset
    84
	    			  TSecureId aSecureId,
hgs
parents:
diff changeset
    85
	    			  TInt aServiceId,
hgs
parents:
diff changeset
    86
	    			  CSession2* aSession);
hgs
parents:
diff changeset
    87
		
hgs
parents:
diff changeset
    88
		/**
hgs
parents:
diff changeset
    89
	     * Retreives the IPC message which matches all the supplied data.
hgs
parents:
diff changeset
    90
	     * The retreived IPC message is removed from the notification
hgs
parents:
diff changeset
    91
	     * map
hgs
parents:
diff changeset
    92
	     *
hgs
parents:
diff changeset
    93
	     * @param[out] aMessage the retreived IPC message is returned
hgs
parents:
diff changeset
    94
	     * through this parameter
hgs
parents:
diff changeset
    95
	     * @param[in] aSecureId the secure id of the client whose IPC message
hgs
parents:
diff changeset
    96
	     * has to be retreived
hgs
parents:
diff changeset
    97
	     * @param[in] aServiceId the service id of the IPC message which matches
hgs
parents:
diff changeset
    98
	     */
hgs
parents:
diff changeset
    99
		TInt Retreive(RMessage2& aMessage,	    			  
hgs
parents:
diff changeset
   100
	    			  TSecureId aSecureId,
hgs
parents:
diff changeset
   101
	    			  TInt aServiceId);
hgs
parents:
diff changeset
   102
		
hgs
parents:
diff changeset
   103
		/**
hgs
parents:
diff changeset
   104
         * Retreives the IPC message which matches all the supplied data.
hgs
parents:
diff changeset
   105
         * The retreived IPC message is removed from the notification
hgs
parents:
diff changeset
   106
         * map
hgs
parents:
diff changeset
   107
         *
hgs
parents:
diff changeset
   108
         * @param[out] aMessage the retreived IPC message is returned
hgs
parents:
diff changeset
   109
         * through this parameter
hgs
parents:
diff changeset
   110
         * @param[in] aSecureId the secure id of the client whose IPC message
hgs
parents:
diff changeset
   111
         * has to be retreived
hgs
parents:
diff changeset
   112
         * @param[in] aServiceId the service id of the IPC message which matches
hgs
parents:
diff changeset
   113
         */
hgs
parents:
diff changeset
   114
		TInt Retreive(RMessage2& aMessage, 
hgs
parents:
diff changeset
   115
		              TInt aSubSessionHandle,  
hgs
parents:
diff changeset
   116
		              TSecureId aSecureId);    
hgs
parents:
diff changeset
   117
		/**
hgs
parents:
diff changeset
   118
	     * Retreives the IPC message which matches all the supplied data.
hgs
parents:
diff changeset
   119
	     * The retreived IPC message is removed from the notification
hgs
parents:
diff changeset
   120
	     * map
hgs
parents:
diff changeset
   121
	     *
hgs
parents:
diff changeset
   122
	     * @param[out] aMessage the retreived IPC message is returned
hgs
parents:
diff changeset
   123
	     * through this parameter
hgs
parents:
diff changeset
   124
	     * @param[in] aServiceId the service id of the IPC message which matches
hgs
parents:
diff changeset
   125
	     * @param[in] aType the subsession type of the client whose IPC message
hgs
parents:
diff changeset
   126
	     * has to be retreived
hgs
parents:
diff changeset
   127
	     */
hgs
parents:
diff changeset
   128
        TInt Retreive(RMessage2& aMessage, 
hgs
parents:
diff changeset
   129
				      TInt aServiceId,
hgs
parents:
diff changeset
   130
				      CLbtServerLogicBase::TSubSessionType aType);
hgs
parents:
diff changeset
   131
		/**
hgs
parents:
diff changeset
   132
		 * Completes and removes all the IPC messages in the notification map which 
hgs
parents:
diff changeset
   133
		 * matches the supplied data of the parameters
hgs
parents:
diff changeset
   134
		 *
hgs
parents:
diff changeset
   135
		 * @param[in] aSession pointer to the session of the IPC message which
hgs
parents:
diff changeset
   136
	     * should be completed
hgs
parents:
diff changeset
   137
	     * @param[in] aSubSessionHandle the handle number of the sub-session
hgs
parents:
diff changeset
   138
	     * @param[in] aErrorCode the error code with which the messages have
hgs
parents:
diff changeset
   139
	     * to be completed
hgs
parents:
diff changeset
   140
		 */
hgs
parents:
diff changeset
   141
		void CompleteMessagesOfSubsession(const CSession2* aSession, const TInt aSubSessionHandle, TInt aErrorCode);
hgs
parents:
diff changeset
   142
	    
hgs
parents:
diff changeset
   143
	    /**
hgs
parents:
diff changeset
   144
	     * Removes all the IPC messages registered by the particular client.
hgs
parents:
diff changeset
   145
	     *
hgs
parents:
diff changeset
   146
	     * @param[in] aSecureId the secure id of the client whose IPC message
hgs
parents:
diff changeset
   147
	     * has to be retreived
hgs
parents:
diff changeset
   148
	     */
hgs
parents:
diff changeset
   149
	    void RemoveAllClientMessages(TSecureId aSecureId);
hgs
parents:
diff changeset
   150
	    
hgs
parents:
diff changeset
   151
	    /**
hgs
parents:
diff changeset
   152
	     * Resets the notification map and removes all the IPC messages. All
hgs
parents:
diff changeset
   153
	     * the IPC messages are completed with the supplied error code
hgs
parents:
diff changeset
   154
	     *
hgs
parents:
diff changeset
   155
	     * @param[in] aErrorCode the error code with which the IPC messages 
hgs
parents:
diff changeset
   156
	     * needs to be completed
hgs
parents:
diff changeset
   157
	     */
hgs
parents:
diff changeset
   158
	    void Reset(TInt aErrorCode);	    	    
hgs
parents:
diff changeset
   159
	    
hgs
parents:
diff changeset
   160
    public:
hgs
parents:
diff changeset
   161
        struct TLbtNotificationReq
hgs
parents:
diff changeset
   162
            {
hgs
parents:
diff changeset
   163
            RMessage2 iMsg;
hgs
parents:
diff changeset
   164
            CLbtServerLogicBase::TSubSessionType iType; 
hgs
parents:
diff changeset
   165
            };
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
	private:
hgs
parents:
diff changeset
   168
	
hgs
parents:
diff changeset
   169
		/**
hgs
parents:
diff changeset
   170
	     * 2nd phase constuctor for instantiating member variables
hgs
parents:
diff changeset
   171
	     *
hgs
parents:
diff changeset
   172
	     */
hgs
parents:
diff changeset
   173
		void ConstructL();		
hgs
parents:
diff changeset
   174
    
hgs
parents:
diff changeset
   175
	private: // Data Members		
hgs
parents:
diff changeset
   176
		
hgs
parents:
diff changeset
   177
		// Array to store all the IPC messages
hgs
parents:
diff changeset
   178
		RArray<TLbtNotificationReq> iMessageArray;
hgs
parents:
diff changeset
   179
	};
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
#endif // LBTNOTIFICATIONMAP_H
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
// end of file