analyzetool/storageserver/server/inc/atstorageserver.h
author hgs
Thu, 13 May 2010 23:59:27 +0300
changeset 20 a71a3e32a2ae
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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:  Declaration of the server side main class CATStorageServer
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef ATSTORAGESERVER_H
hgs
parents:
diff changeset
    20
#define ATSTORAGESERVER_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//  INCLUDES
hgs
parents:
diff changeset
    24
#include    <e32base.h>
hgs
parents:
diff changeset
    25
#include    <analyzetool/atcommon.h>
hgs
parents:
diff changeset
    26
#include 	"atdllinfo.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// CONSTANTS
hgs
parents:
diff changeset
    29
// Constants for the server's version
hgs
parents:
diff changeset
    30
const TUint KVersionNumberMaj = 0;
hgs
parents:
diff changeset
    31
const TUint KVersionNumberMin = 1;
hgs
parents:
diff changeset
    32
const TUint KVersionNumberBld = 1;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// DATA TYPES
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    37
class TATProcessInfo;
hgs
parents:
diff changeset
    38
class CATDynProcessInfo;
hgs
parents:
diff changeset
    39
class CATStorageServerSession;
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// CLASS DECLARATION
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
/**
hgs
parents:
diff changeset
    44
*  The main class of the Storage Server.
hgs
parents:
diff changeset
    45
*  When a client connects to the server, a new session object
hgs
parents:
diff changeset
    46
*  is created by an object of this class. If the server does not exist when
hgs
parents:
diff changeset
    47
*  connecting, a new process and an object of this class are created first.
hgs
parents:
diff changeset
    48
*/
hgs
parents:
diff changeset
    49
class CATStorageServer : public CPolicyServer
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    
hgs
parents:
diff changeset
    52
    public: // Enumerations
hgs
parents:
diff changeset
    53
    
hgs
parents:
diff changeset
    54
        // opcodes used in message passing between client and server
hgs
parents:
diff changeset
    55
        enum TStorageServerReq
hgs
parents:
diff changeset
    56
            {
hgs
parents:
diff changeset
    57
            EProcessStarted,
hgs
parents:
diff changeset
    58
            EDllLoaded,
hgs
parents:
diff changeset
    59
            EDllUnloaded,
hgs
parents:
diff changeset
    60
            EMemoryAllocated,
hgs
parents:
diff changeset
    61
            EMemoryFreed,
hgs
parents:
diff changeset
    62
            EProcessEnded,
hgs
parents:
diff changeset
    63
            EMemoryCheck,
hgs
parents:
diff changeset
    64
            EGetProcesses,
hgs
parents:
diff changeset
    65
            EGetDlls,
hgs
parents:
diff changeset
    66
            ESetLoggingMode,
hgs
parents:
diff changeset
    67
            EGetLoggingMode,
hgs
parents:
diff changeset
    68
            ESubtestStart,
hgs
parents:
diff changeset
    69
            ESubtestStop,
hgs
parents:
diff changeset
    70
            ESubtestStart2,
hgs
parents:
diff changeset
    71
            ESubtestStop2,
hgs
parents:
diff changeset
    72
            EGetCurrentAllocs,
hgs
parents:
diff changeset
    73
            EGetMaxAllocs,
hgs
parents:
diff changeset
    74
            ECancelLogging,
hgs
parents:
diff changeset
    75
            EGetUdeb,
hgs
parents:
diff changeset
    76
            EGetLoggingFile,
hgs
parents:
diff changeset
    77
            EProcessUdeb,
hgs
parents:
diff changeset
    78
            EIsMemoryAdded,
hgs
parents:
diff changeset
    79
            EOutOfBounds
hgs
parents:
diff changeset
    80
            };
hgs
parents:
diff changeset
    81
    
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
    public: // Constructors and destructor
hgs
parents:
diff changeset
    84
        
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
        * Two-phased constructor that can leave.
hgs
parents:
diff changeset
    87
        * @return A new instance of this class
hgs
parents:
diff changeset
    88
        */
hgs
parents:
diff changeset
    89
        static CATStorageServer* NewL();
hgs
parents:
diff changeset
    90
        
hgs
parents:
diff changeset
    91
        /**
hgs
parents:
diff changeset
    92
        * Two-phased constructor that can leave and leaves a pointer
hgs
parents:
diff changeset
    93
        * on the cleanup stack.
hgs
parents:
diff changeset
    94
        * @return A new instance of this class
hgs
parents:
diff changeset
    95
        */
