satengine/satserver/Engine/inc/CSatSServer.h
author hgs
Fri, 23 Jul 2010 12:32:49 +0300
changeset 35 6aefa3341fcc
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2005 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:  Server class
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 CSATSSERVER_H
hgs
parents:
diff changeset
    20
#define CSATSSERVER_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include "TSatEventMediator.h"
hgs
parents:
diff changeset
    24
#include "MSatSSessions.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
class CSatCommandContainer;
hgs
parents:
diff changeset
    27
class CSatSUiClientHandler;
hgs
parents:
diff changeset
    28
class MSatUtils;
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// ----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    31
// Server's policy here
hgs
parents:
diff changeset
    32
// ----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
//Total number of ranges
hgs
parents:
diff changeset
    35
const TUint KSatServerCount = 14;  // 13 + 0
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
//Definition of the ranges of IPC numbers
hgs
parents:
diff changeset
    38
const TInt satServerRanges[KSatServerCount] =
hgs
parents:
diff changeset
    39
        {
hgs
parents:
diff changeset
    40
        // Illegal service request.
hgs
parents:
diff changeset
    41
        0,  //ESatSNone,   //Range 0
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
        /*// Server test commands
hgs
parents:
diff changeset
    44
        ESatSDisplayText,
hgs
parents:
diff changeset
    45
        ESatSNotifyTest,
hgs
parents:
diff changeset
    46
        ESatSNotifyTestCancel,
hgs
parents:
diff changeset
    47
        ESatSShutdown,*/
hgs
parents:
diff changeset
    48
        1,   // Range 1.
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
        /*These proactive commands need no capability checling
hgs
parents:
diff changeset
    51
        Proactive commands (asynchronous)
hgs
parents:
diff changeset
    52
        ESatSProactiveDisplayText,
hgs
parents:
diff changeset
    53
        ESatSProactiveGetInkey,
hgs
parents:
diff changeset
    54
        ESatSProactiveGetInput,
hgs
parents:
diff changeset
    55
        ESatSProactiveSetUpMenu,
hgs
parents:
diff changeset
    56
        ESatSProactiveSelectItem,
hgs
parents:
diff changeset
    57
        ESatSProactivePlayTone,
hgs
parents:
diff changeset
    58
        ESatSProactiveRefresh,*/
hgs
parents:
diff changeset
    59
        5,  // Range 2.
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
        /* This range needs capability checking, NetworkServices.
hgs
parents:
diff changeset
    62
        //ESatSProactiveSendSs,
hgs
parents:
diff changeset
    63
        ESatSProactiveSendUssd,
hgs
parents:
diff changeset
    64
        ESatSProactiveSendDtmf,
hgs
parents:
diff changeset
    65
        ESatSProactiveQuery, // for Send SM and Set Up Call
hgs
parents:
diff changeset
    66
        ESatSProactiveEvent, // for server event notification
hgs
parents:
diff changeset
    67
        ESatSProactiveSetUpCall,*/
hgs
parents:
diff changeset
    68
        12,  // Range 3.
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        // Envelope commands (synchronous)
hgs
parents:
diff changeset
    71
        // ESatSActiveMenuSelection,
hgs
parents:
diff changeset
    72
        18,  // Range 4
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
        // CallControl command
hgs
parents:
diff changeset
    75
        //ESatSCallControl,
hgs
parents:
diff changeset
    76
        19, // Range 5
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
        //  MoSmControl command
hgs
parents:
diff changeset
    80
        // ESatSMoSmControl,
hgs
parents:
diff changeset
    81
        20,  // Range 6
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
        /* Command responses (synchronous)
hgs
parents:
diff changeset
    84
        ESatSProactiveDisplayTextResponse,
hgs
parents:
diff changeset
    85
        ESatSProactiveGetInkeyResponse,
hgs
parents:
diff changeset
    86
        ESatSProactiveGetInputResponse,
hgs
parents:
diff changeset
    87
        ESatSProactiveSetUpMenuResponse,
hgs
parents:
diff changeset
    88
        ESatSProactiveSelectItemResponse,
hgs
parents:
diff changeset
    89
        ESatSProactivePlayToneResponse,
hgs
parents:
diff changeset
    90
        ESatSProactiveSendSsResponse,
hgs
parents:
diff changeset
    91
        ESatSProactiveSendUssdResponse,
hgs
parents:
diff changeset
    92
        ESatSProactiveSendDtmfResponse,
hgs
parents:
diff changeset
    93
        ESatSProactiveQueryResponse,
hgs
parents:
diff changeset
    94
        ESatSProactiveEventResponse,
hgs
parents:
diff changeset
    95
        ESatSProactiveSetUpCallResponse,*/
hgs
parents:
diff changeset
    96
        21, // Range 7
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
        // SAT UI related call control response
hgs
parents:
diff changeset
    99
        //ESatSCallControlUIResponse,
hgs
parents:
diff changeset
   100
        33,  // Range 8
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
        // ESatSProactiveRefreshResponse,
hgs
parents:
diff changeset
   103
        34, // Range 9
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        // SAT UI related response
hgs
parents:
diff changeset
   106
        // ESatSMoSmControlUIResponse,
hgs
parents:
diff changeset
   107
        35,  // Range 10
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
        /* Session indicators (for internal use)
hgs
parents:
diff changeset
   110
        ESatSOpenUiSubSession,
hgs
parents:
diff changeset
   111
        ESatSGetSIMAppStatus,
hgs
parents:
diff changeset
   112
        ESatSCloseUiSubSession,*/
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        36, // Range 11
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
        /* Refresh handling
hgs
parents:
diff changeset
   117
        ESatSOpenRefreshSubSession,
hgs
parents:
diff changeset
   118
        ESatSCloseRefreshSubSession,
hgs
parents:
diff changeset
   119
        ESatSRefreshAllowed,
hgs
parents:
diff changeset
   120
        ESatSNotifyAllowRefresh,
hgs
parents:
diff changeset
   121
        ESatSNotityAllowRefreshCancel,
hgs
parents:
diff changeset
   122
        ESatSNotifyRefresh,
hgs
parents:
diff changeset
   123
        ESatSCancelNotifyRefresh,*/
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
        39, // Range 12
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
        /* Icon handling
hgs
parents:
diff changeset
   128
        ESatSOpenIconSubSession,
hgs
parents:
diff changeset
   129
        ESatSCloseIconSubSession,
hgs
parents:
diff changeset
   130
        ESatSGetIconInfo,
hgs
parents:
diff changeset
   131
        ESatSGetIconInstance,
hgs
parents:
diff changeset
   132
        ESatSIconInstanceGot*/
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
        46, // Range 13
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
        };
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
//Policy to implement for each of the above ranges
hgs
parents:
diff changeset
   139
