--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontrolpoint/avcontrolframework/src/upnpactionresponsehandler.cpp Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,717 @@
+/** @file
+* Copyright (c) 2005-2006 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: CUpnpActionResponseHandler
+*
+*/
+
+
+// INCLUDE FILES
+#include "upnpactionresponsehandler.h"
+#include "upnpavcontrolpoint.h"
+#include "upnpavcpstring.h"
+
+// CONSTANTS]
+using namespace UpnpAVCPStrings;
+
+
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::CUpnpActionResponseHandler
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUpnpActionResponseHandler::CUpnpActionResponseHandler(
+ MUpnpAVControlPointObserver& aAVCPObserver, CUpnpAVControlPoint& aAVCP )
+ :iAVControlPointObserver( aAVCPObserver ), iAVCP( aAVCP )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUpnpActionResponseHandler::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSuperDir::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUpnpActionResponseHandler* CUpnpActionResponseHandler::NewL(
+ MUpnpAVControlPointObserver& aAVCPObserver,
+ CUpnpAVControlPoint& aAVCP )
+ {
+ CUpnpActionResponseHandler* self = new (ELeave) CUpnpActionResponseHandler(
+ aAVCPObserver, aAVCP );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// Destructor
+CUpnpActionResponseHandler::~CUpnpActionResponseHandler()
+ {
+ }
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::ActionResponseReceived
+// This is where action responses first came.
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+TInt CUpnpActionResponseHandler::ActionResponseReceived(CUpnpAction* aAction)
+ {
+ CUpnpService& service = aAction->Service();
+ if( service.ServiceType().Length() <= 0 )
+ {
+ return KErrArgument;
+ }
+ TInt err( KErrNone );
+ if ( service.ServiceType().Match(KRenderingControl) != KErrNotFound )
+ {
+ err = RenderingControlResponse(aAction);
+ }
+ else if ( service.ServiceType().Match(KAVTransport) != KErrNotFound )
+ {
+ err = AVTransportResponse(aAction);
+ }
+ else if ( service.ServiceType().Match(KConnectionManager) != KErrNotFound )
+ {
+ err = ConnectionManagerResponse(aAction);
+ }
+ else if ( service.ServiceType().Match(KContentDirectory) != KErrNotFound )
+ {
+ err = ContentDirectoryResponse(aAction);
+ }
+ else
+ {
+ err = KErrNotSupported;
+ }
+ return err;
+ }
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::RenderingControlResponse
+// This is where action responses first came.
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+TInt CUpnpActionResponseHandler::RenderingControlResponse(CUpnpAction* aAction)
+ {
+ CUpnpService& service = aAction->Service();
+ if( service.ServiceType().Length() <= 0 )
+ {
+ return KErrArgument;
+ }
+ const TDesC8& uuid = service.Device().Uuid();
+ if (aAction->Name().Compare(KSetVolume) == 0)
+ {
+ iAVControlPointObserver.RcSetVolumeResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KChannel ),
+ aAction->ArgumentValue( KDesiredVolume )
+ );
+ }
+ else if (aAction->Name().Compare(KGetVolume) == 0)
+ {
+ iAVControlPointObserver.RcVolumeResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KChannel ),
+ aAction->ArgumentValue( KCurrentVolume )
+ );
+ }
+ else if (aAction->Name().Compare(KSetMute) == 0)
+ {
+ iAVControlPointObserver.RcSetMuteResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KChannel ),
+ aAction->ArgumentValue( KDesiredMute )
+ );
+ }
+ else if (aAction->Name().Compare(KGetMute) == 0)
+ {
+ iAVControlPointObserver.RcMuteResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KChannel ),
+ aAction->ArgumentValue( KCurrentMute )
+ );
+ }
+ else
+ {
+ return KErrNotSupported;
+ }
+ return KErrNone;
+ }
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::AVTransportResponse
+// This is where action responses fot AV transport service are handled.
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+TInt CUpnpActionResponseHandler::AVTransportResponse(CUpnpAction* aAction)
+ {
+
+ CUpnpService& service = aAction->Service();
+ if( service.ServiceType().Length() <= 0 )
+ {
+ return KErrArgument;
+ }
+ const TDesC8& uuid = service.Device().Uuid();
+ if (aAction->Name().Compare(KSetAVTransportURI) == 0)
+ {
+ iAVControlPointObserver.AvtSetTransportUriResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KCurrentURI ),
+ aAction->ArgumentValue( KCurrentURIMetaData )
+ );
+ }
+ else if (aAction->Name().Compare(KSetNextAVTransportURI) == 0)
+ {
+ iAVControlPointObserver.AvtSetNextTransportUriResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KNextURI ),
+ aAction->ArgumentValue( KNextURIMetaData )
+ );
+ }
+ else if (aAction->Name().Compare(KGetMediaInfo) == 0)
+ {
+ iAVControlPointObserver.AvtMediaInfoResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KNrTracks ),
+ aAction->ArgumentValue( KMediaDuration ),
+ aAction->ArgumentValue( KCurrentURI ),
+ aAction->ArgumentValue( KCurrentURIMetaData ),
+ aAction->ArgumentValue( KNextURI ),
+ aAction->ArgumentValue( KNextURIMetaData ),
+ aAction->ArgumentValue( KPlayMedium ),
+ aAction->ArgumentValue( KRecordMedium ),
+ aAction->ArgumentValue( KWriteStatus )
+ );
+ }
+ else if (aAction->Name().Compare(KGetTransportInfo) == 0)
+ {
+ iAVControlPointObserver.AvtGetTransportInfoResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KCurrentTransportState ),
+ aAction->ArgumentValue( KCurrentTransportStatus ),
+ aAction->ArgumentValue( KCurrentSpeed )
+ );
+ }
+ else if (aAction->Name().Compare(KGetPositionInfo) == 0)
+ {
+ iAVControlPointObserver.AvtPositionInfoResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KTrack ),
+ aAction->ArgumentValue( KTrackDuration),
+ aAction->ArgumentValue( KTrackMetaData ),
+ aAction->ArgumentValue( KTrackURI ),
+ aAction->ArgumentValue( KRelTime ),
+ aAction->ArgumentValue( KAbsTime ),
+ aAction->ArgumentValue( KRelCount ),
+ aAction->ArgumentValue( KAbsCount )
+ );
+ }
+ else if (aAction->Name().Compare(KGetDeviceCapabilities) == 0)
+ {
+ iAVControlPointObserver.AvtDeviceCapabilitiesResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KPlayMedia ),
+ aAction->ArgumentValue( KRecMedia ),
+ aAction->ArgumentValue( KRecQualityMode )
+ );
+ }
+ else if (aAction->Name().Compare(KGetTransportSettings) == 0)
+ {
+ iAVControlPointObserver.AvtTransportSettingsResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KPlayMode ),
+ aAction->ArgumentValue( KRecQualityMode )
+ );
+ }
+ else if (aAction->Name().Compare(KStop) == 0)
+ {
+ iAVControlPointObserver.AvtStopResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID )
+ );
+ }
+ else if (aAction->Name().Compare(KPlay) == 0)
+ {
+ iAVControlPointObserver.AvtPlayResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KSpeed )
+ );
+ }
+ else if (aAction->Name().Compare(KPause) == 0)
+ {
+ iAVControlPointObserver.AvtPauseResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID )
+ );
+ }
+ else if (aAction->Name().Compare(KRecord) == 0)
+ {
+ iAVControlPointObserver.AvtRecordResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID )
+ );
+ }
+ else if (aAction->Name().Compare(KSeek) == 0)
+ {
+ iAVControlPointObserver.AvtSeekResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KUnit ),
+ aAction->ArgumentValue( KTarget )
+ );
+ }
+ else if (aAction->Name().Compare(KNext) == 0)
+ {
+ iAVControlPointObserver.AvtNextResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID )
+ );
+ }
+ else if (aAction->Name().Compare(KPrevious) == 0)
+ {
+ iAVControlPointObserver.AvtPreviousResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID )
+ );
+ }
+ else if (aAction->Name().Compare(KSetPlayMode) == 0)
+ {
+ iAVControlPointObserver.AvtSetPlayModeResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KNewPlayMode )
+ );
+ }
+ else if (aAction->Name().Compare(KSetRecordQualityMode) == 0)
+ {
+ iAVControlPointObserver.AvtSetRecordModeResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KNewRecordQualityMode )
+ );
+ }
+ else if (aAction->Name().Compare(KGetCurrentTransportActions) == 0)
+ {
+ iAVControlPointObserver.AvtSetPlayModeResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KInstanceID ),
+ aAction->ArgumentValue( KActions )
+ );
+ }
+ else{
+ return KErrNotSupported;
+ }
+ return KErrNone;
+ }
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::ConnectionManagerResponse
+// This is where action responses for Connection Manager service are handled.
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+TInt CUpnpActionResponseHandler::ConnectionManagerResponse(CUpnpAction* aAction)
+ {
+ CUpnpService& service = aAction->Service();
+ if( service.ServiceType().Length() <= 0 )
+ {
+ return KErrArgument;
+ }
+ const TDesC8& uuid = service.Device().Uuid();
+ if (aAction->Name().Compare( KGetProtocolInfo ) == 0)
+ {
+ iAVControlPointObserver.CmProtocolInfoResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KSource ),
+ aAction->ArgumentValue( KSink )
+ );
+ }
+
+ else if (aAction->Name().Compare( KPrepareForConnection ) == 0)
+ {
+ TLex8 connectionLex1( aAction->ArgumentValue( KConnectionId ) );
+ TInt connectionId;
+ connectionLex1.Val( connectionId );
+ TLex8 transportLex1( aAction->ArgumentValue( KAVTransportId ) );
+ TInt transportId;
+ transportLex1.Val( transportId );
+ TLex8 rscLex3( aAction->ArgumentValue( KRcsID ) );
+ TInt rscId;
+ rscLex3.Val( rscId );
+ iAVControlPointObserver.CmPrepareResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KRemoteProtocolInfo ),
+ aAction->ArgumentValue( KPeerConnectionManager ),
+ aAction->ArgumentValue( KPeerConnectionId ),
+ aAction->ArgumentValue( KDirection ),
+ connectionId,
+ transportId,
+ rscId
+ );
+ }
+ else if (aAction->Name().Compare(KConnectionComplete) == 0)
+ {
+ TLex8 connectionLex1( aAction->ArgumentValue( KConnectionId ) );
+ TInt connectionId;
+ connectionLex1.Val( connectionId );
+
+ iAVControlPointObserver.CmComplete(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ connectionId
+ );
+ }
+ else if (aAction->Name().Compare(KGetCurrentConnectionIDs) == 0)
+ {
+ iAVControlPointObserver.CmCurrentConnections(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KConnectionIds )
+ );
+ }
+ else if (aAction->Name().Compare( KGetCurrentConnectionInfo ) == 0)
+ {
+
+ TLex8 rscLex3( aAction->ArgumentValue( KRcsID ) );
+ TInt rscId;
+ rscLex3.Val( rscId );
+ TLex8 transportLex1( aAction->ArgumentValue( KAVTransportId ) );
+ TInt transportId;
+ transportLex1.Val( transportId );
+ TLex8 peerLex( aAction->ArgumentValue( KPeerConnectionId ) );
+ TInt peerId;
+ peerLex.Val( peerId );
+
+ iAVControlPointObserver.CmCurrentInfo(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ rscId,
+ transportId,
+ aAction->ArgumentValue( KProtocolInfo),
+ aAction->ArgumentValue( KPeerConnectionManager),
+ peerId,
+ aAction->ArgumentValue( KDirection ),
+ aAction->ArgumentValue( KStatus )
+ );
+ }
+ else
+ {
+ return KErrNotSupported;
+ }
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CUpnpActionResponseHandler::ContentDirectoryResponse
+// This is where action responses for Content Directory service are handled.
+// (other items were commented in a header)
+// -----------------------------------------------------------------------------
+//
+TInt CUpnpActionResponseHandler::ContentDirectoryResponse(CUpnpAction* aAction)
+ {
+ CUpnpService& service = aAction->Service();
+ if( service.ServiceType().Length() <= 0 )
+ {
+ return KErrArgument;
+ }
+ const TDesC8& uuid = service.Device().Uuid();
+ if (aAction->Name().Compare(KGetSearchCapabilities) == 0)
+ {
+ iAVControlPointObserver.CdsSearchCapabilitiesResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KSearchCaps )
+ );
+ }
+ else if (aAction->Name().Compare(KGetSortCapabilities) == 0)
+ {
+ iAVControlPointObserver.CdsSortCapabilitiesResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KSortCaps )
+ );
+ }
+ else if (aAction->Name().Compare(KGetSystemUpdateID) == 0)
+ {
+ const TDesC8& systemUpdateId = aAction->ArgumentValue( KId );
+ TLex8 updateidLex( systemUpdateId );
+ TInt systemUpdate;
+ updateidLex.Val( systemUpdate );
+
+ iAVControlPointObserver.CdsSystemUpdateIdResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ systemUpdate
+ );
+ }
+ else if (aAction->Name().Compare(KBrowse) == 0)
+ {
+ const TDesC8& numberReturned = aAction->ArgumentValue( KNumberReturned );
+ TLex8 returnedLex( numberReturned );
+ TInt numberReturnedInt;
+ returnedLex.Val( numberReturnedInt );
+
+ const TDesC8& totalmatches = aAction->ArgumentValue( KTotalMatches );
+ TLex8 matchesLex( totalmatches );
+ TInt totalMatchesInt;
+ matchesLex.Val( totalMatchesInt );
+
+ const TDesC8& updateId = aAction->ArgumentValue( KUpdateID );
+ TLex8 updateLex( updateId );
+ TInt updateIdInt;
+ updateLex.Val( updateIdInt );
+
+ const TDesC8& startIndex = aAction->ArgumentValue( KStartingIndex );
+ TLex8 indexLex( startIndex );
+ TInt indexInt;
+ indexLex.Val( indexInt );
+
+ const TDesC8& requestCount = aAction->ArgumentValue( KRequestedCount );
+ TLex8 requestLex( requestCount );
+ TInt requestInt;
+ requestLex.Val( requestInt );
+
+ iAVControlPointObserver.CdsBrowseResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KObjectID ),
+ aAction->ArgumentValue( KBrowseFlag ),
+ aAction->ArgumentValue( KFilter ),
+ indexInt,
+ requestInt,
+ aAction->ArgumentValue( KSortCriteria ),
+ aAction->ArgumentValue( KResult ),
+ numberReturnedInt,
+ totalMatchesInt,
+ aAction->ArgumentValue( KUpdateID )
+ );
+ }
+ else if (aAction->Name().Compare(KSearch) == 0)
+ {
+
+ const TDesC8& numberReturned = aAction->ArgumentValue( KNumberReturned );
+ TLex8 returnedLex( numberReturned );
+ TInt numberReturnedInt;
+ returnedLex.Val( numberReturnedInt );
+
+ const TDesC8& totalmatches = aAction->ArgumentValue( KTotalMatches );
+ TLex8 matchesLex( totalmatches );
+ TInt totalMatchesInt;
+ matchesLex.Val( totalMatchesInt );
+
+ const TDesC8& updateId = aAction->ArgumentValue( KUpdateID );
+ TLex8 updateLex( updateId );
+ TInt updateIdInt;
+ updateLex.Val( updateIdInt );
+
+ const TDesC8& startingIndex = aAction->ArgumentValue( KStartingIndex );
+ TLex8 indexLex( startingIndex );
+ TInt indexInt;
+ indexLex.Val( indexInt );
+
+ const TDesC8& reqCnt = aAction->ArgumentValue( KRequestedCount );
+ TLex8 requestLex( reqCnt );
+ TInt requestInt;
+ requestLex.Val( requestInt );
+
+ iAVControlPointObserver.CdsSearchResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KContainerID ),
+ aAction->ArgumentValue( KSearchCriteria ),
+ aAction->ArgumentValue( KFilter ),
+ indexInt,
+ requestInt,
+ aAction->ArgumentValue( KSortCriteria ),
+ aAction->ArgumentValue( KResult ),
+ numberReturnedInt,
+ totalMatchesInt,
+ aAction->ArgumentValue( KUpdateID )
+ );
+ }
+ else if (aAction->Name().Compare(KDestroyObject) == 0)
+ {
+ iAVControlPointObserver.CdsDestroyObjectResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KObjectID )
+ );
+ }
+ else if (aAction->Name().Compare(KUpdateObject) == 0)
+ {
+ iAVControlPointObserver.CdsUpdateObjectResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KObjectID ),
+ aAction->ArgumentValue( KCurrentTagValue ),
+ aAction->ArgumentValue( KNewTagValue )
+ );
+ }
+ else if (aAction->Name().Compare(KImportResource) == 0)
+ {
+ iAVControlPointObserver.CdsImportResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KSourceURI ),
+ aAction->ArgumentValue( KDestinationURI ),
+ aAction->ArgumentValue( KTransferID )
+ );
+ }
+ else if (aAction->Name().Compare(KExportResource) == 0)
+ {
+ iAVControlPointObserver.CdsExportResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KSourceURI ),
+ aAction->ArgumentValue( KDestinationURI ),
+ aAction->ArgumentValue( KTransferID )
+ );
+ }
+ else if (aAction->Name().Compare(KStopTransferResource) == 0)
+ {
+ iAVControlPointObserver.CdsStopTransferResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KTransferID )
+ );
+ }
+ else if (aAction->Name().Compare(KGetTransferProgress) == 0)
+ {
+ iAVControlPointObserver.CdsCTransferProgressResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue( KTransferID ),
+ aAction->ArgumentValue( KTransferStatus ),
+ aAction->ArgumentValue( KTransferLength ),
+ aAction->ArgumentValue( KTransferTotal )
+ );
+ }
+ else if (aAction->Name().Compare(KDeleteResource) == 0)
+ {
+ iAVControlPointObserver.CdsDeleteResourceResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue(KResourceURI)
+ );
+ }
+ else if (aAction->Name().Compare(KCreateReference) == 0)
+ {
+ iAVControlPointObserver.CdsCreateReferenceResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue(KContainerID),
+ aAction->ArgumentValue(KObjectID),
+ aAction->ArgumentValue(KNewID)
+ );
+ }
+ else if (aAction->Name().Compare(KCreateObject) == 0)
+ {
+ iAVControlPointObserver.CdsCreateObjectResponse(
+ uuid,
+ aAction->SessionId(),
+ aAction->Error(),
+ aAction->ArgumentValue(KContainerID),
+ aAction->ArgumentValue(KElements),
+ aAction->ArgumentValue(KObjectID),
+ aAction->ArgumentValue(KResult)
+ );
+ }
+ else
+ {
+ return KErrArgument;
+ }
+ return KErrNone;
+ }
+
+//End of file