classicui_plat/server_application_api/inc/AknServerApp.h
author hgs
Tue, 31 Aug 2010 21:12:01 +0800
changeset 54 4e76f14a5917
parent 45 667edd0b8678
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 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 applications framework.
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
hgs
parents:
diff changeset
    20
#ifndef AKNSERVERAPP_H
hgs
parents:
diff changeset
    21
#define AKNSERVERAPP_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <eikserverapp.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
/**
hgs
parents:
diff changeset
    26
 * Allows a server app client to connect to a new server app, which
hgs
parents:
diff changeset
    27
 * will be chained from the client app, giving it the appearance
hgs
parents:
diff changeset
    28
 * of being embedded within the client.
hgs
parents:
diff changeset
    29
 *
hgs
parents:
diff changeset
    30
 * Series 60 client-side service IPC implementations should be
hgs
parents:
diff changeset
    31
 * derived from this class.
hgs
parents:
diff changeset
    32
 */
hgs
parents:
diff changeset
    33
class RAknAppServiceBase : public REikAppServiceBase
hgs
parents:
diff changeset
    34
    {
hgs
parents:
diff changeset
    35
public:
hgs
parents:
diff changeset
    36
    /**
hgs
parents:
diff changeset
    37
    * Launch a new server app instance, which will be chained
hgs
parents:
diff changeset
    38
    * from the current application.
hgs
parents:
diff changeset
    39
    * Note, this function can only be used from the context of
hgs
parents:
diff changeset
    40
    * an application thread, as it depends on the existence of
hgs
parents:
diff changeset
    41
    * a CEikonEnv object.
hgs
parents:
diff changeset
    42
    * If you want to launch a chained server app in a situation
hgs
parents:
diff changeset
    43
    * where a CEikonEnv does not exist, use REikAppServiceBase::ConnectNewChildAppL()
hgs
parents:
diff changeset
    44
    * instead.
hgs
parents:
diff changeset
    45
    * @param aAppUid The UID of the server app which you wish to
hgs
parents:
diff changeset
    46
    * launch.
hgs
parents:
diff changeset
    47
    */
hgs
parents:
diff changeset
    48
    IMPORT_C void ConnectChainedAppL(TUid aAppUid);
hgs
parents:
diff changeset
    49
    /**
hgs
parents:
diff changeset
    50
    * Close the server app session.
hgs
parents:
diff changeset
    51
    */
hgs
parents:
diff changeset
    52
    IMPORT_C void Close();
hgs
parents:
diff changeset
    53
    };
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
/**
hgs
parents:
diff changeset
    57
 * Interface for monitoring the lifetime of a server app.
hgs
parents:
diff changeset
    58
 * This class adds Series 60 common behavior to the handling
hgs
parents:
diff changeset
    59
 * of server app exits.
hgs
parents:
diff changeset
    60
 */
hgs
parents:
diff changeset
    61
class MAknServerAppExitObserver : public MApaServerAppExitObserver
hgs
parents:
diff changeset
    62
    {
hgs
parents:
diff changeset
    63
public: // from MApaServerAppExitObserver
hgs
parents:
diff changeset
    64
    /**
hgs
parents:
diff changeset
    65
    * Handle the exit of a connected server app.
hgs
parents:
diff changeset
    66
    * This implementation provides Series 60 default behavior
hgs
parents:
diff changeset
    67
    * for handling of the EAknCmdExit exit code. Derived classes
hgs
parents:
diff changeset
    68
    * should base-call this implementation if they override this
hgs
parents:
diff changeset
    69
    * function.
hgs
parents:
diff changeset
    70
    * @param aReason The reason that the server application exited.
hgs
parents:
diff changeset
    71
    * This will either be an error code, or the command id that caused
hgs
parents:
diff changeset
    72
    * the server app to exit.
hgs
parents:
diff changeset
    73
    */
hgs
parents:
diff changeset
    74
    IMPORT_C virtual void HandleServerAppExit(TInt aReason);
hgs
parents:
diff changeset
    75
    };
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
/**
hgs
parents:
diff changeset
    79
 * Base class for server app service IPC implementations.
hgs
parents:
diff changeset
    80
 * This class provides notifications of service creation and
hgs
parents:
diff changeset
    81
 * destruction to the server, to give the server the ability
hgs
parents:
diff changeset
    82
 * to handle the case where all clients have closed their
hgs
parents:
diff changeset
    83
 * sessions.
hgs
parents:
diff changeset
    84
 */
hgs
parents:
diff changeset
    85