const TUint8 satServerElementsIndex[KSatServerCount] =
hgs
parents:
diff changeset
   140
        {
hgs
parents:
diff changeset
   141
        CPolicyServer::EAlwaysPass, // 0
hgs
parents:
diff changeset
   142
        CPolicyServer::EAlwaysPass, // 1
hgs
parents:
diff changeset
   143
        CPolicyServer::EAlwaysPass, // 2
hgs
parents:
diff changeset
   144
        0,   // Check Network Capabilites for this range
hgs
parents:
diff changeset
   145
        CPolicyServer::EAlwaysPass, // 4
hgs
parents:
diff changeset
   146
        CPolicyServer::EAlwaysPass, // 5
hgs
parents:
diff changeset
   147
        CPolicyServer::EAlwaysPass, // 6
hgs
parents:
diff changeset
   148
        CPolicyServer::EAlwaysPass, // 7
hgs
parents:
diff changeset
   149
        CPolicyServer::EAlwaysPass, // 8
hgs
parents:
diff changeset
   150
        CPolicyServer::EAlwaysPass, // 9
hgs
parents:
diff changeset
   151
        CPolicyServer::EAlwaysPass, // 10
hgs
parents:
diff changeset
   152
        CPolicyServer::EAlwaysPass, // 11
hgs
parents:
diff changeset
   153
        CPolicyServer::EAlwaysPass, // 12
hgs
parents:
diff changeset
   154
        CPolicyServer::EAlwaysPass  // 13
hgs
parents:
diff changeset
   155
        };
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
//Specific capability checks
hgs
parents:
diff changeset
   158
const CPolicyServer::TPolicyElement satServerElements[] =
hgs
parents:
diff changeset
   159
    {
hgs
parents:
diff changeset
   160
    // policy "0"; fail call if NetworkServices not present.
hgs
parents:
diff changeset
   161
    //lint -e{778,1924} Macro can not be affected.
hgs
parents:
diff changeset
   162
        {
hgs
parents:
diff changeset
   163
        _INIT_SECURITY_POLICY_C1( ECapabilityNetworkServices ),
hgs
parents:
diff changeset
   164
        CPolicyServer::EFailClient
hgs
parents:
diff changeset
   165
        },
hgs
parents:
diff changeset
   166
    };
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
//Package all the above together into a policy
hgs
parents:
diff changeset
   169
const CPolicyServer::TPolicy satServerPolicy =
hgs
parents:
diff changeset
   170
        {
hgs
parents:
diff changeset
   171
        CPolicyServer::EAlwaysPass, //specifies all connect attempts should pass
hgs
parents:
diff changeset
   172
        KSatServerCount, //number of ranges
hgs
parents:
diff changeset
   173
        satServerRanges,    //ranges array
hgs
parents:
diff changeset
   174
        satServerElementsIndex, //elements<->ranges index
hgs
parents:
diff changeset
   175
        satServerElements,      //array of elements
hgs
parents:
diff changeset
   176
        };
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
// End Server's Policy
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
/**
hgs
parents:
diff changeset
   181
*  Manages sessions
hgs
parents:
diff changeset
   182
*
hgs
parents:
diff changeset
   183
*  @lib SatServer.exe
hgs
parents:
diff changeset
   184
*  @since Series 60 3.0
hgs
parents:
diff changeset
   185
*/
hgs
parents:
diff changeset
   186
