PECengine/PresenceServer2/ServerSrc/CPEngServer.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/PresenceServer2/ServerSrc/CPEngServer.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2002 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:  Presence Server class
+*
+*/
+
+
+#ifndef __CPENGSERVER_H__
+#define __CPENGSERVER_H__
+
+//  INCLUDES
+#include <e32def.h>
+#include <s32std.h>
+#include <e32svr.h>
+#include <s32file.h>	// file server
+
+#include	"MPEngServer.h"
+#include	"RPEngStorageAdminClient.h"
+
+// FORWARD DECLARATION
+class TPEngServerParams;
+
+// CLASS DECLARATION
+/**
+ *  Presence Server server class
+ *
+ *  @lib PEngServer2
+ *  @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngServer ):
+        public CPolicyServer,
+        public MPEngServer
+    {
+public:		// Constructors and destructors
+
+    /**
+     *  Two-phased constructor.
+     *  @since 3.0
+     *  @param aPriority priority of the server
+     */
+    static CPEngServer* NewL( TInt aPriority );
+
+    static CPEngServer* NewLC( TInt aPriority );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CPEngServer();
+
+public:	// new functions from MPEngServer
+
+    /**
+     *  Inform server about created session,
+     *  @see <MPEngServer.h>
+     */
+    void SessionCreated();
+
+    /**
+     *  Inform server about closing of the session
+     *  @see <MPEngServer.h>
+     */
+    void SessionDied();
+
+    /**
+     *  Add subsession to the container
+     *  @see <MPEngServer.h>
+     */
+    void AddSubSessionL( CPEngSubSession& aSubSession );
+
+    /**
+     *  Remove subsession from the container
+     *  @see <MPEngServer.h>
+     */
+    void RemoveSubSessionL( CPEngSubSession& aSubSession );
+
+    /**
+     *  Session Manager
+     *  @see <MPEngServer.h>
+     */
+    CPEngCSPSessManager* CSPSessionManagerLC(
+        CPEngSessionSlotId& aSessionId );
+
+    /**
+     *  Remove Session Manager from the server
+     *  @see <MPEngServer.h>
+     */
+    void RemoveCSPSessManager( CPEngCSPSessManager* aManager );
+
+    /**
+     *  Session is opened
+     *  @see <MPEngServer.h>
+     */
+    void SessionOpened();
+
+    /**
+     *  Session is closed
+     *  @see <MPEngServer.h>
+     */
+    void SessionClosed();
+
+public:		// New methods
+
+    /*
+     *  Starts the server
+     *  @since 3.0
+     *  @param aParams parameters for server start up
+     */
+    static TInt ExecuteServerL( TPEngServerParams& aParams );
+
+    /*
+     *	Stops the server,
+     *  actually just calls CActiveScheduler::Stop();
+     *  @since 3.0
+     */
+    void StopServer();
+
+    /*
+     *	Run server
+     *  @since 3.0
+     *  @param aParams parameters to run server with
+     */
+    static void RunServerL( TPEngServerParams& aParams );
+
+public:		// Methods derived from CServer2
+
+    /*
+     *	Create new session handler
+     *  @see <CServer2.h>
+     */
+    CSession2* NewSessionL( const TVersion& aVersion,
+                            const RMessage2& aMessage ) const;
+
+private:	// New methods
+
+    /*
+     *  Start server listening
+     *	Calls CActiveScheduler::Start()
+     *  @since 3.0
+     */
+    void StartServer();
+
+    /*
+     *  Check server access count
+     *  @since 3.0
+     */
+    void CheckServerAccess();
+
+protected:	// Constructors and destructors
+
+    /**
+     * C++ default constructor.
+     */
+    CPEngServer( TInt aPriority );
+
+    /**
+     * Symbian 2nd phase constructor
+     */
+    void ConstructL();		// Second phase construct
+
+private:	// Data
+
+    /// OWN: Object Container of Sub-Sessions, owned over iContainerIx
+    CObjectCon*								iContainer;
+
+    /// OWN: Flag if server is running
+    TBool									iRunning;
+
+    /// OWN: Session count
+    TInt									iSessCount;
+
+    /// OWN: Opened sessions count
+    TInt									iOpenedSessions;
+
+    /// OWN: Container of the CSP Managers
+    ///      Elements OWNed
+    RPointerArray<CPEngCSPSessManager>		iSessionsManagers;
+
+    /// OWN: Storage Admin main client
+    RPEngStorageAdminClient					iStoreAdmin;
+    };
+
+#endif      //  __CPENGSERVER_H__
+