upnpavcontroller/upnpavcontrollerserver/src/upnpaverrorhandler.cpp
author Sampo Huttunen <sampo.huttunen@nokia.com>
Thu, 18 Nov 2010 15:46:57 +0200
branchIOP_Improvements
changeset 44 97caed2372ca
parent 0 7f85d04be362
permissions -rw-r--r--
Fixed AVController, it was accidentally set to search only for renderers. Now also servers are added to device list. Also some minor changes in package definition xml and platform API xml definition files.

/*
* 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