class CSatSServer : public CPolicyServer,
hgs
parents:
diff changeset
   187
                    public MSatSSessions
hgs
parents:
diff changeset
   188
    {
hgs
parents:
diff changeset
   189
    public: // Constructors and destructor
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
        /**
hgs
parents:
diff changeset
   192
        * Two-phased constructor.
hgs
parents:
diff changeset
   193
        */
hgs
parents:
diff changeset
   194
        static CSatSServer* NewL();
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
        /**
hgs
parents:
diff changeset
   197
        * Destructor.
hgs
parents:
diff changeset
   198
        */
hgs
parents:
diff changeset
   199
        virtual ~CSatSServer();
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
    public: // New functions
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
        /**
hgs
parents:
diff changeset
   204
        * Completes current message from client.
hgs
parents:
diff changeset
   205
        * @param aError Standard Symbian error code.
hgs
parents:
diff changeset
   206
        */
hgs
parents:
diff changeset
   207
        void CompleteMessage( TInt aError ) const;
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
        /**
hgs
parents:
diff changeset
   210
        * Creates new container for sessions.
hgs
parents:
diff changeset
   211
        * @return New container.
hgs
parents:
diff changeset
   212
        */
hgs
parents:
diff changeset
   213
        CObjectCon* CreateNewContainerL();
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
        /**
hgs
parents:
diff changeset
   216
        * Gets MSatUtils interface
hgs
parents:
diff changeset
   217
        * @return MSatUtils interface
hgs
parents:
diff changeset
   218
        */
hgs
parents:
diff changeset
   219
        MSatUtils* SatUtils();
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
        /**
hgs
parents:
diff changeset
   222
        * Adds refresh subsession.
hgs
parents:
diff changeset
   223
        * @param aSubSession refresh subsession.
hgs
parents:
diff changeset
   224
        */
hgs
parents:
diff changeset
   225
        void AddL( const MSatRefreshSubSession* aSubSession );
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
        /**
hgs
parents:
diff changeset
   228
        * Removes refresh subsession.
hgs
parents:
diff changeset
   229
        * @param aSubSession Sub session to be removed.
hgs
parents:
diff changeset
   230
        */
hgs
parents:
diff changeset
   231
        void Remove( const MSatRefreshSubSession* aSubSession );
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
    public: // Functions from base classes
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
        /**
hgs
parents:
diff changeset
   236
        * From MSatSSessions Gives ui session interface.
hgs
parents:
diff changeset
   237
        * @return Interface for ui session
hgs
parents:
diff changeset
   238
        */
hgs
parents:
diff changeset
   239
        MSatUiSession* UiSession();
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
        /**
hgs
parents:
diff changeset
   242
        * From MSatSSessions Gives refresh subsessions.
hgs
parents:
diff changeset
   243
        * @return Pointer array containing refresh subsessions
hgs
parents:
diff changeset
   244
        */
hgs
parents:
diff changeset
   245
        const RPointerArray<MSatRefreshSubSession>& RefreshSubSessions();
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
    private: // Functions from base classes
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        /**
hgs
parents:
diff changeset
   250
        * From CServer2, creates a new server session.
hgs
parents:
diff changeset
   251
        * @param aVersion Client interface version.
hgs
parents:
diff changeset
   252
        * @param aMessage 'connect' message from the client.
hgs
parents:
diff changeset
   253
        * @return Pointer to the created server session.
hgs
parents:
diff changeset
   254
        */
hgs
parents:
diff changeset
   255
        CSession2* NewSessionL(
hgs
parents:
diff changeset
   256
            const TVersion& aVersion,
hgs
parents:
diff changeset
   257
            const RMessage2& aMessage ) const;
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    private:
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
        /**
hgs
parents:
diff changeset
   262
        * C++ default constructor.
hgs
parents:
diff changeset
   263
        */
hgs
parents:
diff changeset
   264
        CSatSServer();
hgs
parents:
diff changeset
   265
hgs
parents:
diff changeset
   266
        /**
hgs
parents:
diff changeset
   267
        * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   268
        */
hgs
parents:
diff changeset
   269
        void ConstructL();
hgs
parents:
diff changeset
   270
hgs
parents:
diff changeset
   271
    private: // Data
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
        // SAT Command handler container
hgs
parents:
diff changeset
   274
        CSatCommandContainer* iCmdContainer;
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
        // SAT Ui client handler
hgs
parents:
diff changeset
   277
        CSatSUiClientHandler* iUiHandler;
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
        // Event mediator
hgs
parents:
diff changeset
   280
        TSatEventMediator iEventMediator;
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
        // CObjectCon factory.
hgs
parents:
diff changeset
   283
        CObjectConIx* iObjectConIx;
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
        // Refresh subsessions
hgs
parents:
diff changeset
   286
        RPointerArray<MSatRefreshSubSession> iRefreshSubSessions;
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
    };
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
#endif      // CSATSSERVER_H