diff -r 000000000000 -r d0791faffa3f obex/obexprotocol/obex/inc/obexerrorengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/obex/obexprotocol/obex/inc/obexerrorengine.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,219 @@ +// 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: +// + +/** + @file + @internalComponent +*/ + +#ifndef __OBEXERRORENGINE_H +#define __OBEXERRORENGINE_H + +#include + +/** +Implements the Obex client error resolver extension functionality. +Keeps a record of the last underlying client error that occurred. +Resolves the underlying error to an error set specified by the user. +*/ +NONSHARABLE_CLASS(CObexErrorEngine) : public CBase, public MObexClientErrorResolver + { +public: + /** + The Obex client sets a detailed "underlying" error on the error + engine for resolving to a specific error set later on. This + mechanism adds extensibility to different error sets. + */ + enum TObexClientUnderlyingError + { + /** + No error in the last operation. + @see CObexClient::OnPacketReceive() + */ + ENoError = 0, + + /** + The last operation failed to bring the transport up. + @see CObexClient::ClientCommandL() + @see CObexClient::CompleteRequest() + */ + ETransportUpFailed = 1, + + /** + Tried to connect but already connected. + @see CObexClient::ClientCommandL() + */ + EAlreadyConnected = 2, + + /** + Failed to insert local connection info into connect packet. + @see CObexClient::PrepareConnectPacket() + */ + ECannotInsertConnectInfo = 3, + + /** + Connection challenge received but unable to ask the user for a password. + @see CObexClient::PrepareConnectPacket() + */ + EChallengeRejected = 4, + + /** + The client's connect state was set to an erroneous value. + @see CObexClient::PrepareConnectPacket() + */ + EPrepareConnectPacketIncorrectState = 5, + + /** + A packet was received while the client was sending. + @see CObexClient::OnPacketReceive() + */ + EResponseWhileWriting = 6, + + /** + Failed to extract remote connection info from server connect packet. + @see CObexClient::ParseConnectPacket() + */ + ECannotExtractConnectInfo = 7, + + /** + Cannot process the challenge/challenge response from the server. + @see CObexClient::ParseConnectPacket() + */ + ECannotProcessChallenge = 8, + + /** + Challenge response received but the client did not request one. + @see CObexClient::ParseConnectPacket() + */ + EUnexpectedChallengeResponse = 9, + + /** + Unauthorised opcode in server connect packet and there is no challenge header. + This means that the server failed to authenticate the client. + @see CObexClient::ParseConnectPacket() + */ + EChallengeAbsent = 10, + + /** + The server connect packet contained an unknown opcode. + @see CObexClient::ParseConnectPacket() + */ + EBadOpcodeInConnectPacket = 11, + + /** + The client operation timed out. + @see CObexClient::TimeoutCompletion() + */ + EResponseTimeout = 12, + + /** + The client operation was aborted by the user. + @see CObexClient::OnPacketReceive() + */ + EAborted = 13, + + /** + The transport went down while an operation was outstanding. + @see CObexClient::OnTransportDown() + @see CObexClient::CompleteRequest() + */ + EOpOutstandingOnTransportDown = 14, + + /** + The server refused the disconnection request + because it did not recognise the connection ID. + @see CObexClient::OnPacketReceive() + */ + EBadConnectionId = 15, + + /** + The client attempted an operation other than connect while disconnected. + @see CObexClient::ClientCommandL() + */ + EDisconnected = 16, + + /** + Could not initialise the object to be sent in the Put/Get request. + @see CObexClient::ClientCommandL() + */ + ECannotInitialiseObject = 17, + + /** + Could not set the connection ID on the + object to be sent in the Put/Get request. + @see CObexClient::ClientCommandL() + */ + ECannotSetConnectionId = 18, + + /** + Could not prepare the next send packet in the Put/Get request. + @see CObexClient::ClientCommandL() + */ + ECannotPreparePacket = 19, + + /** + Multipacket response from server to Put/Get (not GetResponse) request. + @see CObexClient::OnPacketReceive() + */ + EMultipacketResponse = 20, + + /** + The response from the server contained an error code. + @see CObexClient::OnPacketReceive() + */ + EErrorResponseFromServer = 21, + + /** + Could not extract the header from the final Put response packet. + @see CObexClient::OnPacketReceive() + */ + ECannotExtractFinalPutHeader = 22, + + /** + The opcode of the Put response packet from the server is + not consistent with the progress of the Put operation. + @see CObexClient::OnPacketReceive() + */ + EPutOutOfSync = 23, + + /** + The opcode of the Get response packet from the server is Success + but the client hasn't finished sending all the Get request packets. + @see CObexClient::OnPacketReceive() + */ + EGetPrematureSuccess = 24, + + /** + Could not parse a GetResponse packet from the server. + @see CObexClient::OnPacketReceive() + */ + EGetResponseParseError = 25, + }; + + static CObexErrorEngine* NewL(); + + // Implements MObexClientErrorResolver::LastError(). + virtual TUint LastError(TObexClientErrorResolutionSetType aErrorSet) const; + + void SetLastError(TObexClientUnderlyingError aError); + +private: + CObexErrorEngine(); + +private: + TObexClientUnderlyingError iLastError; + }; + +#endif