keepalive/flextimer/test/testflextimer/flextimerservermonitor/inc/rflextimerservermonitor.h
author hgs
Mon, 24 May 2010 20:51:35 +0300
changeset 32 5c4486441ae6
permissions -rw-r--r--
201021

/*
 * Copyright (c) 2010 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:
 *      Client implementation for FlexTimerServerMonitor
 */

/*
 * %version: 1 %
 */

#ifndef RFLEXTIMERSERVERMONITOR_H
#define RFLEXTIMERSERVERMONITOR_H

// INCLUDE FILES
#include <e32std.h> 

// CLASS DECLARATION
/**
 * Client implementation for FlexTimerServerMonitor.
 * Forwards all requests as synchronous messages to the client.
 * 
 * Creates the server if it is not up'n'running when connecting to the server
 * at the first time.
 * 
 * StartMonitoring() has to be called before StopMonitoring() and GetStatus()
 * works. Note! The starting can be done by different handle. I.e.
 * 
 * @code
 * 
 *      RFlexTimerServerMonitor mon1;
 *      mon1.Connect();
 *      mon1.StartMonitoring();
 *      mon1.Close();
 *      
 *      .
 *      .
 *      . 
 *      
 *      RFlexTimerServerMonitor mon2;
 *      mon2.Connect();
 *      TBool hasCrashed;
 *      mon2.GetStatus( hasCrashed );
 *      // Do your stuff
 *      ...
 *      mon2.StopMonitoring();
 *      mon2.Close();
 *      
 * @endcode
 */
class RFlexTimerServerMonitor : public RSessionBase
    {
public:
    // Constructors and destructors

    /**
     * Constructor
     */
    IMPORT_C RFlexTimerServerMonitor();

    /**
     * Destructor
     */
    IMPORT_C ~RFlexTimerServerMonitor();

    /**
     * Connect to the server.
     * 
     * @return KErrNone on success. Otherwise returns one of the system-wide
     * error codes.
     */
    IMPORT_C TInt Connect();

    /**
     * Start detecting the crashes.
     * 
     * @return KErrNone if succeeded, KErrAlreadyExists if monitoring is
     * already activated, or any other system-wide error code.
     */
    IMPORT_C TInt StartMonitoring();

    /**
     * Stop detecting the crashes.
     * 
     * @return KErrNone if succeeded, KErrNotFound if monitoring is not
     * activated, or any other system-wide error code.
     */
    IMPORT_C TInt StopMonitoring();
    
    /**
     * Get the current status of monitoring.
     * 
     * 
     * @param aHasServerCrashed ETrue if server has crashed, EFalse otherwise
     * @return KErrNone if succeeded, KErrNotFound if monitoring is not
     * activated, or any other system-wide error code.
     */
    IMPORT_C TInt GetStatus( TBool& aHasServerCrashed );
    
private:
    
    /**
     * Gets the version number.
     * @return The version.
     */
    TVersion Version() const;

    /**
     * Connects to the server. If server does not exist, it is created.
     * @return KErrNone on success. Otherwise returns one of the system-wide
     * error codes.
     */
    TInt StartServer();
    };

#endif // RFLEXTIMERSERVERMONITOR_H

// End of File