satengine/SatServer/Engine/inc/CSatSServer.h
changeset 0 ff3b6d0fd310
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/satengine/SatServer/Engine/inc/CSatSServer.h	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 2002-2005 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:  Server class
+*
+*/
+
+
+#ifndef CSATSSERVER_H
+#define CSATSSERVER_H
+
+#include <e32base.h>
+#include "TSatEventMediator.h"
+#include "MSatSSessions.h"
+
+class CSatCommandContainer;
+class CSatSUiClientHandler;
+class MSatUtils;
+
+// ----------------------------------------------------------------------------------------
+// Server's policy here
+// ----------------------------------------------------------------------------------------
+
+//Total number of ranges
+const TUint KSatServerCount = 14;  // 13 + 0
+
+//Definition of the ranges of IPC numbers
+const TInt satServerRanges[KSatServerCount] =
+        {
+        // Illegal service request.
+        0,  //ESatSNone,   //Range 0
+
+        /*// Server test commands
+        ESatSDisplayText,
+        ESatSNotifyTest,
+        ESatSNotifyTestCancel,
+        ESatSShutdown,*/
+        1,   // Range 1.
+
+        /*These proactive commands need no capability checling
+        Proactive commands (asynchronous)
+        ESatSProactiveDisplayText,
+        ESatSProactiveGetInkey,
+        ESatSProactiveGetInput,
+        ESatSProactiveSetUpMenu,
+        ESatSProactiveSelectItem,
+        ESatSProactivePlayTone,
+        ESatSProactiveRefresh,*/
+        5,  // Range 2.
+
+        /* This range needs capability checking, NetworkServices.
+        //ESatSProactiveSendSs,
+        ESatSProactiveSendUssd,
+        ESatSProactiveSendDtmf,
+        ESatSProactiveQuery, // for Send SM and Set Up Call
+        ESatSProactiveEvent, // for server event notification
+        ESatSProactiveSetUpCall,*/
+        12,  // Range 3.
+
+        // Envelope commands (synchronous)
+        // ESatSActiveMenuSelection,
+        18,  // Range 4
+
+        // CallControl command
+        //ESatSCallControl,
+        19, // Range 5
+
+
+        //  MoSmControl command
+        // ESatSMoSmControl,
+        20,  // Range 6
+
+        /* Command responses (synchronous)
+        ESatSProactiveDisplayTextResponse,
+        ESatSProactiveGetInkeyResponse,
+        ESatSProactiveGetInputResponse,
+        ESatSProactiveSetUpMenuResponse,
+        ESatSProactiveSelectItemResponse,
+        ESatSProactivePlayToneResponse,
+        ESatSProactiveSendSsResponse,
+        ESatSProactiveSendUssdResponse,
+        ESatSProactiveSendDtmfResponse,
+        ESatSProactiveQueryResponse,
+        ESatSProactiveEventResponse,
+        ESatSProactiveSetUpCallResponse,*/
+        21, // Range 7
+
+        // SAT UI related call control response
+        //ESatSCallControlUIResponse,
+        33,  // Range 8
+
+        // ESatSProactiveRefreshResponse,
+        34, // Range 9
+
+        // SAT UI related response
+        // ESatSMoSmControlUIResponse,
+        35,  // Range 10
+
+        /* Session indicators (for internal use)
+        ESatSOpenUiSubSession,
+        ESatSGetSIMAppStatus,
+        ESatSCloseUiSubSession,*/
+
+        36, // Range 11
+
+        /* Refresh handling
+        ESatSOpenRefreshSubSession,
+        ESatSCloseRefreshSubSession,
+        ESatSRefreshAllowed,
+        ESatSNotifyAllowRefresh,
+        ESatSNotityAllowRefreshCancel,
+        ESatSNotifyRefresh,
+        ESatSCancelNotifyRefresh,*/
+
+        39, // Range 12
+
+        /* Icon handling
+        ESatSOpenIconSubSession,
+        ESatSCloseIconSubSession,
+        ESatSGetIconInfo,
+        ESatSGetIconInstance,
+        ESatSIconInstanceGot*/
+
+        46, // Range 13
+
+        };
+
+//Policy to implement for each of the above ranges
+const TUint8 satServerElementsIndex[KSatServerCount] =
+        {
+        CPolicyServer::EAlwaysPass, // 0
+        CPolicyServer::EAlwaysPass, // 1
+        CPolicyServer::EAlwaysPass, // 2
+        0,   // Check Network Capabilites for this range
+        CPolicyServer::EAlwaysPass, // 4
+        CPolicyServer::EAlwaysPass, // 5
+        CPolicyServer::EAlwaysPass, // 6
+        CPolicyServer::EAlwaysPass, // 7
+        CPolicyServer::EAlwaysPass, // 8
+        CPolicyServer::EAlwaysPass, // 9
+        CPolicyServer::EAlwaysPass, // 10
+        CPolicyServer::EAlwaysPass, // 11
+        CPolicyServer::EAlwaysPass, // 12
+        CPolicyServer::EAlwaysPass  // 13
+        };
+
+//Specific capability checks
+const CPolicyServer::TPolicyElement satServerElements[] =
+    {
+    // policy "0"; fail call if NetworkServices not present.
+    //lint -e{778,1924} Macro can not be affected.
+        {
+        _INIT_SECURITY_POLICY_C1( ECapabilityNetworkServices ),
+        CPolicyServer::EFailClient
+        },
+    };
+
+//Package all the above together into a policy
+const CPolicyServer::TPolicy satServerPolicy =
+        {
+        CPolicyServer::EAlwaysPass, //specifies all connect attempts should pass
+        KSatServerCount, //number of ranges
+        satServerRanges,    //ranges array
+        satServerElementsIndex, //elements<->ranges index
+        satServerElements,      //array of elements
+        };
+
+// End Server's Policy
+
+/**
+*  Manages sessions
+*
+*  @lib SatServer.exe
+*  @since Series 60 3.0
+*/
+class CSatSServer : public CPolicyServer,
+                    public MSatSSessions
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CSatSServer* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CSatSServer();
+
+    public: // New functions
+
+        /**
+        * Completes current message from client.
+        * @param aError Standard Symbian error code.
+        */
+        void CompleteMessage( TInt aError ) const;
+
+        /**
+        * Creates new container for sessions.
+        * @return New container.
+        */
+        CObjectCon* CreateNewContainerL();
+
+        /**
+        * Gets MSatUtils interface
+        * @return MSatUtils interface
+        */
+        MSatUtils* SatUtils();
+
+        /**
+        * Adds refresh subsession.
+        * @param aSubSession refresh subsession.
+        */
+        void AddL( const MSatRefreshSubSession* aSubSession );
+
+        /**
+        * Removes refresh subsession.
+        * @param aSubSession Sub session to be removed.
+        */
+        void Remove( const MSatRefreshSubSession* aSubSession );
+
+    public: // Functions from base classes
+
+        /**
+        * From MSatSSessions Gives ui session interface.
+        * @return Interface for ui session
+        */
+        MSatUiSession* UiSession();
+
+        /**
+        * From MSatSSessions Gives refresh subsessions.
+        * @return Pointer array containing refresh subsessions
+        */
+        const RPointerArray<MSatRefreshSubSession>& RefreshSubSessions();
+
+    private: // Functions from base classes
+
+        /**
+        * From CServer2, creates a new server session.
+        * @param aVersion Client interface version.
+        * @param aMessage 'connect' message from the client.
+        * @return Pointer to the created server session.
+        */
+        CSession2* NewSessionL(
+            const TVersion& aVersion,
+            const RMessage2& aMessage ) const;
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CSatSServer();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private: // Data
+
+        // SAT Command handler container
+        CSatCommandContainer* iCmdContainer;
+
+        // SAT Ui client handler
+        CSatSUiClientHandler* iUiHandler;
+
+        // Event mediator
+        TSatEventMediator iEventMediator;
+
+        // CObjectCon factory.
+        CObjectConIx* iObjectConIx;
+
+        // Refresh subsessions
+        RPointerArray<MSatRefreshSubSession> iRefreshSubSessions;
+
+    };
+
+#endif      // CSATSSERVER_H