--- /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