diff -r 3dcb815346df -r 4096754ee773 localconnectivityservice/dun/server/inc/DunServer.h --- a/localconnectivityservice/dun/server/inc/DunServer.h Thu Aug 19 10:46:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,361 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: DUN server -* -*/ - - -#ifndef C_CDUNSERVER_H -#define C_CDUNSERVER_H - -#include -#include "DunPlugin.h" -#include "DunCloseWait.h" -#include "dunserverdef.h" -#include "dundomainpskeys.h" - -_LIT( KDunPluginBt, "dunbt.dll" ); -_LIT( KDunPluginIrda, "dunir.dll" ); -_LIT( KDunPluginUsb, "dunusb.dll" ); - -class MDunSession; -class MDunServerUtility; - -/** - * Class used to store data needed for each separate plugin - * One TDunConnectionData data contains objects needed for one plugin - * - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( TDunConnectionData ) - { - -public: - - /** - * Pointer to plugin DLL - * Not own. - */ - MDunLocalMediaPlugin* iLocalModulePtr; - - /** - * Current state of plugin - */ - TDunPluginState iPluginState; - - /** - * DLL library server needed to open/close existing plugin - */ - RLibrary iModuleLibrary; - - /** - * Loaded plugin's UID - */ - TUid iLocalModuleUid; - - }; - -/** - * Main DUN server's class - * - * @since S60 v3.2 - */ -class CDunServer : public CPolicyServer, - public MDunServerCallback, - public MDunCloseWait - { - - friend class CDunServerUtils; - -public: - - /** - * Two-phased constructor. - * @return Instance of self - */ - static CDunServer* NewL(); - - /** - * Destructor. - */ - virtual ~CDunServer(); - - /** - * Notification to manage local media On request - * This comes from client - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to open - * @return None - */ - TInt NotifyMediaOpenRequest( TUid aPluginUid ); - - /** - * Notification to manage local media Off request - * This comes from client - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to close - * @return None - */ - TInt NotifyMediaCloseRequest( TUid aPluginUid ); - - /** - * Current active connection - * (For testing purposes only) - * - * @since S60 5.0 - * @return Active connection, NULL otherwise - */ - TConnId ActiveConnection(); - - /** - * Increases reference count made by sessions - * This comes from client - * - * @since S60 3.2 - * @return None - */ - void IncRefCount(); - - /** - * Decreases reference count made by sessions - * This comes from client - * - * @since S60 3.2 - * @return None - */ - void DecRefCount(); - -// from base class CServer2 (CPolicyServer -> CServer2) - - /** - * From CServer2 (CPolicyServer derived from CServer2). - * Creates a server-side client session object. - * - * @since S60 3.2 - * @param aVersion Version information supplied by the client - * @return A pointer to the newly created server-side client session - */ - CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& ) const; - -private: - - CDunServer( TInt aPriority ); - - void ConstructL(); - - /** - * Opens local media plugin by UID - * - * @since S60 3.2 - * @param aPluginUid UID of local media plugin to open - * @param aDequeue ETrue if restarting of queued plugins and plugin - * dequeue wanted after successful plugin close - * (normal case, see also TryClosePlugin()), - * EFalse if no restarting of queued plugins and plugin - * dequeue wanted after successful plugin close - * (in this case caller is reopener itself, see also - * ReopenQeueuedPlugins()) - * @return Symbian error code on error, KErrNone otherwise - */ - TInt OpenMediaByUid( TUid aPluginUid, TBool aDequeue ); - - /** - * Closes local media plugin by UID - * - * @since S60 3.2 - * @param aPluginUid UID of local media plugin to close - * @param aClearQueued ETrue if clear from plugin queue wanted, - * EFalse otherwise - * @param aClientClose ETrue if close originator is client - * @param aSelfDelete ETrue if plugin closes itself, EFalse otherwise - * @return Symbian error code on error, KErrNone otherwise - */ - TInt CloseMediaByUid( TUid aPluginUid, - TBool aClearQueued, - TBool aClientClose, - TBool aSelfDelete ); - - /** - * Reopens plugins from plugin queue - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt ReopenQueuedPlugins(); - -// from base class MDunServerCallback - - /** - * From MDunServerCallback. - * Searches for plugin in connection data and returns its state - * - * @since S60 3.2 - * @param aPluginUid UID of local media plugin to search for - * @return State of plugin - */ - TDunPluginState GetPluginStateByUid( TUid aPluginUid ); - - /** - * From MDunServerCallback. - * Notification about request to change plugin state up by one level - * - * @since S60 3.2 - * @param aPluginState New state to set for a local media plugin - * @param aPluginUid UID of the local media plugin whose state to change - * @return KErrNotFound if plugin not found by UID, - KErrNotSupported if unknown state, - KErrNone otherwise - */ - TInt NotifyPluginStateChangeUp( TDunPluginState aPluginState, - TUid aPluginUid ); - - /** - * From MDunServerCallback. - * Notification about request to change plugin state down by one level - * - * @since S60 3.2 - * @param aPluginState New state to set for a local media plugin - * @param aPluginUid UID of the local media plugin whose state to change - * @return KErrNotFound if plugin not found by UID, - KErrNotSupported if unknown state, - KErrNone otherwise - */ - TInt NotifyPluginStateChangeDown( TDunPluginState aPluginState, - TUid aPluginUid ); - - /** - * From MDunServerCallback. - * Notification about plugin restart request - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to restart - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyPluginRestart( TUid aPluginUid ); - - /** - * From MDunServerCallback. - * Notification about plugin reopen request - * - * @since S60 3.2 - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyPluginReopenRequest(); - -// from base class MDunPluginManager (MDunServerCallback->MDunPluginManager). - - /** - * From MDunPluginManager (MDunServerCallback->MDunPluginManager). - * Notification about request to enqueue a plugin to plugin queue - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to enqueue - * @return KErrNotFound = plugin not found by UID, - KErrAlreadyExists = plugin already in queue, - KErrNone otherwise - */ - TInt NotifyPluginEnqueueRequest( TUid aPluginUid ); - - /** - * From MDunPluginManager (MDunServerCallback->MDunPluginManager). - * Notification about request to dequeue a plugin from plugin queue - * Just removes a found UID from the queue - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to dequeue - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyPluginDequeueRequest( TUid aPluginUid ); - - /** - * From MDunPluginManager (MDunServerCallback->MDunPluginManager). - * Notification about request to close a plugin - * - * @since S60 3.2 - * @param aPluginUid UID of the local media plugin to close - * @param aSelfClose ETrue if plugin closes itself, EFalse otherwise - * @return Symbian error code on error, KErrNone otherwise - */ - TInt NotifyPluginCloseRequest( TUid aPluginUid, - TBool aSelfClose ); - -// from base class MDunCloseWait - - /** - * From MDunCloseWait. - * Notification about request to close a plugin after wait - * - * @since S60 5.0 - * @param aPluginsToClose Plugins to be closed - * @return Symbian error code on error, KErrNone otherwise - */ - void NotifyPluginCloseAfterWait( - RPointerArray& aPluginsToClose ); - -private: // data - - /** - * Pointer to common utility class - * Own. - */ - MDunServerUtility* iUtility; - - /** - * Transporter to use for network side communication - * Own. - */ - CDunTransporter* iTransporter; - - /** - * Waiter for closing self-destruct plugins - * Own. - */ - CDunCloseWait* iCloseWait; - - /** - * Array of TDunConnectionData needed for each loaded plugin - */ - RArray iConnData; - - /** - * Array of plugin UIDs - * Used for queuing plugins that have no resources to use - * Used for dequeuing plugins when free resources detected - */ - RArray iPluginQueue; - - /** - * Array of plugin UIDs - * Used for queuing plugins that were successfully closed outside - * this server. This is to avoid returning KErrNotFound to LOCOD - * when NotifyMediaCloseRequest() is caught - */ - RArray iClosedQueue; - - /** - * Connection status of dialup: active or inactive - * Used for updating KPSUidDialupConnStatus Pub&Sub key - */ - TDialupConnStatus iConnStatus; - - /** - * Reference count of client sides - */ - TInt iRefCount; - - }; - -#endif // C_CDUNSERVER_H