hgs
parents:
diff changeset
    96
        static CATStorageServer* NewLC();
hgs
parents:
diff changeset
    97
        
hgs
parents:
diff changeset
    98
        /**
hgs
parents:
diff changeset
    99
        * Destructor
hgs
parents:
diff changeset
   100
        */
hgs
parents:
diff changeset
   101
        virtual ~CATStorageServer();
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
    public: // New functions
hgs
parents:
diff changeset
   104
        
hgs
parents:
diff changeset
   105
  
hgs
parents:
diff changeset
   106
        /**
hgs
parents:
diff changeset
   107
        * Creates a new server object and starts the server.
hgs
parents:
diff changeset
   108
        */
hgs
parents:
diff changeset
   109
        static void RunServerL();
hgs
parents:
diff changeset
   110
        
hgs
parents:
diff changeset
   111
        /**
hgs
parents:
diff changeset
   112
        * Increments the count of active sessions for this server.
hgs
parents:
diff changeset
   113
        */
hgs
parents:
diff changeset
   114
        void IncSessionCount();
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
        /**
hgs
parents:
diff changeset
   117
        * Decrements the count of active sessions for this server.
hgs
parents:
diff changeset
   118
        */
hgs
parents:
diff changeset
   119
        void DecSessionCount();
hgs
parents:
diff changeset
   120
        
hgs
parents:
diff changeset
   121
        /**
hgs
parents:
diff changeset
   122
        * Adds a new process into the server's arrays.
hgs
parents:
diff changeset
   123
        * @param aProcessName The name of the process to be added.
hgs
parents:
diff changeset
   124
        * @param aProcessId The ID of the process to be added.
hgs
parents:
diff changeset
   125
        * @param aSessionObject A pointer to the current process's associated session
hgs
parents:
diff changeset
   126
        *   object.
hgs
parents:
diff changeset
   127
        * @param aStartTime The starting time of the process to be added. It represents
hgs
parents:
diff changeset
   128
        *   time as a number of microseconds since midnight, January 1st, 0 AD nominal 
hgs
parents:
diff changeset
   129
        *   Gregorian. This is the representation used by, e.g., the TTime class.
hgs
parents:
diff changeset
   130
        * @return KErrNone, if the operation is successful; KErrAlreadyExists, if
hgs
parents:
diff changeset
   131
        *   an attempt is being made to insert a duplicate process; otherwise one of
hgs
parents:
diff changeset
   132
        *   the other system wide error codes.
hgs
parents:
diff changeset
   133
        */
hgs
parents:
diff changeset
   134
        TInt AddProcessL( const TDesC8& aProcessName, 
hgs
parents:
diff changeset
   135
                         TUint aProcessId,
hgs
parents:
diff changeset
   136
                         CATStorageServerSession* aSessionObject,
hgs
parents:
diff changeset
   137
                         const TInt64& aStartTime );
hgs
parents:
diff changeset
   138
        
hgs
parents:
diff changeset
   139
        /**
hgs
parents:
diff changeset
   140
        * Removes a process from the server's arrays.
hgs
parents:
diff changeset
   141
        * @param aProcessId The ID of the process to be removed.
hgs
parents:
diff changeset
   142
        * @return KErrNone, if successful; KErrNotFound, if a process with
hgs
parents:
diff changeset
   143
        *   the specified process ID could not be found in the array.
hgs
parents:
diff changeset
   144
        */
hgs
parents:
diff changeset
   145
        TInt RemoveProcessL( TUint aProcessId );
hgs
parents:
diff changeset
   146
        
hgs
parents:
diff changeset
   147
        /**
hgs
parents:
diff changeset
   148
        * Adds a DLL for a given process to the dynamic process info array of this class.
hgs
parents:
diff changeset
   149
        * @param aProcessId The ID of the process that has loaded the DLL to be added.
hgs
parents:
diff changeset
   150
        * @param aDllInfo Information of the DLL.
hgs
parents:
diff changeset
   151
        * @return KErrNone, if successful; KErrNotFound, if a process with the given
hgs
parents:
diff changeset
   152
        *   process ID could not be found; KErrAlreadyExists, if a DLL with the given
hgs
parents:
diff changeset
   153
        *   name was already stored; otherwise one of the other system wide error codes.
hgs
parents:
diff changeset
   154
        */
