diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/obexclient.h --- a/epoc32/include/obexclient.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/obexclient.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,112 @@ -obexclient.h +// 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + + +/** + @file + @publishedAll + @released +*/ + +#ifndef __OBEXCLIENT_H +#define __OBEXCLIENT_H + +#include +#include +#include + +class CObexPacket; +class MObexFinalPacketObserver; +class CObexPacketSignaller; +class CObexPacketTimer; +class CObexErrorEngine; + +/** +Client side functionality. Connection based. +Supports ... +- Opening IrDA TTP sockets for the OBEX session. +- Opening an OBEX session over a connected socket +- Standard OBEX (spec. version 1.2) operations. + +This class is not designed for user derivation. + +@publishedAll +@released +*/ +NONSHARABLE_CLASS(CObexClient) : public CObex + { +public: + IMPORT_C ~CObexClient(); + IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr); + IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy); + IMPORT_C static CObexClient* NewL(TObexTransportInfo& aObexTransportInfo); + IMPORT_C void Connect(TRequestStatus& aStatus); + IMPORT_C void Connect(CObexBaseObject& aObject, TRequestStatus& aStatus); + IMPORT_C void ConnectL(CObexBaseObject& aObject, const TDesC& aPassword, + TRequestStatus& aStatus); + IMPORT_C void ConnectL(const TDesC& aPassword, TRequestStatus& aStatus); + IMPORT_C void Disconnect(TRequestStatus& aStatus); + IMPORT_C void Put(CObexBaseObject& aObject, TRequestStatus& aStatus); + IMPORT_C void Get(CObexBaseObject& aObject, TRequestStatus& aStatus); + IMPORT_C void SetPath(TSetPathInfo& aPathInfo, TRequestStatus& aStatus); + IMPORT_C void Abort(); + IMPORT_C void UserPasswordL( const TDesC& aPassword); + IMPORT_C const CObexHeaderSet& GetPutFinalResponseHeaders(); + IMPORT_C void SetFinalPacketObserver(MObexFinalPacketObserver* aObserver); + IMPORT_C TObexResponse LastServerResponseCode() const; + IMPORT_C void SetCommandTimeOut(TTimeIntervalMicroSeconds32 aTimeOut); + IMPORT_C TAny* ExtensionInterface(TUid aUid); + +public: // Called from CObexNotifyExtendClient + void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent); + void TimeOutCompletion(); + +private: + CObexClient(); + void ConstructL(TObexTransportInfo& aObexTransportInfo); + TBool AlreadyActive(TRequestStatus& aStatus); + void ClientCommandL(TOperation aOp, TAny* aParam, TRequestStatus& aStatus); + // Implementation of CObex Events + virtual void OnPacketReceive(CObexPacket& aPacket); + virtual void OnError(TInt aError); + virtual void OnTransportUp(); + virtual void OnTransportDown(); + void SetRequest(TRequestStatus& aStatus, TOperation aOperation); + void CompleteRequest(const TInt aCompletion); + TInt PrepareConnectPacket(CObexPacket& aPacket); // Should be members of TConnectInfo + TInt ParseConnectPacket(CObexPacket& aPacket); + void ResetConnectionID(); + void SetConnectionID(TUint32 aConnectionID); + void EmptyHeaderSet(); + void SendRequestPacket(); + void SendRequestPacket(TObexOpcode aObexOpcode); + +private: + TRequestStatus* iPendingRequest; + CObexBaseObject* iCurrentObject; + TUint32 iConnectionID; + TBool iConnectionIdSet; + CObexHeaderSet* iHeaderSet; + CObexHeader* iHeader; + CObexPacketSignaller* iPacketProcessSignaller; + TObexResponse iLastReceivedResponseOpcode; + CObexErrorEngine* iErrorEngine; + TBool iIsLastErrorSet; + TTimeIntervalMicroSeconds32 iCmdTimeOutDuration; + CObexPacketTimer* iPacketTimer; + }; + +#endif // __OBEXCLIENT_H