diff -r 000000000000 -r 72b543305e3a messagingappbase/obexmtms/btmtm/btserver/source/btsmtm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/obexmtms/btmtm/btserver/source/btsmtm.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,129 @@ +// 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: +// $Workfile: btsmtm.cpp $ +// $Author: Stevep $ +// $Revision: 11 $ +// $Date: 25/03/02 8:49 $ +// +// + +//class include +#include "btsmtm.h" + +//system includes +#include +#include "btmtmcmds.h" //EBtMtmCmdSend + +//user includes +#include +#include "btsendop.h" +#include + +EXPORT_C CBtSrvMtm* CBtSrvMtm::NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aEntry) +/** + * NewL factory function. Calls ReleaseLibrary() if construction fails. + * + * @param aRegisteredMtmDll Registration data for MTM DLL. + * @param aEntry Context on which to operate. + * @return Pointer to a newly constructed CBtSrvMtm. + * @leave KErrXXX System-wide error codes + */ + { + CBtSrvMtm* mysvrmtm = new CBtSrvMtm(aRegisteredMtmDll, aEntry); + if (mysvrmtm==NULL) + { + aRegisteredMtmDll.ReleaseLibrary(); + User::Leave(KErrNoMemory); + } + CleanupStack::PushL(mysvrmtm); + mysvrmtm->ConstructL(); + CleanupStack::Pop(); + return mysvrmtm; + } + +CBtSrvMtm::CBtSrvMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aEntry): + CObexSrvMtm(aRegisteredMtmDll, aEntry) +/** + * Constructor. Calls CObexSrvMtm's constructor in initialisation list. + * @param aRegisteredMtmDll Registration data for MTM DLL. + * @param aEntry Context on which to operate. + */ + { + __DECLARE_NAME(_S("CBtSrvMtm")); + } + + +EXPORT_C void CBtSrvMtm::StartCommandL (CMsvEntrySelection& aSelection, + TInt aCommand, + const TDesC8& aParameter, + TRequestStatus& aStatus) +/** + * Instantiates and initiates a CBtServerSemdOperation class to begin sending the specified OBEX object + * via Bluetooth. Called in response to InvokeAsyncFunctionL() in the client MTM, and passes through + * all the arguments passed in to that function. Only supports aCommand==CBtClientMtm::EBtcCmdSend + * + * @param aSelection Entry to operate on. + * @param aCommand Command to start. Only CBtClientMtm::EBtcCmdSend is supported. + * @param aParameter Package buffer containing timeout, port and password info needed for the send operation. + * @param aStatus Used to notify observer of completion. + * @leave KErrNotSupported if aCommand!=CBtClientMtm::EBtcCmdSend + * @leave KErrXXX System-wide error codes + */ + { + switch (aCommand) + { + //The only supported command is EBtcCmdSend; switch statement used for potential future extension + case EBtMtmCmdSend: + { + TPckgBuf sendParamsBuf; + sendParamsBuf.Copy(aParameter); + iTimeouts = sendParamsBuf().iTimeouts; + + // we're going to find out the port number ourselves in the send operation + TPtrC connectPassword(sendParamsBuf().iConnectPassword); + + //Zeroth selection is the TMsvId of the entry to send. + iEntry = iServerEntry->NewEntryL(aSelection[0]); + + //Construct a header + CBtHeader* header = CBtHeader::NewL(); + CleanupStack::PushL(header); + + //Get the entry's store + CMsvStore* store = iEntry->ReadStoreL(); + CleanupStack::PushL(store); + + //read the header from the store, and destroy the store + header->RestoreL(*store); + CleanupStack::PopAndDestroy(); //store + + aStatus = KRequestPending; + //remember the request status for the observer + iReportStatus = &aStatus; + + iStatus = KRequestPending; + //Now make the send operation, which will start automatically. iStatus is passed in to + //report completion. + iSendOperation = CBtServerSendOperation::NewL(*iEntry, header->BtProtocolInfo(), + iTimeouts.iConnectTimeout, iTimeouts.iPutTimeout, &connectPassword, iStatus); + SetActive(); + + CleanupStack::PopAndDestroy(); //header + break; + } + default: + User::Leave(KErrNotSupported); + } + + }