hgs
parents:
diff changeset
   155
        TInt AddDllL( TUint aProcessId, const TATDllInfo aDllInfo );
hgs
parents:
diff changeset
   156
        
hgs
parents:
diff changeset
   157
        /**
hgs
parents:
diff changeset
   158
        * Removes a DLL associated with the given process from the dynamic process
hgs
parents:
diff changeset
   159
        * info array of this class.
hgs
parents:
diff changeset
   160
        * @param aProcessId The ID of the process that has loaded the DLL to be removed.
hgs
parents:
diff changeset
   161
        * @param aDllName The name of the DLL to be removed.
hgs
parents:
diff changeset
   162
        * @return KErrNone, if successful; KErrNotFound, if a process with
hgs
parents:
diff changeset
   163
        *   the specified process ID could not be found, or if a DLL with the specified
hgs
parents:
diff changeset
   164
        *   name could not be found.
hgs
parents:
diff changeset
   165
        */
hgs
parents:
diff changeset
   166
        TInt RemoveDllL( TUint aProcessId, const TDesC8& aDllName );
hgs
parents:
diff changeset
   167
            
hgs
parents:
diff changeset
   168
        /**
hgs
parents:
diff changeset
   169
        * Gives a reference to the process info array of this class.
hgs
parents:
diff changeset
   170
        * @return A reference to iProcesses array
hgs
parents:
diff changeset
   171
        */
hgs
parents:
diff changeset
   172
        const RArray<TATProcessInfo>& ProcessInfoArray();
hgs
parents:
diff changeset
   173
        
hgs
parents:
diff changeset
   174
        /**
hgs
parents:
diff changeset
   175
        * Gives a reference to the dynamic process info array of this class.
hgs
parents:
diff changeset
   176
        * @return A reference to iProcessesDyn array
hgs
parents:
diff changeset
   177
        */
hgs
parents:
diff changeset
   178
        const RPointerArray<CATDynProcessInfo>& DynProcessInfoArray();
hgs
parents:
diff changeset
   179
                
hgs
parents:
diff changeset
   180
    public: // Functions from base classes
hgs
parents:
diff changeset
   181
        
hgs
parents:
diff changeset
   182
        /**
hgs
parents:
diff changeset
   183
        * From CPolicyServer.
hgs
parents:
diff changeset
   184
        * Creates a new server-side session object.
hgs
parents:
diff changeset
   185
        * @param aVersion The version of this server
hgs
parents:
diff changeset
   186
        * @param aMessage A message from the client
hgs
parents:
diff changeset
   187
        * @return A pointer to a new session object.
hgs
parents:
diff changeset
   188
        */
hgs
parents:
diff changeset
   189
        CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const;
hgs
parents:
diff changeset
   190
        
hgs
parents:
diff changeset
   191
    private:
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
        /**
hgs
parents:
diff changeset
   194
        * C++ default constructor.
hgs
parents:
diff changeset
   195
        * @param aPriority A priority for this active object
hgs
parents:
diff changeset
   196
        */
hgs
parents:
diff changeset
   197
        CATStorageServer( TInt aPriority );
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
        /**
hgs
parents:
diff changeset
   200
        *  Symbian 2nd phase constructor.
hgs
parents:
diff changeset
   201
        */
hgs
parents:
diff changeset
   202
        void ConstructL();
hgs
parents:
diff changeset
   203
   
hgs
parents:
diff changeset
   204
    private: // Data
hgs
parents:
diff changeset
   205
        
hgs
parents:
diff changeset
   206
        /** The number of active sessions */
hgs
parents:
diff changeset
   207
        TInt iSessionCount;
hgs
parents:
diff changeset
   208
        
hgs
parents:
diff changeset
   209
        /** An array for storing TATProcessInfo objects */
hgs
parents:
diff changeset
   210
        RArray<TATProcessInfo> iProcesses;
hgs
parents:
diff changeset
   211
        
hgs
parents:
diff changeset
   212
        /** An array for storing CATDynProcessInfo pointers */
hgs
parents:
diff changeset
   213
        RPointerArray<CATDynProcessInfo> iProcessesDyn;
hgs
parents:
diff changeset
   214
    };
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
#endif      // ATSTORAGESERVER_H
hgs
parents:
diff changeset
   217
            
hgs
parents:
diff changeset
   218
// End of File