upnpavcontroller/upnpavcontrollerserver/src/upnpaverrorhandler.cpp
author Sampo Huttunen <sampo.huttunen@nokia.com>
Wed, 03 Nov 2010 11:45:09 +0200
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 0 7f85d04be362
permissions -rw-r--r--
merge from Nokia's internal development branch

/*
* Copyright (c) 2008 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:      errror handling in AVController
*
*/






// INCLUDE FILES
#include <e32std.h>
#include <e32base.h>
#include <upnperrors.h>

#include "upnpaverrorhandler.h"

// CONSTANTS
const TInt KMaxSymbianErrorCode = -100;
const TInt KMinActionErrorCode = 700;

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertToSymbianErrorCode
// Returns the Symbian error code (e32err.h) corresponding the given UPnP
// error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertToSymbianErrorCode(
                              TInt aUPnPErrorCode,
                              TUPnPErrorCodeType aErrorType )
    {
    TInt convertedErrorCode = KErrGeneral;

    if( aUPnPErrorCode == EHttpOk ||  /* 200 */
        aUPnPErrorCode == KErrNone )
        {
        convertedErrorCode = KErrNone;
        }
    // Don't convert Symbian error codes
    else if( aUPnPErrorCode < 0 &&
             aUPnPErrorCode > KMaxSymbianErrorCode ) 
        {
        convertedErrorCode = aUPnPErrorCode;
        }
    else
        {
        if ( aUPnPErrorCode > 0 && 
             aUPnPErrorCode < KMinActionErrorCode )
            {
            convertedErrorCode = ConvertGeneralErrorCode( aUPnPErrorCode );
            }
        else if( aErrorType == EUPnPConnectionManagerError )
            {
            convertedErrorCode = ConvertCMErrorCode( aUPnPErrorCode );
            }
        else if( aErrorType == EUPnPContentDirectoryError )
            {
            convertedErrorCode = ConvertCDSErrorCode( aUPnPErrorCode );
            }
        else if( aErrorType == EUPnPRenderingControlError )
            {
            convertedErrorCode = ConvertRCErrorCode( aUPnPErrorCode );
            }
        else if( aErrorType == EUPnPAVTransportError )
            {
            convertedErrorCode = ConvertAVTErrorCode( aUPnPErrorCode );
            }
        else if( aErrorType == EUPnPHTTPError )
            {
            convertedErrorCode = ConvertHTTPErrorCode( aUPnPErrorCode );
            }
        else
            {
            convertedErrorCode = KErrGeneral; 
            }
        }

    return convertedErrorCode;
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertGeneralErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the
// given general UPnP error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertGeneralErrorCode(
                             TInt aUPnPErrorCode )
    {
    TInt convertedErrorCode = KErrGeneral;

    switch( aUPnPErrorCode )
        {
        case EInvalidAction: /* 400 */
            // fall through
        case EInvalidVar: /* 404 */
            // fall through
        case ENotImplemented: /* 602 */
            {
            convertedErrorCode = KErrNotSupported;
            break;
            }
        case EInvalidArgs: /* 402 */
            // fall through
        case EArgumentValue: /* 600 */
            // fall through
        case EArgumentRange: /* 601 */
            // fall through
        case EStringTooLong: /* 605 */
            {
            convertedErrorCode = KErrArgument;
            break;
            }
        case EInternalServerError: /* 500 */
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        case EActionFailed: /* 501 */
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        case EHttpInsufficientStorage:
            {
            convertedErrorCode = KErrDiskFull;
            break;
            }     
        case EOutOfMemory: /* 603 */
            {
            //Server has no memory
            convertedErrorCode = KErrServerBusy;
            break;
            }
        case EHumanIntervention: /* 604 */
            {
            convertedErrorCode = KErrDied;
            break;
            }
        case ENotAuthorized: /* 606 */
            // fall through
        case ESignatureFailure: /* 607 */
            // fall through
        case ESignatureMissing: /* 608 */
            // fall through
        case ENotEncrypted: /* 609 */
            {
            convertedErrorCode = KErrAccessDenied;
            break;
            }
        case EInvalidUrl: /* 611 */
            // fall through
        case ENoSession: /* 612 */
            {
            convertedErrorCode = KErrNotFound;
            break;
            }
        default:
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        }
    return convertedErrorCode; 
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertCMErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the 
// given Connection Manager error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertCMErrorCode(
                              TInt aUPnPErrorCode )
    {
    TInt convertedErrorCode = KErrGeneral;
    switch( aUPnPErrorCode )
        {
        case ENoSuchObject: /* 701 */
            // fall through
        case EInvalidCurrentTag: /* 702 */
            // fall through
        case EInvalidNewTag: /* 703 */
            // fall through
        case ERequiredTag: /* 704 */
            {
            convertedErrorCode = KErrCouldNotConnect;
            break;
            }
        case EReadOnlyTag: /* 705 */
            {
            convertedErrorCode = KErrAccessDenied;
            break;
            }
        case EParameterMismatch : /* 706 */
            {
            convertedErrorCode = KErrArgument;
            break;
            }
        default:
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        }
    return convertedErrorCode; 
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertCDSErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the 
// given Content Directory error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertCDSErrorCode(
                              TInt aUPnPErrorCode )
    {
    TInt convertedErrorCode = KErrGeneral;
    switch( aUPnPErrorCode )
        {
        case ENoSuchObject: /* 701 */
            // fall through
        case ENoContainer: /* 710 */
            // fall through
        case ENoSourceResource: /* 714 */
            // fall through
        case ENoDestinationResource: /* 718 */
            {
            convertedErrorCode = KErrNotFound;
            break;
            }
        case EInvalidCurrentTag: /* 702 */
            // fall through
        case EInvalidNewTag: /* 703 */
            // fall through
        case EParameterMismatch : /* 706 */
            // fall through
        case EBadMetadata: /* 712 */
            {
            convertedErrorCode = KErrArgument;
            break;
            }
        case ERequiredTag: /* 704 */
            // fall through
        case EReadOnlyTag: /* 705 */
            // fall through
        case ERestrictedObject: /* 711 */
            // fall through
        case ERestrictedParentObject: /* 713 */
            // fall through
        case ESourceAccess: /* 715 */
            // fall through
        case EDestinationAccess: /* 719 */
            {
            convertedErrorCode = KErrAccessDenied;
            break;
            }
        case EInvalidSearch: /* 708 */
            // fall through
        case EInvalidSort: /* 709 */
            {
            convertedErrorCode = KErrNotSupported;
            break;
            }
        case ETransferBusy: /* 716 */
            {
            convertedErrorCode = KErrInUse;
            break;
            }
       default:
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        }
    return convertedErrorCode; 
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertRCErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the 
// given Rendering Control error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertRCErrorCode(
                              TInt aUPnPErrorCode )
    {
    TInt convertedErrorCode = KErrGeneral;
    switch( aUPnPErrorCode )
        {
        case ENoSuchObject: /* 701 */
            // fall through
        case EInvalidCurrentTag: /* 702 */
            {
            convertedErrorCode = KErrArgument;
            break;
            }
       default:
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        }
    return convertedErrorCode; 
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertAVTErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the 
// given AV Transport error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertAVTErrorCode(
                              TInt aUPnPErrorCode )
    {
    TInt convertedErrorCode = KErrGeneral;
    switch( aUPnPErrorCode )
        {
        case ENoSuchObject: /* 701 */
            // fall through
        case ERequiredTag: /* 704 */
            // fall through
        case EInvalidSearch: /* 708 */
            // fall through
        case ENoContainer: /* 710 */
            // fall through
        case EBadMetadata: /* 712 */
            // fall through
        case ERestrictedParentObject: /* 713 */
            // fall through
        case ENoSourceResource: /* 714 */
            // fall through
        case ENoFileTransfer: /* 717 */
            {
            convertedErrorCode = KErrNotSupported;
            break;
            }
        case EInvalidCurrentTag: /* 702 */
            // fall through
        case ETransferBusy: /* 716 */
            {
            convertedErrorCode = KErrNotFound;
            break;
            }
        case EInvalidNewTag: /* 703 */
            {
            convertedErrorCode = KErrHardwareNotAvailable;
            break;
            }
        case EReadOnlyTag: /* 705 */
            {
            convertedErrorCode = KErrLocked;
            break;
            }
        case EParameterMismatch : /* 706 */
            {
            convertedErrorCode = KErrWrite;
            break;
            }
        case EInvalidSort: /* 709 */
            {
            convertedErrorCode = KErrDiskFull;
            break;
            }
        case ESourceAccess: /* 715 */
            {
            convertedErrorCode = KErrInUse;
            break;
            }
        case ENoDestinationResource: /* 718 */
            {
            convertedErrorCode = KErrArgument;
            break;
            }
       default:
            {
            convertedErrorCode = KErrGeneral;
            break;
            }
        }
    return convertedErrorCode;
    }

// --------------------------------------------------------------------------
// UPnPAVErrorHandler::ConvertHTTPErrorCode
// Returns the Symbian error code (e32err.h) corresponding to the 
// given HTTP error code.
// --------------------------------------------------------------------------
TInt UPnPAVErrorHandler::ConvertHTTPErrorCode(
                              TInt /*aUPnPErrorCode*/ )
    {
    TInt convertedErrorCode = KErrDisconnected;
        
    return convertedErrorCode;
    }

// End of File