linklayerprotocols/pppnif/te_ppp/inc/DummyAgtRef.h
author hgs
Wed, 25 Aug 2010 09:23:03 +0530
changeset 55 5eca823bbf17
parent 0 af10295192d8
permissions -rw-r--r--
201031_01

// Copyright (c) 2001-2009 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:
// Defines the interface to a "dummy" Nifman Agent Ref.
// 
//

/**
 @file
*/

#ifndef __DUMMYAGTREF_H__
#define __DUMMYAGTREF_H__

#include "nifagt.h"
#include "nifif.h"
#include "es_ini.h"
#include <testexecutelog.h>
#include <testexecutestepbase.h>
#include "common.h"

class CTestMgr;
class CDummyProtocol;
class CESockIniData;
class CCommonData;

class CDummyNifAgentRef : public CBase,
								 public MNifAgentNotify,
								 public MNifIfNotify
{
public:
	static CDummyNifAgentRef* NewL(const TDesC& aName,CTestMgr& aTheMgr, CTestExecuteLogger& aLogger);
	~CDummyNifAgentRef();
	//
	bool CreateIniReader();
	void DestroyIniReader();
	//
	// MNifIfNotify overrides
    virtual void LinkLayerDown(TInt aReason, TAction aAction);
	virtual void LinkLayerUp();
    virtual void NegotiationFailed(CNifIfBase* aIf, TInt aReason);
    virtual TInt Authenticate(TDes& aUsername, TDes& aPassword);
    virtual void CancelAuthenticate();
	virtual TInt GetExcessData(TDes8& aBuffer);
    virtual void IfProgress(TInt aStage, TInt aError);
    virtual void IfProgress(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
	virtual void OpenRoute();
	virtual void CloseRoute();
	virtual TInt Notification(TNifToAgentEventType aEvent, void* aInfo);
	virtual void BinderLayerDown(CNifIfBase* aBinderIf, TInt aReason, TAction aAction);
	virtual TInt PacketActivity(TDataTransferDirection aDirection, TUint aBytes, TBool aResetTimer);
	virtual void NotifyDataSent(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aUplinkVolume);
	virtual void NotifyDataReceived(TSubConnectionUniqueId aSubConnectionUniqueId, TUint aDownlinkVolume);
	virtual void NifEvent(TNetworkAdaptorEventType aEventType, TUint aEvent, const TDesC8& aEventData, TAny* aSource=0);

	//
	// MNifAgentNotify overrides
	virtual void ConnectComplete(TInt aStatus);
	virtual void ReconnectComplete(TInt aStatus);
	virtual void AuthenticateComplete(TInt aStatus);
	virtual void ServiceStarted();
	virtual void ServiceClosed();
	virtual void DisconnectComplete();
	virtual void AgentProgress(TInt aStage, TInt aError);
	virtual	void AgentProgress(TSubConnectionUniqueId aSubConnectionUniqueId, TInt aStage, TInt aError);
	virtual TInt Notification(TAgentToNifEventType aEvent, TAny* aInfo);
	virtual TInt IncomingConnectionReceived();
	virtual void AgentEvent(TNetworkAdaptorEventType aEventType, TUint aEvent, const TDesC8& aEventData, TAny* aSource=0);
    virtual TName Name() const;
	virtual void Close();

	void Stop();

protected:
	virtual TInt DoReadInt(const TDesC& aField, TUint32& aValue,const RMessagePtr2* aMessage);
    virtual TInt DoWriteInt( const TDesC& aField, TUint32 aValue,const RMessagePtr2* aMessage);
    virtual TInt DoReadDes(const TDesC& aField, TDes8& aValue,const RMessagePtr2* aMessage);
    virtual TInt DoWriteDes(const TDesC& aField, const TDesC8& aValue,const RMessagePtr2* aMessage);
    virtual TInt DoReadDes(const TDesC& aField, TDes16& aValue,const RMessagePtr2* aMessage);
    virtual TInt DoWriteDes(const TDesC& aField, const TDesC16& aValue,const RMessagePtr2* aMessage);
	virtual TInt DoReadBool(const TDesC& aField, TBool& aValue,const RMessagePtr2* aMessage);
    virtual TInt DoWriteBool( const TDesC& aField, TBool aValue,const RMessagePtr2* aMessage);

private:
	/**
	CNifAgentRef implements a state machine. 
	Dummy NifAgentRef implements a simplified version of that state machine, sufficient for	testing with ANVL.  
	This enum should be extended as necessary.	*/
	enum TState
		{
		/** Link layer is up: NIF is Up. */
		ELinkUp,
		/** Link layer is in the process of being stopped: NIF is negotiating termination */
		EStopping,
		/** Link layer is down: NIF has terminated */
		EStopped	
		};
private:
	//
	CDummyNifAgentRef(const TDesC& aName,CTestMgr& aTheMgr, CTestExecuteLogger& aLogger);
	void ConstructL();
	void ServiceStartedL();
	//attributes
	TDesC iName;
	CNifIfLink* iInterface;
	CNifIfBase* iInterfaceBound;
	CTestMgr& iTheMgr;
	CDummyProtocol* ipDummyPrt; //psydo protocol to bind with the ppp.
	CESockIniData* ipIniFileReader;
	CTestExecuteLogger iLogger;
	CCommonData iData;
	/** The state of the AgentRef (Reflects the state of the NIF associated with the AgentRef. */
	TState iState;
};

//
//inlines
inline bool
CDummyNifAgentRef::CreateIniReader()
{
		//if the it's imposible to open ppp.ini -> will use hardcoded info
	TRAPD(result,ipIniFileReader=CESockIniData::NewL(iData.KPppIniFullPath));
	if (result != KErrNone)
	{
		ipIniFileReader=0;
	}
	
	return ipIniFileReader != 0 ;
}

inline void
CDummyNifAgentRef::DestroyIniReader()
{
		delete ipIniFileReader;
}

#endif //__DUMMYAGTREF_H__