usbmgmt/usbmgrtest/t_ncm/inc/tcptest.h
branchRCL_3
changeset 15 f92a4f87e424
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_ncm/inc/tcptest.h	Tue Aug 31 17:01:47 2010 +0300
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2002-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:
+*
+*/
+
+/** @file
+ @internalComponent
+ @test
+ */
+
+#ifndef TCPTEST_H
+#define TCPTEST_H
+
+#include <e32cons.h>
+#include <es_sock.h>
+#include <in_sock.h>
+
+class CTcpProcess : public CActive
+/**
+Run TCP test: Create a tcp connection and make data transfer on it.
+*/
+	{
+public:
+	static CTcpProcess* NewL(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode);
+	~CTcpProcess();
+
+private:
+	CTcpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode);
+	void ConstructL();
+
+	void RecvDataL();
+    TInt SendDataL(TDes8& aData, TInt aSize);
+    void PrintData(TDes8& aData);
+
+private:
+	//From CActive
+    virtual void RunL();
+    virtual void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	enum TProcessState
+		{
+		ECreateConnection,	//Create tcp connection
+		EDataTransfer		//Data transfer
+		};
+
+private:
+	CConsoleBase& iConsole;
+
+	RSocketServ iSockServ;
+	RSocket iListenSocket;
+	RSocket iSocket;
+	
+	TInetAddr& iAddr; 
+	TInt iPort;
+	
+	//The size of send buf and receive buf
+	TInt iSize;
+
+	RBuf8 iRecvBuf;
+	RBuf8 iSendBuf;
+
+	TSockXfrLength iRecvSize;
+	
+	TBool iMode; //ETrue: as a Server, and data transfer is receive first, then send back
+				 //EFalse: as a client, and data transfer is send first, then receive.
+	
+	TProcessState iProcessState;
+	
+	};
+
+
+class CUdpProcess : public CActive
+            /**
+              Run TCP test: Create a udp connection and make data transfer on it.
+              */
+{
+    public:
+    static CUdpProcess* NewL(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode);
+    ~CUdpProcess();
+
+    private:
+    CUdpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode);
+    void ConstructL();
+
+    void RecvDataL();
+    TInt SendDataL(TDes8& aData, TInetAddr& aAddr, TInt aSize);
+    void PrintData(TDes8& aData);
+
+    private:
+    //From CActive
+    virtual void RunL();
+    virtual void DoCancel();
+    TInt RunError(TInt aError);
+
+    private:
+    enum TProcessState
+    {
+        EDataSending,   //Data Sending
+        EDataTransfer   //Data Recving
+    };
+
+    private:
+    CConsoleBase& iConsole;
+
+    RSocketServ iSockServ;
+    RSocket iListenSocket;
+    RSocket iSocket;
+
+    TInetAddr iAddr; 
+    TInetAddr iPeerAddr;
+    TInt iPort;
+
+    //The size of send buf and receive buf
+    TInt iSize;
+
+    RBuf8 iRecvBuf;
+    RBuf8 iSendBuf;
+
+    TSockXfrLength iRecvSize;
+
+    TBool iMode; //ETrue: as a Server, and data transfer is receive first, then send back
+    //EFalse: as a client, and data transfer is send first, then receive.
+
+    TProcessState iProcessState;
+
+};
+
+
+class CTcpCommand;
+class CTcpTestConsole : public CActive 
+/**
+The console of tcp test.
+*/
+	{
+public:
+	static CTcpTestConsole* NewL(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner);
+	~CTcpTestConsole();
+
+	TBool StartL();
+	void Help();
+	
+private:
+	CTcpTestConsole(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner);
+	void ConstructL();
+
+private:
+	//From CActive
+    virtual void RunL();
+    virtual void DoCancel();
+	TInt RunError(TInt aError);
+
+private:
+	enum TCommandMode
+		{
+		ECommandInit,	//Get parameter from user input
+		ECommandRunning //tcp test run
+		};
+	
+private:
+	CConsoleBase* iConsole;
+	RBuf		 iChars;
+	TCommandMode iCommandMode;
+	
+	CTcpProcess* iTcp;
+	CUdpProcess* iUdp;
+	TBool iMode; //ETrue server EFalse client
+	TBool iIsTcp;
+	
+	//The defaut addr, format like 'addr port' (192.168.2.101 5000)
+	const TDesC& iDefaultAddr;
+	TInt iIndex;
+	CTcpCommand& iOwner;
+	
+	};
+
+#endif //TCPTEST_H