obex/obexprotocol/obex/test/testobexerrorcodes/TestObexErrorCodesClient.cpp
changeset 0 d0791faffa3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/obex/obexprotocol/obex/test/testobexerrorcodes/TestObexErrorCodesClient.cpp	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,237 @@
+// Copyright (c) 2003-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:
+//
+
+#include <f32file.h>
+#include "TestObexErrorCodes.h"
+
+/**
+ * Static NewL
+ *
+ * @return Base class*
+ */
+CTestObexErrorCodesClient* CTestObexErrorCodesClient::NewL(CControllerConsoleTest* aOwner)
+	{
+	CTestObexErrorCodesClient* self = new(ELeave) CTestObexErrorCodesClient;
+	CleanupStack::PushL(self);
+	self->ConstructL(aOwner);
+	self->StartIrdaClientL();
+	CleanupStack::Pop( self );
+
+	return self;
+	}
+
+
+
+
+/**
+*
+* CTestObexErrorCodesClient
+*
+*/
+
+CTestObexErrorCodesClient::CTestObexErrorCodesClient()
+	{
+	}
+
+/**
+*
+* ~CTestObexErrorCodesClient
+*
+*/
+
+CTestObexErrorCodesClient::~CTestObexErrorCodesClient()
+	{
+	delete iClient;
+   	}
+
+void CTestObexErrorCodesClient::Stop()
+	{
+	iOwner->iConsole->Printf(_L("About to Stop the iClient ..\n"));
+
+
+	}
+
+
+void CTestObexErrorCodesClient::Start()
+	{
+//Start the test
+
+	iClient->Connect();	//should fail with appropriate error code
+
+
+	}
+
+
+
+
+void CTestObexErrorCodesClient::StartIrdaClientL()
+	{
+
+	iOwner->iConsole->Printf(_L("About to load the CObexClient...\n"));
+
+	TObexIrProtocolInfo aInfo;
+	aInfo.iTransport     = _L("IrTinyTP");
+	aInfo.iClassName     = _L8("OBEX");
+	aInfo.iAttributeName = _L8("IrDA:TinyTP:LsapSel");
+
+
+	iClient  = CObexClientHandler::NewL (this, aInfo);
+		
+
+	iBuf = CBufFlat::NewL(5000);//5000 - what should I put??
+	iObject  = CObexBufObject::NewL (iBuf);
+	iOwner->iConsole->Printf(_L("Irda Client loaded Success \n"));
+
+	
+	
+	}
+
+void CTestObexErrorCodesClient::CallBack(TRequestStatus aStatus, TTestProgress aActivity)
+	{
+	
+	//first of all establish what has just happened.
+	if ( aActivity == EConnecting ) //then it's time for the first PUT
+		{
+		iClient->Put();
+		iErrorCode = ERespContinue;
+		}
+	else if (aActivity == EPutting )
+		{
+		iOwner->iConsole->Printf(_L("Put Complete with Code %d \n"), aStatus.Int());
+		if ( iErrorCode < ERespDatabaseLocked )
+			{
+			iErrorCode++;
+			iClient->Put();
+			}
+		}
+
+	}
+
+
+
+
+CObexClientHandler* CObexClientHandler::NewL(CTestObexErrorCodesClient* aOwner,
+											 TObexProtocolInfo& aObexProtocolInfoPtr)
+	{
+	CObexClientHandler* self = new(ELeave) CObexClientHandler;
+	CleanupStack::PushL(self);
+	self->ConstructL(aOwner, aObexProtocolInfoPtr);
+	CleanupStack::Pop( self );
+
+	return self;
+	
+	}
+
+CObexClientHandler::~CObexClientHandler()
+	{
+	delete iClient;
+	}
+
+void CObexClientHandler::Connect()
+	{
+	if (!IsActive() )
+		{
+		iActivity = EConnecting;
+
+		iClient->Connect(iStatus);
+		SetActive();
+		}
+	else
+		iOwner->iOwner->iConsole->Printf(_L("\r\nError: Client handler already active\r\n"));
+	}
+
+void CObexClientHandler::Disconnect()
+	{
+	if (!IsActive() )
+		{
+		iActivity = EDisconnecting;
+		iClient->Disconnect(iStatus);
+		SetActive();
+		}
+	else
+		iOwner->iOwner->iConsole->Printf(_L("\r\nError: Client handler already active\r\n"));
+
+	}
+
+CObexClientHandler::CObexClientHandler()
+    : CActive(EPriorityNormal)
+	{
+	}
+
+void CObexClientHandler::ConstructL(CTestObexErrorCodesClient* aOwner,
+									TObexProtocolInfo& aObexProtocolInfoPtr)
+	{
+	iOwner = aOwner;
+
+    iFileObject = CObexFileObject::NewL();
+
+
+	iClient = CObexClient::NewL(aObexProtocolInfoPtr);
+    CActiveScheduler::Add(this);			// Add to active scheduler
+	iActivity = EIdle;
+	}
+
+void CObexClientHandler::DoCancel()
+	{
+	iClient->Abort();
+	}
+
+void CObexClientHandler::RunL()
+	{
+	
+	iOwner->CallBack(iStatus, iActivity);
+		
+	}
+
+void CObexClientHandler::Put()
+	{
+    if(IsActive())
+		{
+
+		iOwner->iOwner->iConsole->Printf(_L("\r\nError: Client handler already active\r\n"));
+		return;
+		}
+
+	TInt err;
+
+	TRAP(err, iFileObject->InitFromFileL (_L("Contacts.vcf")));
+
+	if (err != KErrNone)
+		{
+		RFs fs;
+		RFile f;
+		if ((fs.Connect () != KErrNone) || 
+			(f.Create (fs, _L("Contacts.vcf"), EFileShareExclusive | EFileWrite) != KErrNone))
+			iOwner->iOwner->iConsole->Printf(_L("\r\nError reading 'Contacts.vcf'.\r\nI tried to create this file for you, but failed to do that too. Sorry.\r\n\r\n"));
+		else
+			{
+			f.Write (_L8("Test file for sending from EPOC\r\n\r\nLooks like obex is sending OK!!\r\n"));
+			f.Close ();
+			iOwner->iOwner->iConsole->Printf(_L("\r\nFile 'Contacts.vcf' did not exist, so I've created one.\r\nPlease try again.\r\n\r\n"));
+			}
+		fs.Close ();
+		}
+
+
+	if( err != KErrNone)
+		{
+		iOwner->iOwner->iConsole->Printf(_L("\r\n Couldnt set up object : error %d \r\n"),err);
+		return;
+		}
+
+	iClient->Put(*iFileObject,iStatus);
+	SetActive();
+	iActivity = EPutting;
+	}