tsrc/testtools/stubsrv/inc/stubsrv.h
author hgs
Tue, 13 Jul 2010 00:24:10 +0300
changeset 62 eadeea68c837
permissions -rw-r--r--
201027

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

#ifndef STUBSRV_H
#define STUBSRV_H

#include <e32svr.h>
#include <e32base.h>
#include <apibehavior.h>
#include "stubclientsrv.h"

enum TStubfPanic
    {
    EStubfBadRequest = 100000,
    EStubfBadDescriptor,
    EStubfNotCompletedApis,
    EStubfBadMessage,
    EStubfNoLimitedMessage,
    EStubfClassMemberVariableIsNull,
    EStubfClassMemberVariableIsNotNull,
    EMainSchedulerError,
    EStubfApiAlreadyStarted,
    EStubfApiNotStarted,
    };

class CStubSrvSess;

NONSHARABLE_CLASS(CStubSrv) : public CPolicyServer
    {

public:

    static CStubSrv* NewLC();

    ~CStubSrv();

public:

    void StartShutdownTimerIfNoSessions();
    
    TInt ClientOpened(CStubSrvSess& aSession);
        
    void ClientClosed(CStubSrvSess& aSession);

    void EnqueueL(const RMessage2& aMessage);
    
	void DeleteQueues(const RMessage2& aMessage);
	
	TInt Dequeue(TApiBehavior& aBeh, TInt& aExeDuration, TInt aTransactionId);

	void GetApiCompleteCodeL(const RMessage2& aMessage);

private:

    CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
    
private:

    CStubSrv(TInt aPriority);

    void ConstructL();
    
    void CancelShutdownTimer();
            
    static TInt TimerFired(TAny* aThis);

private:
    class TApiQueueItem
        {
    public:
        TApiBehavior iBeh;
        TInt iExeDuration;
        TInt iTransactionId;
        };

private:

    CPeriodic* iTimer;
    
    RPointerArray<CStubSrvSess> iSessions;
    
    RPointerArray<TApiQueueItem> iBehQueue;
    TInt iTransctionUnique;
    };

#endif