williamr@2: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: #ifndef __OBEXCLIENT_H williamr@2: #define __OBEXCLIENT_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CObexPacket; williamr@2: class MObexFinalPacketObserver; williamr@2: class CObexPacketSignaller; williamr@2: class CObexPacketTimer; williamr@2: class CObexErrorEngine; williamr@2: williamr@2: /** williamr@2: Client side functionality. Connection based. williamr@2: Supports ... williamr@2: - Opening IrDA TTP sockets for the OBEX session. williamr@2: - Opening an OBEX session over a connected socket williamr@2: - Standard OBEX (spec. version 1.2) operations. williamr@2: williamr@2: This class is not designed for user derivation. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: NONSHARABLE_CLASS(CObexClient) : public CObex williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CObexClient(); williamr@2: IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr); williamr@2: IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy); williamr@2: IMPORT_C static CObexClient* NewL(TObexTransportInfo& aObexTransportInfo); williamr@2: IMPORT_C void Connect(TRequestStatus& aStatus); williamr@2: IMPORT_C void Connect(CObexBaseObject& aObject, TRequestStatus& aStatus); williamr@4: IMPORT_C void ConnectL(CObexBaseObject& aObject, const TDesC& aPassword, TRequestStatus& aStatus); williamr@2: IMPORT_C void ConnectL(const TDesC& aPassword, TRequestStatus& aStatus); williamr@2: IMPORT_C void Disconnect(TRequestStatus& aStatus); williamr@2: IMPORT_C void Put(CObexBaseObject& aObject, TRequestStatus& aStatus); williamr@2: IMPORT_C void Get(CObexBaseObject& aObject, TRequestStatus& aStatus); williamr@2: IMPORT_C void SetPath(TSetPathInfo& aPathInfo, TRequestStatus& aStatus); williamr@2: IMPORT_C void Abort(); williamr@2: IMPORT_C void UserPasswordL( const TDesC& aPassword); williamr@2: IMPORT_C const CObexHeaderSet& GetPutFinalResponseHeaders(); williamr@2: IMPORT_C void SetFinalPacketObserver(MObexFinalPacketObserver* aObserver); williamr@2: IMPORT_C TObexResponse LastServerResponseCode() const; williamr@2: IMPORT_C void SetCommandTimeOut(TTimeIntervalMicroSeconds32 aTimeOut); williamr@2: IMPORT_C TAny* ExtensionInterface(TUid aUid); williamr@2: williamr@2: public: // Called from CObexNotifyExtendClient williamr@4: void SignalPacketProcessEvent(TInt aEvent); williamr@2: void TimeOutCompletion(); williamr@2: williamr@2: private: williamr@2: CObexClient(); williamr@2: void ConstructL(TObexTransportInfo& aObexTransportInfo); williamr@2: TBool AlreadyActive(TRequestStatus& aStatus); williamr@2: void ClientCommandL(TOperation aOp, TAny* aParam, TRequestStatus& aStatus); williamr@2: // Implementation of CObex Events williamr@2: virtual void OnPacketReceive(CObexPacket& aPacket); williamr@2: virtual void OnError(TInt aError); williamr@2: virtual void OnTransportUp(); williamr@2: virtual void OnTransportDown(); williamr@2: void SetRequest(TRequestStatus& aStatus, TOperation aOperation); williamr@2: void CompleteRequest(const TInt aCompletion); williamr@2: TInt PrepareConnectPacket(CObexPacket& aPacket); // Should be members of TConnectInfo williamr@2: TInt ParseConnectPacket(CObexPacket& aPacket); williamr@2: void ResetConnectionID(); williamr@2: void SetConnectionID(TUint32 aConnectionID); williamr@2: void EmptyHeaderSet(); williamr@2: void SendRequestPacket(); williamr@2: void SendRequestPacket(TObexOpcode aObexOpcode); williamr@2: williamr@2: private: williamr@2: TRequestStatus* iPendingRequest; williamr@2: CObexBaseObject* iCurrentObject; williamr@2: TUint32 iConnectionID; williamr@2: TBool iConnectionIdSet; williamr@2: CObexHeaderSet* iHeaderSet; williamr@2: CObexHeader* iHeader; williamr@2: CObexPacketSignaller* iPacketProcessSignaller; williamr@2: TObexResponse iLastReceivedResponseOpcode; williamr@2: CObexErrorEngine* iErrorEngine; williamr@2: TBool iIsLastErrorSet; williamr@2: TTimeIntervalMicroSeconds32 iCmdTimeOutDuration; williamr@2: CObexPacketTimer* iPacketTimer; williamr@2: }; williamr@2: williamr@2: #endif // __OBEXCLIENT_H