obex/obexprotocol/obex/test/tobex/serverhandlerbase.cpp
changeset 54 4dc88a4ac6f4
parent 52 866b4af7ffbe
child 57 f6055a57ae18
--- a/obex/obexprotocol/obex/test/tobex/serverhandlerbase.cpp	Tue Sep 28 20:14:08 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1007 +0,0 @@
-// Copyright (c) 2005-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 <es_sock.h>
-#include <ir_sock.h>
-#include <bautils.h>
-#include <usbman.h>
-#include <d32usbc.h>
-#include "serverhandlerbase.h" 
-#include "TOBEXCON.H"
-#include "btextnotifiers.h"
-#include "serverasyncao.h"
-#include <obexconstants.h>
-#include <obexbttransportinfo.h>
-#include <obexirtransportinfo.h>
-#include "obexconstantsinternal.h"
-
-#include "serverpacketaccessui.h"
-
-CObexServerHandlerBase::CObexServerHandlerBase(CActiveConsole* aParent)
-	: iAcceptPuts(ETrue), iParent(aParent)
-    {
-    }
-
-
-void CObexServerHandlerBase::BaseConstructL(TTransport aTransport)
-    {
-
-	iTransportLayer = aTransport;
-	switch (aTransport)
-		{
-		case (EBluetooth):
-			InitBluetoothL();
-			break;
-		
-		case (EIrda):
-			{
-			if(iParent->UseIrdaNickname())
-				{
-				TObexIrV3TransportInfo aInfo;
-				aInfo.iTransportName = KObexIrTTPProtocolV3;
-				aInfo.iReceiveMtu = iParent->iRecvMTU;
-				aInfo.iTransmitMtu = iParent->iTransmitMTU;
-				aInfo.iAddr.SetPort(KAutoBindLSAP);//default obex server for now
-				_LIT8(KClassName, "OBEX");
-				_LIT8(KAttributeName, "IrDA:TinyTP:LsapSel");
-				aInfo.iClassName     = KClassName;
-				aInfo.iAttributeName = KAttributeName;
-				aInfo.iDiscoverySlots = iParent->iDiscoverySlots;
-				aInfo.iDiscoveryAttempts = iParent->iDiscoveryAttempts;
-				aInfo.iLocalDeviceNickname = iParent->GetIrdaNickname();
-				aInfo.iLocalDeviceNicknameValid = ETrue;
-				iServer = CObexServer::NewL(aInfo);
-				}
-			else
-				{
-				TObexIrV2TransportInfo aInfo;
-				aInfo.iTransportName = KObexIrTTPProtocolV2;
-				aInfo.iReceiveMtu = iParent->iRecvMTU;
-				aInfo.iTransmitMtu = iParent->iTransmitMTU;
-				aInfo.iAddr.SetPort(KAutoBindLSAP);//default obex server for now
-				_LIT8(KClassName, "OBEX");
-				_LIT8(KAttributeName, "IrDA:TinyTP:LsapSel");
-				aInfo.iClassName     = KClassName;
-				aInfo.iAttributeName = KAttributeName;
-				aInfo.iDiscoverySlots = iParent->iDiscoverySlots;
-				aInfo.iDiscoveryAttempts = iParent->iDiscoveryAttempts;
-				iServer = CObexServer::NewL(aInfo);
-				}
-			User::LeaveIfError(iServer->Start(this));
-			
-/*			// Uncomment this code to demonstrate CObexServer::TransportInfo 
-			// API with TTP transport.
-			// We get back an TObexIrTransportInfo because we asked for KObexIrTTPProtocol.
-			const TObexIrTransportInfo* transportInfo = static_cast<const TObexIrTransportInfo*>(iServer->TransportInfo());
-			iParent->Console()->Printf(_L("Transport info: \r\n"));
-			iParent->Console()->Printf(_L("\ttransport name: %S\r\n"), &transportInfo->iTransportName);
-			iParent->Console()->Printf(_L("\tversion: %d\r\n"), transportInfo->iVersion);
-			iParent->Console()->Printf(_L("\treceive MTU: %d\r\n"), transportInfo->iReceiveMtu);
-			iParent->Console()->Printf(_L("\ttransmitMTU: %d\r\n"), transportInfo->iTransmitMtu);
-			iParent->Console()->Printf(_L("\tTinyTP port: 0x%02x\r\n"), transportInfo->iAddr.Port());
-			TName wide;
-			wide.Copy(transportInfo->iClassName);
-			iParent->Console()->Printf(_L("\tclass name: %S\r\n"), &wide);
-			wide.Copy(transportInfo->iAttributeName);
-			iParent->Console()->Printf(_L("\tattribute name: %S\r\n"), &wide);
-*/
-			break;
-			}
-		
-		case (EUsb):
-			{
-			TObexUsbProtocolInfo info;
-			info.iTransport = KObexUsbProtocol;
-			info.iInterfaceStringDescriptor = _L("TOBEX Server Interface");
-
-			iServer = CObexServer::NewL (info);
-			User::LeaveIfError(iServer->Start (this));
-			
-/*			// Uncomment this code to demonstrate CObexServer::TransportInfo 
-			// API with USB transport.
-			// We get back an TObexUsbTransportInfo because we asked for KObexUsbProtocol.
-			const TObexUsbTransportInfo* transportInfo = static_cast<const TObexUsbTransportInfo*>(iServer->TransportInfo());
-			iParent->Console()->Printf(_L("Transport info: \r\n"));
-			iParent->Console()->Printf(_L("\ttransport name: %S\r\n"), &transportInfo->iTransportName);
-			iParent->Console()->Printf(_L("\tversion: %d\r\n"), transportInfo->iVersion);
-			iParent->Console()->Printf(_L("\treceive MTU: %d\r\n"), transportInfo->iReceiveMtu);
-			iParent->Console()->Printf(_L("\ttransmitMTU: %d\r\n"), transportInfo->iTransmitMtu);
-			iParent->Console()->Printf(_L("\tinterface string desc: %S\r\n"), &transportInfo->iInterfaceStringDescriptor);
-*/
-			break;
-			}
-		
-		case (EWin32Usb):
-			{
-			TObexUsbProtocolInfo aInfo;
-			aInfo.iTransport = _L("Win32Usb");
-	        aInfo.iInterfaceStringDescriptor = _L("TOBEX Server Interface");
-	        
-			iServer = CObexServer::NewL (aInfo);
-			User::LeaveIfError(iServer->Start (this));
-			
-/*			// Uncomment this code to demonstrate CObexServer::TransportInfo 
-			// API with Win32USB transport.
-			// We get back an TObexUsbTransportInfo because we asked for KObexUsbProtocol.
-			const TObexUsbTransportInfo* transportInfo = static_cast<const TObexUsbTransportInfo*>(iServer->TransportInfo());
-			iParent->Console()->Printf(_L("Transport info: \r\n"));
-			iParent->Console()->Printf(_L("\ttransport name: %S\r\n"), &transportInfo->iTransportName);
-			iParent->Console()->Printf(_L("\tversion: %d\r\n"), transportInfo->iVersion);
-			iParent->Console()->Printf(_L("\treceive MTU: %d\r\n"), transportInfo->iReceiveMtu);
-			iParent->Console()->Printf(_L("\ttransmitMTU: %d\r\n"), transportInfo->iTransmitMtu);
-			iParent->Console()->Printf(_L("\tinterface string desc: %S\r\n"), &transportInfo->iInterfaceStringDescriptor);
-*/
-			break;
-			}
-		}
-	
-#ifdef ASYNC_INDICATION
-    iServerAsyncAO = CServerAsyncAO::NewL(*iServer);
-#endif
-	}
-
-void CObexServerHandlerBase::InitBluetoothL()
-	{
-	TBTServiceSecurity serv;
-	serv.SetUid(KObexTestUid);
-	
-	// UPF - change security here for Bluetooth security testing
-	serv.SetAuthentication(EFalse);
-	serv.SetAuthorisation(EFalse);
-	serv.SetEncryption(EFalse);
-
-	// now set up Obex...
-	TObexBluetoothProtocolInfo info;
-	info.iTransport = KObexRfcommProtocol;
-	info.iAddr.SetPort(KRfcommPassiveAutoBind);
-	info.iAddr.SetSecurity(serv);
-
-	TObexProtocolPolicy policy;
-	policy.SetReceiveMtu(iParent->iRecvMTU);
-	policy.SetTransmitMtu(iParent->iTransmitMTU);
-
-	iServer  = CObexServer::NewL(info, policy);
-	iServer->SetReadActivityObserver(this);
-
-	User::LeaveIfError(iServer->Start (this));
-	// We get back an TObexBtTransportInfo because we asked for KObexRfcommProtocol.
-	const TObexBtTransportInfo* transportInfo = static_cast<const TObexBtTransportInfo*>(iServer->TransportInfo());
-	iParent->Console()->Printf(_L("Transport info: \r\n"));
-	iParent->Console()->Printf(_L("\ttransport name: %S\r\n"), &transportInfo->iTransportName);
-	iParent->Console()->Printf(_L("\tversion: %d\r\n"), transportInfo->iVersion);
-	iParent->Console()->Printf(_L("\treceive MTU: %d\r\n"), transportInfo->iReceiveMtu);
-	iParent->Console()->Printf(_L("\ttransmitMTU: %d\r\n"), transportInfo->iTransmitMtu);
-	iParent->Console()->Printf(_L("\tRFCOMM port: 0x%02x\r\n"), transportInfo->iAddr.Port());
-	
-	// SDP registration 
-	User::LeaveIfError(iSdp.Connect());
-	User::LeaveIfError(iSdpdb.Open(iSdp));
-
-	TSdpServRecordHandle handle;
-	iSdpdb.CreateServiceRecordL(TUUID(0x1105), handle);
-	iSdpdb.UpdateAttributeL(handle, 0x100, _L8("Obex push server"));
-	
-
-	TSdpServRecordHandle ftphandle;
-	iSdpdb.CreateServiceRecordL(TUUID(0x1106), ftphandle);
-	iSdpdb.UpdateAttributeL(ftphandle, 0x100, _L8("File transfer server"));
-			
-	// Protocol Descriptor List (same for both profiles)
-	iProtDescList = CSdpAttrValueDES::NewDESL(0);
-
-	iProtDescList
-	->StartListL()
-		->BuildDESL()
-		->StartListL()
-			->BuildUUIDL(TUUID(TUint16(0x0100))) // L2CAP
-		->EndListL()
-		->BuildDESL()
-		->StartListL()
-			->BuildUUIDL(TUUID(TUint16(0x0003))) // RFCOMM
-			->BuildUintL(TSdpIntBuf<TInt8>(transportInfo->iAddr.Port()))
-		->EndListL()
-		->BuildDESL()
-		->StartListL()
-			->BuildUUIDL(TUUID(TUint16(0x0008))) // OBEX
-		->EndListL()
-	->EndListL();
-
-	iSdpdb.UpdateAttributeL(handle, 4, *iProtDescList);
-	iSdpdb.UpdateAttributeL(ftphandle, 4, *iProtDescList); // put into both records
-	delete iProtDescList;
-	iProtDescList = NULL;
-
-	// Supported formats list (OPP only)
-	iProtDescList = CSdpAttrValueDES::NewDESL(0);
-
-	iProtDescList->StartListL()
-		->BuildUintL(TSdpIntBuf<TUint8>(0xFF)) // Accept any type of object
-	->EndListL();
-
-	iSdpdb.UpdateAttributeL(handle, 0x0303, *iProtDescList);
-	
-	delete iProtDescList;
-	iProtDescList = NULL;
-	
-	// Add OPP to the supported profiles list
-	iProtDescList = CSdpAttrValueDES::NewDESL(0);
-
-	iProtDescList->StartListL()
-		->BuildDESL()
-		->StartListL()
-			->BuildUUIDL(TUUID(0x1105)) // OPP Profile
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // Profile version
-		->EndListL()
-	->EndListL();
-
-	iSdpdb.UpdateAttributeL(handle, 9, *iProtDescList); // profile list
-
-	delete iProtDescList;
-	iProtDescList = NULL;
-
-	// Add FTP to the supported profiles list
-	iProtDescList = CSdpAttrValueDES::NewDESL(0);
-
-	iProtDescList->StartListL()
-		->BuildDESL()
-		->StartListL()
-			->BuildUUIDL(TUUID(0x1106)) // FTP Profile
-			->BuildUintL(TSdpIntBuf<TUint16>(0x0100)) // Profile version
-		->EndListL()
-	->EndListL();
-
-	iSdpdb.UpdateAttributeL(ftphandle, 9, *iProtDescList); // profile list
-
-	delete iProtDescList;
-	iProtDescList = NULL;
-	
-	// Set host name
-	RSocketServ ss;
-	ss.Connect();
-
-	RHostResolver hr;
-	User::LeaveIfError(hr.Open(ss,KBTAddrFamily,KBTLinkManager));
-	User::LeaveIfError(hr.SetHostName(_L("Symbian Push Server")));
-	ss.Close();
-
-	// Enable enquiry and page scan
-	User::LeaveIfError(RProperty::Set(KPropertyUidBluetoothCategory, KPropertyKeyBluetoothSetScanningStatus, EInquiryAndPageScan));
-	}
-
-CObexServerHandlerBase::~CObexServerHandlerBase ()
-    {
-    Stop();
-
-	if (iTransportLayer == EBluetooth)
-		{
-		// security now cleared with socket closure
-		iSdpdb.Close();
-		iSdp.Close();
-		}
-#ifdef PACKET_ACCESS_EXTENSION
-	delete iPacketAccessUi;
-#endif // PACKET_ACCESS_EXTENSION
-
-#ifdef ASYNC_INDICATION		
-	delete iServerAsyncAO;
-#endif
-    delete iServer;
-	delete iProtDescList;
-    }
-
-void CObexServerHandlerBase::RemoteAddress()
-	{
-	TSockAddr aAddr;
-	iServer->RemoteAddr( aAddr);
-	TBTDevAddr addr = static_cast <TBTSockAddr>(aAddr).BTAddr();
-	
-	TChar aChar;
-
-	iParent->Console()->Printf(_L("Remote Address = "));
-	for(TInt count = 0; count < addr.Des().Length(); count++) 
-		{
-		aChar = (addr.Des()[count] & 0xf0)>>4;
-		if (aChar <= 9)
-			aChar += 0x30;
-		else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-			aChar += 'A' - 0x0a;
-		iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-
-		aChar = (addr.Des()[count] & 0x0f);
-		if (aChar <= 9)
-			aChar += 0x30;
-		else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-			aChar += 'A' - 0x0a;
-		iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-		}
-    iParent->Console()->Printf(_L("\r\n"));
-	}
-
-
-void CObexServerHandlerBase::Start()
-    {
-    if (iServer)
-		{
-		iServer->Start(this);
-		}
-    }
-
-void CObexServerHandlerBase::Stop()
-    {
-	if (iServer)
-		{
-		iServer->Stop();
-		}
-    }
-
-void CObexServerHandlerBase::SetTargetChecking(CObexServer::TTargetChecking aValue)
-	{
-    iServer->SetTargetChecking(aValue);
-	}
-
-
-
-// MObexServerNotify interface functions
-
-void CObexServerHandlerBase::ErrorIndication (TInt aError)
-    {
-    iParent->Console()->Printf(_L("Obex Server Error: %d\r\n"), aError);
-    }
-
-void CObexServerHandlerBase::TransportUpIndication ()
-    {
-    iParent->Console()->Printf(_L("\r\nTransport layer now connected\r\n\r\n"));
-    }
-
-void CObexServerHandlerBase::TransportDownIndication ()
-    {
-    iParent->Console()->Printf(_L("\r\nTransport layer has gone down\r\n\r\n"));
-    
-    if (iObject)
-		{
-		if(!iObject->BytesReceived())
-			{
-			return;
-			}
-		
-		iParent->Console()->Printf(_L("\r\nWe have received part of an Obex object\r\n\r\n"));
-
-		iObject->Reset();//close file handle
-		}
-    }
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& /*aInfo*/)
-#else
-TInt CObexServerHandlerBase::ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& /*aInfo*/)
-#endif
-    {
-	iParent->Console()->Printf(_L("\r\nCObexServerHandler::ObexConnectIndication"));
-	iParent->Console()->Printf(_L("\r\nConnected to machine with OBEX version %d.%d\r\n"), 
-		     aRemoteInfo.VersionMajor (), aRemoteInfo.VersionMinor ());
-
-	if ( aRemoteInfo.iWho.Length() > 0 )
-		{
-		iParent->Console()->Printf(_L("EWho received from remote side ="));
-
-		for(TInt count = 0; count < aRemoteInfo.iWho.Length(); count++) 
-			{
-
-			TChar aChar;
-
-			aChar = (aRemoteInfo.iWho[count] & 0xf0)>>4;
-			if (aChar <= 9)
-				aChar += 0x30;
-			else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-				aChar += 'A' - 0x0a;
-			iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-
-			aChar = (aRemoteInfo.iWho[count] & 0x0f);
-			if (aChar <= 9)
-				aChar += 0x30;
-			else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-				aChar += 'A' - 0x0a;
-			iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-
-			}
-		iParent->Console()->Printf(_L("\r\n"));
-		}
-	else
-		iParent->Console()->Printf(_L("No Who Header received\r\n"));
-
-	if ( aRemoteInfo.iTargetHeader.Length() > 0 )
-		{
-		iParent->Console()->Printf(_L("ETarget received from remote side ="));
-		for(TInt count = 0; count < aRemoteInfo.iTargetHeader.Length(); count++) 
-			{
-			TChar aChar;
-
-			aChar = (aRemoteInfo.iTargetHeader[count] & 0xf0)>>4;
-			if (aChar <= 9)
-				aChar += 0x30;
-			else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-				aChar += 'A' - 0x0a;
-			iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-
-			aChar = (aRemoteInfo.iTargetHeader[count] & 0x0f);
-			if (aChar <= 9)
-				aChar += 0x30;
-			else if ((aChar >= 0x0a) && (aChar <= 0x0f))
-				aChar += 'A' - 0x0a;
-			iParent->Console()->Printf(_L("%C"),(TUint)aChar);
-			}
-		iParent->Console()->Printf(_L("\r\n"));
-		}
-	else
-		iParent->Console()->Printf(_L("No Target Header received\r\n"));
-
-#ifndef ASYNC_INDICATION
-	return KErrNone;
-#endif	
-    } 
-
-void CObexServerHandlerBase::ObexDisconnectIndication (const TDesC8& /*aInfo*/)
-    {
-    iParent->Console()->Printf(_L("\r\nObex Disconnected\r\n\r\n"));
-    }
-
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::PutRequestIndication ()
-#else
-CObexBufObject* CObexServerHandlerBase::PutRequestIndication ()
-#endif
-    {
-	iStartTime.HomeTime();
-	
-    iParent->Console()->Printf(_L("Receiving object...\r\n"));
-    iObject->Reset ();
-#ifdef ASYNC_INDICATION
-	iServerAsyncAO->RequestIndication(CObex::EOpPut, iAcceptPuts?iObject:NULL);
-#else
-	return iAcceptPuts?iObject:NULL;
-#endif
-    }
-
-TInt CObexServerHandlerBase::PutPacketIndication ()
-    {
-    // Only output % received if performance logging is disabled.
-	if(!iParent->iPerformanceLoggingEnabled)
-		{
-		TUint length = iObject->Length();
-		TUint received = iObject->BytesReceived();
-		TUint8 percent = 0;
-	    if (length > 0)
-			{
-			percent = TUint8((100 * received) / length);
-			iParent->Console()->Printf(_L("\r%d %%      "), percent);
-			}
-	    else
-			{
-			iParent->Console()->Printf(_L("\r%d Bytes      "), iObject->BytesReceived ());
-			}
-		}
-    return (KErrNone);
-    }
-    
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::PutCompleteIndication()
-#else
-TInt CObexServerHandlerBase::PutCompleteIndication()
-#endif
-    {
-	TTime finishTime;
-	finishTime.HomeTime();
-	TTimeIntervalMicroSeconds diff = finishTime.MicroSecondsFrom(iStartTime);	
-
-	iParent->Console()->Printf(_L("\nObject Received in %d"), diff.Int64());
-
-    TPtrC name=iObject->Name();
-	TBuf<100> type;
-	type.Copy(iObject->Type());
-	iParent->Console()->Printf(_L("\r\nSuccessfully received '%S'\r\nType[%d]: '%S'\r\n"), &name, type.Length(), &type);
-	
-	TInt err = KErrNone;
-	if (iParent->DisplayHeaders())
-		{
-		// No need to put header on the cleanup stack, as there are no leaving functions during its lifetime
-		CObexHeader* header = NULL;
-		TRAP(err, header = CObexHeader::NewL());
-		if (err)
-			{
-			iParent->iConsole->Printf(_L("Error allocating memory to display\r\n"));
-			}
-
-		iObject->HeaderSet().SetMask(NULL);
-		iObject->HeaderSet().First();
-
-		while (err == KErrNone)
-			{
-			err = iObject->HeaderSet().This(header);
-
-			switch (header->Type())
-				{
-				case (0x00): //Unicode
-					{
-					HBufC16* buf = NULL;
-					TRAPD(headerErr, buf = HBufC16::NewL((header->AsUnicode()).Size()));
-					if (headerErr)
-						{
-						iParent->iConsole->Printf(_L("Unicode Header (0x%x)- Error allocating memory to display\r\n"), header->HI());
-						}
-					else
-						{
-						TPtr16 type(buf->Des());
-						type.Copy(header->AsUnicode());
-
-						iParent->iConsole->Printf(_L("Unicode Header (0x%x) =  : \"%S\"\r\n"), header->HI(), &type);
-						delete buf;
-						}
-					break;
-					}
-				case (0x01): // ByteSeq
-					{
-					HBufC16* buf = NULL;
-					TRAPD(headerErr, buf = HBufC16::NewL((header->AsByteSeq()).Size()));
-					if (headerErr)
-						{
-						iParent->iConsole->Printf(_L("ByteSeq Header (0x%x)- Error allocating memory to display\r\n"), header->HI());
-						}
-					else
-						{
-						TPtr16 type(buf->Des());
-						type.Copy(header->AsByteSeq());
-
-						iParent->iConsole->Printf(_L("ByteSeq Header (0x%x) =  : \"%S\"\r\n"), header->HI(), &type);
-						delete buf;
-						}
-					break;
-					}
-				case (0x02): // Byte
-					{
-					iParent->iConsole->Printf(_L("Byte Header (0x%x) =  : 0x%x\r\n"), header->HI(), header->AsByte());
-					break;
-					}
-				case (0x03): //FourByte
-					{
-					iParent->iConsole->Printf(_L("FourByte Header (0x%x) =  : 0x%x\r\n"), header->HI(), header->AsFourByte());
-					break;
-					}
-				default : {break;}
-				}
-			
-			err = iObject->HeaderSet().Next();
-			}
-		
-		delete header;
-		}	
-
-	TDateTime dt = iObject->Time().DateTime();
-	iParent->Console()->Printf(_L("\r\nTimestamp: %d/%d/%d, %d:%d:%d\r\n\r\n"),
-				   dt.Day()+1, dt.Month()+1, dt.Year(), dt.Hour(), dt.Minute(), dt.Second());
-
-	// Reset err to no error;
-	err = KErrNone;
-
-	if ((iObject->Name() == KRef1Name) ||
-	    (iObject->Name() == KRef2Name) ||
-	    (iObject->Name() == KRef3Name) ||
-	    (iObject->Name() == KRef4Name) ||
-	    (iObject->Name() == KRef5Name) ||
-	    (iObject->Name() == KRef6Name) ||
-	    (iObject->Name() == KRef7Name) ||
-	    (iObject->Name() == KRef8Name) ||
-	    (iObject->Name() == KRef9Name))
-		{
-		iParent->Console()->Printf(_L("\r\nReference Object Received"));
-		TInt objComp = 0;
-		TRAP(err, objComp = iParent->iRefHandler->CompareObjectToReferenceL(*iObject, *iBuf, iParent->iTransport));
-		if ((objComp != 0) || (err != KErrNone)) // Make sure the objects match
-			{
-			User::Panic(_L("TOBEX - OBJCOMP"), err);
-			}
-		iParent->Console()->Printf(_L("\r\nReference Object Comparison OK\r\n\r\n"));
-		}
-	else
-		{
-		iParent->Console()->Printf(_L("Size of received object = %d\n"),iBuf->Size());
-
-	    // Only output packet contents info if performance logging is disabled.
-		if(!iParent->iPerformanceLoggingEnabled)
-			{
-		    TBuf8<1024> tempBuffer;
-			iBuf->Read(0, tempBuffer, tempBuffer.MaxSize() < iBuf->Size() ? tempBuffer.MaxSize() : iBuf->Size());
-
-			// Printf fails with Descriptor beigger than X hundred bytes so write byte at a time
-			for(TInt count = 0; count < tempBuffer.Size(); count++) 
-				{
-				iParent->Console()->Printf(_L("%C"),tempBuffer[count]);
-				}
-			}
-
-		if (iObject->Name() != KNullDesC )
-			{
-			TFileName filename;
-			filename = iParent->iInboxRoot;
-			
-			TInt bufSpaceLeft = filename.MaxLength() - filename.Length();
-			TInt objNameLen = iObject->Name().Length();
-			TInt numToCopy = objNameLen;
-			if (bufSpaceLeft < objNameLen)
-				{
-				numToCopy = bufSpaceLeft;
-				iParent->Console()->Printf(_L("Truncated resulting local filename\n"));
-				}
-			filename.Append(iObject->Name().Ptr(), numToCopy);
-			
-			err = iObject->WriteToFile(filename);
-
-			if (err == KErrAlreadyExists)
-				{
-				iParent->Console()->Printf(_L("\r\nWrite failed, File Already Exists\n"));
-				}
-			else if (err != KErrNone)
-				{
-				iParent->Console()->Printf(_L("\r\nWrite failed with error %d\n"), err);
-				}
-			}
-		else
-			{
-			err = KErrNone;
-			iParent->Console()->Printf(_L("\r\nReceived object with empty Name Header.\nNot writing to a file\n"));
-			}
-		}
-
-	TObexHeaderMask headers = iObject->ValidHeaders();
-	iParent->Console()->Printf(_L("\n"));
-	if (headers & KObexHdrBody)
-		iParent->Console()->Printf(_L("Body header received\n"));
-	if (headers & KObexHdrEndOfBody)
-		iParent->Console()->Printf(_L("EndOfBody header received\n"));
-
-    iObject->Reset ();
-#ifdef ASYNC_INDICATION    
-	if(err)
-		{
-		iServerAsyncAO->CompletionIndication(CObex::EOpPut, ERespNotAcceptable);
-		}
-	else
-		{
-		iServerAsyncAO->CompletionIndication(CObex::EOpPut, ERespSuccess);
-		}
-		
-#else
-	return err;
-#endif
-    }
-
-void CObexServerHandlerBase::HandleGetReferenceObjL(CObexBaseObject* aRequiredObject)
-	{
-	CObexBufObject& obj = *static_cast<CObexBufObject*>(aRequiredObject);
-	CBufFlat* dummyBufPtr = CBufFlat::NewL(0);
-	CleanupStack::PushL(dummyBufPtr);
-
-	// See if what we got in the Get request is the same as the reference object...
-	TInt objComp = iParent->iRefHandler->CompareObjectToReferenceL(obj, *dummyBufPtr, iParent->iTransport);
-	CleanupStack::PopAndDestroy(dummyBufPtr);
-	ASSERT(objComp == CReferenceHandler::EDifferentBuf);
-
-	// Everythings OK so set up the reference object to be returned
-	iParent->Console()->Printf(_L("Obex Get Reference Object Request\r\n"));
-
-
-	if (aRequiredObject->Name() == KRef1Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 1, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef2Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 2, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef3Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 3, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef4Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 4, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef5Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 5, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef6Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 6, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef7Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 7, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef8Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 8, iParent->iTransport);
-	else if (aRequiredObject->Name() == KRef9Name)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 9, iParent->iTransport);
-	else // capture error condition (use reference 1)
-		iParent->iRefHandler->CreateReferenceL(*iObject, *iBuf, 1, iParent->iTransport);
-
-	}
-
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::GetRequestIndication (CObexBaseObject* aRequiredObject)
-#else
-CObexBufObject* CObexServerHandlerBase::GetRequestIndication (CObexBaseObject* aRequiredObject)
-#endif
-    {
-	//check if app params header sent across
-	if ( aRequiredObject->ValidHeaders() & KObexHdrAppParam )
-		{
-		TBuf<30> localBuf;
-		localBuf.Copy(aRequiredObject->AppParam());
-		
-		iParent->iConsole->Printf(_L(" App Param received =  : %S\r\n"), &localBuf);
-		}
-	else 
-		{
-		iParent->iConsole->Printf(_L(" No App Param Headers received\r\n"));
-		}
-
-	//check if any HTTP headers were sent across
-	if ( aRequiredObject->ValidHeaders() & KObexHdrHttp)
-		{
-		//OK so lets get them out
-		const RPointerArray<HBufC8>* localHttpArray = aRequiredObject->Http(); 
-		//how many?
-		TInt count = localHttpArray->Count();
-		HBufC8* localArray;
-		TBuf8<30> localBuf;
-		TBuf<40> buf;
-		TInt size = 30;
-		for ( TInt x = 0; x < count; x++ )
-			{
-			localArray = (*localHttpArray)[x];
-			size = Max(localArray->Size(), 30);
-			localBuf.Copy(localArray->Ptr(), size);
-			buf.Copy(localBuf);
-			iParent->iConsole->Printf(_L(" HTTP Header Received : %S\r\n"), &buf);
-			}
-		}
-	else 
-		{
-		iParent->iConsole->Printf(_L(" No HTTP Headers received\r\n"));
-		}
-	
-	if ((aRequiredObject->Name() == KRef1Name) ||
-	    (aRequiredObject->Name() == KRef2Name) ||
-	    (aRequiredObject->Name() == KRef3Name) ||
-	    (aRequiredObject->Name() == KRef4Name) ||
-	    (aRequiredObject->Name() == KRef5Name) ||
-	    (aRequiredObject->Name() == KRef6Name) ||
-	    (aRequiredObject->Name() == KRef7Name) ||
-	    (aRequiredObject->Name() == KRef8Name) ||
-	    (aRequiredObject->Name() == KRef9Name))
-		{
-#ifdef _DEBUG
-		TRAPD(err, HandleGetReferenceObjL(aRequiredObject));
-		ASSERT(err==0);
-#else
-		TRAP_IGNORE(HandleGetReferenceObjL(aRequiredObject));
-#endif
-		}
-	else
-		{
-		TRAPD(err,SetUpGetObjectL(aRequiredObject));
-		if (err != KErrNone)
-			{
-			iParent->Console()->Printf(_L("\nSetUpGetObjectL() returned %d.\n"), err);
-#ifdef ASYNC_INDICATION
-			iServerAsyncAO->RequestIndication(CObex::EOpGet, NULL);
-#else
-			iServer->RequestIndicationCallbackWithError(err); //added to test PDEF097129
-			return (NULL);
-#endif
-			}
-		}
-#ifdef ASYNC_INDICATION
-	iServerAsyncAO->RequestIndication(CObex::EOpGet, iObject);
-#else
-	return (iObject);
-#endif
-	}
-
-TInt CObexServerHandlerBase::GetPacketIndication ()
-    {
-    if (iObject->Length () > 0)
-    	{
-    	TInt percentComplete = 100 * iObject->BytesSent () / iObject->Length ();
-    	iParent->Console()->Printf(_L("\r%d %%      "), percentComplete);
-    	}
-    else
-    	{
-    	iParent->Console()->Printf(_L("\r%d Bytes      "), iObject->BytesSent ());
-    	}
-    
-    return (KErrNone);
-    }
-
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::GetCompleteIndication ()
-#else
-TInt CObexServerHandlerBase::GetCompleteIndication ()
-#endif
-    {
-    iParent->Console()->Printf(_L("Obex Get Complete\r\n"));
-    iObject->Reset ();
-#ifdef ASYNC_INDICATION   
-	iServerAsyncAO->CompletionIndication(CObex::EOpGet, ERespSuccess);
-#else
-	return KErrNone;
-#endif
-    }
-
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::SetPathIndication (const CObex::TSetPathInfo& aPathInfo, const TDesC8& /*aInfo*/)
-#else
-TInt CObexServerHandlerBase::SetPathIndication (const CObex::TSetPathInfo& aPathInfo, const TDesC8& /*aInfo*/)
-#endif
-    {
-    iParent->Console()->Printf(_L("Obex SetPath request:\r\n"));
-    iParent->Console()->Printf(_L("   --- Flags = '%d' - Constants = '%d' - "), aPathInfo.iFlags, aPathInfo.iConstants);
-    if (aPathInfo.iNamePresent)
-		iParent->Console()->Printf(_L("Name = %S\r\n"), &aPathInfo.iName);
-	else
-		iParent->Console()->Printf(_L("> No Name Present <\r\n"));
-
-    iParent->Console()->Printf(_L("\nReturning success...!\n"));
-#ifdef ASYNC_INDICATION
-	iServerAsyncAO->CompletionIndication(CObex::EOpSetPath, ERespSuccess);
-#else
-	return (KErrNone);
-#endif
-    }
-
-void CObexServerHandlerBase::AbortIndication ()
-    {
-    iParent->Console()->Printf(_L("Obex Operation aborted\r\n"));
-    if(iObject)
-		{
-		if(!iObject->BytesReceived())
-		    return;
-		iParent->Console()->Printf(_L("\r\nWe have received part of an Obex object\r\n\r\n"));
-
-		iObject->Reset();//closes file handle
-		}
-    }
-
-void CObexServerHandlerBase::MoraoReadActivity()
-	{
-    iParent->Console()->Printf(_L("Obex Server: 'Read Activity' signalled\r\n"));
-	}
-	
-void CObexServerHandlerBase::SetUpGetObjectL(CObexBaseObject *aRequestedObject)
-	{
-	TFileName name;
-	name = iParent->iInboxRoot;
-	name.Append(aRequestedObject->Name ());
-	if(name.Length())
-		{
-		iParent->Console()->Printf(_L("Obex Get Request for name '%s'\r\n"), name.PtrZ ());
-		}
-	else if (aRequestedObject->Type().Length())
-		{
-		name = iParent->iInboxRoot;
-		TBuf<32> temp;
-		temp.Copy(aRequestedObject->Type());
-		name.Append(temp);
-		iParent->Console()->Printf(_L("Obex Get Request for type '%s'\r\n"), name.PtrZ ());
-		TInt pos;
-		while((pos=name.Locate('/')) >= 0)
-			name[pos] = '_';
-		pos=name.Length()-1;
-		if(pos>=0 && name[pos] == 0)
-			name.SetLength(pos); // Work around last character possibly being NULL
-		}
-	else
-		{
-		iParent->Console()->Printf(_L("Obex Get Request unknown details\r\n"));
-		User::Leave(KErrNotSupported);
-		}
-	iObject->Reset();
-
-	RFs fs;
-	RFile f;
-	if ((fs.Connect () != KErrNone) || 
-		(f.Open (fs, name, EFileShareReadersOnly | EFileRead) != KErrNone))
-		{
-		iParent->Console()->Printf(_L("\r\nError reading '%S'."), &name);
-		User::Leave(KErrNotFound);
-		}
-
-	TInt size = 0;
-	User::LeaveIfError(f.Size (size));
-	iBuf->ResizeL(size);
-	TPtr8 data (iBuf->Ptr(0));
-	f.Read (data);
-	if (iBuf->Size() < size)
-		User::Leave(KErrGeneral);
-	iObject->SetNameL(name);
-	iObject->SetLengthL(size);
-	TTime time;
-	if (f.Modified(time) == KErrNone)
-		iObject->SetTimeL(time);
-	}
-
-void CObexServerHandlerBase::EnableAuthentication()
-	{
-	TRAPD(err, iServer->SetChallengeL(iChallengePassword));
-	if (err == KErrNone)
-		{
-		iIsAuthenticationEnabled = ETrue;
-		}
-	else
-		{
-		iParent->iConsole->Printf(_L("Failed to set authentication password\r\n"));
-		}
-	}
-
-void CObexServerHandlerBase::DisableAuthentication()
-	{
-	iServer->ResetChallenge();
-	iIsAuthenticationEnabled = EFalse;
-	}
-
-void CObexServerHandlerBase::EnablePassword()
-	{
-	iServer->SetCallBack(*this);
-	}
-
-void CObexServerHandlerBase::ChangeChallengePassword(TDesC* aPassword)
-	{
-	if (aPassword)
-		iChallengePassword = *aPassword;
-	else
-		iParent->SetPassword(iChallengePassword);
-
-	if (iIsAuthenticationEnabled)
-		{
-		DisableAuthentication();
-		EnableAuthentication();
-		}
-	}
-
-void CObexServerHandlerBase::ChangeResponsePassword()
-	{
-	iParent->Cancel();
-	iParent->SetPassword(iResponsePassword);
-	iParent->RequestCharacter(); // re-request, to re-display menu
-	}
-
-void CObexServerHandlerBase::GetUserPasswordL(const TDesC& aUserID)
-	{
-	iParent->Console()->Printf(_L("\r\nServer has been challenged by %S"), &aUserID);
-	ChangeResponsePassword(); //get the password from user
-	iServer->UserPasswordL(iResponsePassword);
-	}
-
-void CObexServerHandlerBase::SetLocalWho()
-	{
-	iServer->SetLocalWho(KRefTarget);
-	}
-
-#ifdef ASYNC_INDICATION
-void CObexServerHandlerBase::CancelIndicationCallback()
-	{
-	iServerAsyncAO->Cancel();
-	}
-#endif
-
-#ifdef PACKET_ACCESS_EXTENSION	
-void CObexServerHandlerBase::PacketAccessUiL(TBool aEnable)
-	{
-	if (aEnable)
-		{
-		iPacketAccessUi = CObexServerPacketAccessUi::NewL(*this, *iServer);
-		}
-	else
-		{
-		delete iPacketAccessUi;
-		iPacketAccessUi = NULL;
-		}
-	}
-#endif // PACKET_ACCESS_EXTENSION