class CAknAppServiceBase : public CApaAppServiceBase
hgs
parents:
diff changeset
    86
    {
hgs
parents:
diff changeset
    87
public:
hgs
parents:
diff changeset
    88
    /**
hgs
parents:
diff changeset
    89
    * Constructor
hgs
parents:
diff changeset
    90
    */
hgs
parents:
diff changeset
    91
    IMPORT_C CAknAppServiceBase();
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
    * Destructor
hgs
parents:
diff changeset
    94
    */
hgs
parents:
diff changeset
    95
    IMPORT_C ~CAknAppServiceBase();
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
protected: // from CSession2
hgs
parents:
diff changeset
    98
    /**
hgs
parents:
diff changeset
    99
    * Override of CSession2::CreateL().
hgs
parents:
diff changeset
   100
    * If further overridden, this function must be base-called.
hgs
parents:
diff changeset
   101
    */
hgs
parents:
diff changeset
   102
    IMPORT_C void CreateL();
hgs
parents:
diff changeset
   103
    /**
hgs
parents:
diff changeset
   104
    * Override of CSession2::ServiceL().
hgs
parents:
diff changeset
   105
    * If further overridden, this function must be base-called.
hgs
parents:
diff changeset
   106
    * @param aMessage The client message
hgs
parents:
diff changeset
   107
    */
hgs
parents:
diff changeset
   108
    IMPORT_C void ServiceL(const RMessage2& aMessage);
hgs
parents:
diff changeset
   109
    /**
hgs
parents:
diff changeset
   110
    * Override of CSession2::ServiceError().
hgs
parents:
diff changeset
   111
    * If further overridden, this function must be base-called.
hgs
parents:
diff changeset
   112
    * @param aMessage The client message.
hgs
parents:
diff changeset
   113
    * @param aError The error code to which occured during message servicing
hgs
parents:
diff changeset
   114
    */
hgs
parents:
diff changeset
   115
    IMPORT_C void ServiceError(const RMessage2& aMessage,TInt aError);
hgs
parents:
diff changeset
   116
    };
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
/**
hgs
parents:
diff changeset
   120
 * Base class for server app's servers.
hgs
parents:
diff changeset
   121
 * Series 60 applications that want to implement services should
hgs
parents:
diff changeset
   122
 * derive their server class from this.
hgs
parents:
diff changeset
   123
 * This class already supports the standard Series 60 services,
hgs
parents:
diff changeset
   124
 * and is instantiated by default if an application is launched
hgs
parents:
diff changeset
   125
 * as a server app, but does not override CAknApp::NewServerAppL().
hgs
parents:
diff changeset
   126
 */
hgs
parents:
diff changeset
   127
class CAknAppServer : public CEikAppServer
hgs
parents:
diff changeset
   128
    {
hgs
parents:
diff changeset
   129
public: // from CAknAppServer
hgs
parents:
diff changeset
   130
    /**
hgs
parents:
diff changeset
   131
    * Destructor
hgs
parents:
diff changeset
   132
    */
hgs
parents:
diff changeset
   133
	IMPORT_C ~CAknAppServer();
hgs
parents:
diff changeset
   134
    /**
hgs
parents:
diff changeset
   135
    * Second stage construction.
hgs
parents:
diff changeset
   136
    * Derived classes may override this to add extra second
hgs
parents:
diff changeset
   137
    * stage constuction, but they must base-call.
hgs
parents:
diff changeset
   138
    * @param aFixedServerName the name that this server will have,
hgs
parents:
diff changeset
   139
    * must be passed through in the base-call.
hgs
parents:
diff changeset
   140
    */
hgs
parents:
diff changeset
   141
    IMPORT_C void ConstructL(const TDesC& aFixedServerName);
hgs
parents:
diff changeset
   142
    /**
hgs
parents:
diff changeset
   143
    * Create a new service implementation.
hgs
parents:
diff changeset
   144
    * This implementation creates common Series 60 services.
hgs
parents:
diff changeset
   145
    * Derived classes can override this to add support for specific
hgs
parents:
diff changeset
   146
    * services that they support. They must base-call for any
hgs
parents:
diff changeset
   147
    * service UIDs that they do not support.
hgs
parents:
diff changeset
   148
    * @param aServiceType the UID of the service that has been requested
hgs
parents:
diff changeset
   149
    * @return a new service instance of the type requested
hgs
parents:
diff changeset
   150
    */
hgs
parents:
diff changeset
   151
    IMPORT_C CApaAppServiceBase* CreateServiceL(TUid aServiceType) const;
hgs
parents:
diff changeset
   152
public: // new
hgs
parents:
diff changeset
   153
    /**
hgs
parents:
diff changeset
   154
    * Allows the server to handle the case when all client sessions
hgs
parents:
diff changeset
   155
    * have closed.
hgs
parents:
diff changeset
   156
    * The default implementation provides the Series 60 policy of
hgs
parents:
diff changeset
   157
    * closing the server application. If this is not appropriate for
hgs
parents:
diff changeset
   158
    * a server app, it should override this function to provide its
hgs
parents:
diff changeset
   159
    * own behavior.
hgs
parents:
diff changeset
   160
    */
hgs
parents:
diff changeset
   161
    IMPORT_C virtual void HandleAllClientsClosed();
hgs
parents:
diff changeset
   162
public: // not exported
hgs
parents:
diff changeset
   163
    void HandleSessionClose();
hgs
parents:
diff changeset
   164
    void HandleSessionOpen();
hgs
parents:
diff changeset
   165
private:
hgs
parents:
diff changeset
   166
    TInt iSessionCount;
hgs
parents:
diff changeset
   167
    };
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
#endif
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
// End of file.