diff -r 000000000000 -r b497e44ab2fc syncmlfw/common/syncagent/src/nsmlerror.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/common/syncagent/src/nsmlerror.cpp Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,236 @@ +/* +* Copyright (c) 2002 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: Error code conversion +* +*/ + + + +#include +#include "nsmlerror.h" +#include "nsmlhttp.h" + + +// --------------------------------------------------------- +// TNSmlError::TNSmlError() +// Constructor, nothing special in here. +// --------------------------------------------------------- +// +EXPORT_C TNSmlError::TNSmlError() : + iErrorCode( KErrNone ), + iReserved( NULL ) + { + } + +// --------------------------------------------------------- +// TNSmlError::~TNSmlError() +// Destructor. +// --------------------------------------------------------- +// +EXPORT_C TNSmlError::~TNSmlError() + { + } + +// --------------------------------------------------------- +// TNSmlError::SetErrorCode( TInt aErrorCode ) +// Sets error code. +// --------------------------------------------------------- +// +EXPORT_C void TNSmlError::SetErrorCode( TInt aErrorCode ) + { + iErrorCode = aErrorCode; + ErrorCodeConversion(); + } + +// --------------------------------------------------------- +// TNSmlError::SyncLogMessage() +// Converts native error code to message code for UI +// +// --------------------------------------------------------- +EXPORT_C TInt TNSmlError::SyncLogMessageCode() + { + TNSmlCommonAgentMessage syncLogMessage; + if ( iErrorCode >= ESmlVerDTDMissing && + iErrorCode <= ESmlVerProtoNotSupported ) + { + syncLogMessage = ESyncMLVersionNotSupported; + } + else + if ( iErrorCode == ESmlUnsupportedCmd ) + { + syncLogMessage = ESyncMLCommandNotSupported; + } + else + if ( iErrorCode >= ESmlFormatNotSupported && + iErrorCode <= ESmlTypeInvalid ) + { + syncLogMessage = EUnsupportedContentTypeOrFormat; + } + else + if ( iErrorCode >= ESmlCommandInvalid && + iErrorCode <= ESmlItemTargetLocURIMissing ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode >= ESmlResultsInvalid && + iErrorCode <= ESmlMaxMsgSizeInvalid ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlServerIsBusy ) + { + syncLogMessage = EServerBusy; + } + else + if ( iErrorCode == ESmlTooLongMessage ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlIncompleteMessage ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlServerUnauthorized ) + { + syncLogMessage = ESyncMLServerAuthenticationError; + } + else + if ( iErrorCode == ESmlServerNotResponding ) + { + syncLogMessage = EServerNotResponding; + } + else + if ( iErrorCode == TNSmlHTTPErrCode::ENSmlHTTPErr_NotFound || iErrorCode == TNSmlHTTPErrCode::ENSmlHTTPErr_MethodNotAllowed ) + { + syncLogMessage = EInvalidURI; + } + else + if ( iErrorCode == TNSmlHTTPErrCode::ENSmlHTTPErrCodeBase + 401 ) + { + syncLogMessage = EHTTPAuthError; + } + else + if ( ( iErrorCode >= TNSmlHTTPErrCode::ENSmlHTTPErrCodeBase + 400 && + iErrorCode <= TNSmlHTTPErrCode::ENSmlHTTPErrCodeBase + 599 ) || ( iErrorCode == ESmlCommunicationError ) ) + { + syncLogMessage = ECommunicationError; + } + else + if ( iErrorCode >= ESmlStatusMultipleChoices && + iErrorCode <= ESmlStatusUseProxy ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusBadRequest || iErrorCode == ESmlStatusPaymentRequired ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusUnauthorized ) + { + syncLogMessage = ESyncMLClientAuthenticationError; + } + else + if ( iErrorCode == ESmlStatusForbidden || iErrorCode == ESmlStatusNotFound + || iErrorCode == ESmlStatusGone) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusCommandNotAllowed ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusOptFeatureNotSupported || iErrorCode == ESmlStatusCommandNotImplemented ) + { + syncLogMessage = ESyncMLCommandNotSupported; + } + else + if ( iErrorCode == ESmlStatusClientAuthenticationRequired ) + { + syncLogMessage = ESyncMLClientAuthenticationError; + } + else + if ( iErrorCode == ESmlStatusRequestTimeout || iErrorCode == ESmlStatusSizeRequired + || iErrorCode == ESmlStatusIncompleteCommand || iErrorCode == ESmlStatusEntityTooLarge + || iErrorCode == ESmlStatusRequestedSizeTooBig || iErrorCode == ESmlStatusUnknownSearchGrammar + || iErrorCode == ESmlStatusBadCGIScript || iErrorCode == ESmlStatusBadGateway + || iErrorCode == ESmlStatusAtomicFailed ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusURITooLong ) + { + syncLogMessage = ESyncMLError; + } + else + if ( iErrorCode == ESmlStatusUnsupportedMediaTypeOrFormat ) + { + syncLogMessage = EUnsupportedContentTypeOrFormat; + } + else + if ( iErrorCode == ESmlStatusRetryLater || iErrorCode == ESmlStatusDeviceFull + || iErrorCode == ESmlStatusCommandFailed || iErrorCode == ESmlStatusServiceUnavailable + || iErrorCode == ESmlStatusGatewayTimeout || iErrorCode == ESmlStatusProcessingError + || iErrorCode == ESmlStatusDataStoreFailure || iErrorCode == ESmlStatusServerFailure + || iErrorCode == ESmlStatusSynchronisationFailed ) + { + syncLogMessage = EServerSystemError; + } + else + if ( iErrorCode == ESmlStatusVersionNotSupported + || iErrorCode == ESmlStatusProtocolVersionNotSupported ) + { + syncLogMessage = ESyncMLVersionNotSupported; + } + // 1.2 CHANGES: Offline mode + else + if ( iErrorCode == ESmlStatusNotPossibleInOfflineMode ) + { + syncLogMessage = ENotPossibleInOfflineMode; + } + // Changes end + else + { + syncLogMessage = ESystemError; + } + return syncLogMessage; + } +// --------------------------------------------------------- +// TNSmlError::SyncLogErrorCode() +// +// --------------------------------------------------------- +EXPORT_C TInt TNSmlError::SyncLogErrorCode() + { + return iErrorCode; + } +// --------------------------------------------------------- +// TNSmlError::ErrorCodeConversion() +// Converts some error code to Symbian error codes +// --------------------------------------------------------- +EXPORT_C void TNSmlError::ErrorCodeConversion() + { + if ( iErrorCode == ESmlLowMemory || iErrorCode == ESmlStatusDeviceFull ) + { + iErrorCode = KErrDiskFull; + } + } +