1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // 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
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
24 #ifndef __OBEXCLIENT_H
25 #define __OBEXCLIENT_H
27 #include <obextypes.h>
28 #include <obex/internal/obextransportconstants.h>
32 class MObexFinalPacketObserver;
33 class CObexPacketSignaller;
34 class CObexPacketTimer;
35 class CObexErrorEngine;
38 Client side functionality. Connection based.
40 - Opening IrDA TTP sockets for the OBEX session.
41 - Opening an OBEX session over a connected socket
42 - Standard OBEX (spec. version 1.2) operations.
44 This class is not designed for user derivation.
49 NONSHARABLE_CLASS(CObexClient) : public CObex
52 IMPORT_C ~CObexClient();
53 IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr);
54 IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy);
55 IMPORT_C static CObexClient* NewL(TObexTransportInfo& aObexTransportInfo);
56 IMPORT_C void Connect(TRequestStatus& aStatus);
57 IMPORT_C void Connect(CObexBaseObject& aObject, TRequestStatus& aStatus);
58 IMPORT_C void ConnectL(CObexBaseObject& aObject, const TDesC& aPassword,
59 TRequestStatus& aStatus);
60 IMPORT_C void ConnectL(const TDesC& aPassword, TRequestStatus& aStatus);
61 IMPORT_C void Disconnect(TRequestStatus& aStatus);
62 IMPORT_C void Put(CObexBaseObject& aObject, TRequestStatus& aStatus);
63 IMPORT_C void Get(CObexBaseObject& aObject, TRequestStatus& aStatus);
64 IMPORT_C void SetPath(TSetPathInfo& aPathInfo, TRequestStatus& aStatus);
65 IMPORT_C void Abort();
66 IMPORT_C void UserPasswordL( const TDesC& aPassword);
67 IMPORT_C const CObexHeaderSet& GetPutFinalResponseHeaders();
68 IMPORT_C void SetFinalPacketObserver(MObexFinalPacketObserver* aObserver);
69 IMPORT_C TObexResponse LastServerResponseCode() const;
70 IMPORT_C void SetCommandTimeOut(TTimeIntervalMicroSeconds32 aTimeOut);
71 IMPORT_C TAny* ExtensionInterface(TUid aUid);
73 public: // Called from CObexNotifyExtendClient
74 void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent);
75 void TimeOutCompletion();
79 void ConstructL(TObexTransportInfo& aObexTransportInfo);
80 TBool AlreadyActive(TRequestStatus& aStatus);
81 void ClientCommandL(TOperation aOp, TAny* aParam, TRequestStatus& aStatus);
82 // Implementation of CObex Events
83 virtual void OnPacketReceive(CObexPacket& aPacket);
84 virtual void OnError(TInt aError);
85 virtual void OnTransportUp();
86 virtual void OnTransportDown();
87 void SetRequest(TRequestStatus& aStatus, TOperation aOperation);
88 void CompleteRequest(const TInt aCompletion);
89 TInt PrepareConnectPacket(CObexPacket& aPacket); // Should be members of TConnectInfo
90 TInt ParseConnectPacket(CObexPacket& aPacket);
91 void ResetConnectionID();
92 void SetConnectionID(TUint32 aConnectionID);
93 void EmptyHeaderSet();
94 void SendRequestPacket();
95 void SendRequestPacket(TObexOpcode aObexOpcode);
98 TRequestStatus* iPendingRequest;
99 CObexBaseObject* iCurrentObject;
100 TUint32 iConnectionID;
101 TBool iConnectionIdSet;
102 CObexHeaderSet* iHeaderSet;
103 CObexHeader* iHeader;
104 CObexPacketSignaller* iPacketProcessSignaller;
105 TObexResponse iLastReceivedResponseOpcode;
106 CObexErrorEngine* iErrorEngine;
107 TBool iIsLastErrorSet;
108 TTimeIntervalMicroSeconds32 iCmdTimeOutDuration;
109 CObexPacketTimer* iPacketTimer;
112 #endif // __OBEXCLIENT_H