diff -r 000000000000 -r 7f85d04be362 upnpmediaserver/mediaserverclient/src/upnpmediaserverclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpmediaserver/mediaserverclient/src/upnpmediaserverclient.cpp Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,509 @@ +/** @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: Media Server Client +* +*/ + + +// INCLUDE FILES +#include "upnpmediaserverclient.h" +#include "upnpmediaserverglobals.h" +#include "upnpmediaserversettings.h" +#include "upnpicon.h" + +// Number of message slots to reserve for this client server session. +const TUint KMediaServerMessageSlots = 10; +const TInt KMediaServerRetryCount = 2; + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::RUpnpMediaServerClient +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C RUpnpMediaServerClient::RUpnpMediaServerClient() + :RUpnpSessionBase() + { + iAddressPkg = NULL; + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::RUpnpMediaServerClient +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::Close() + { + delete iAddressPkg; + iAddressPkg = NULL; + RSessionBase::Close(); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Connect +// Connect to Media Server session. +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Connect() + { + return RUpnpSessionBase::Connect( KMediaServerName, + TVersion( KMediaServerMajorVersionNumber, + KMediaServerMinorVersionNumber, + KMediaServerBuildVersionNumber ), + KMediaServerMessageSlots, + KMediaServerRetryCount, + KMediaServerFilename, + KServerUid3 ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Status +// Gets media server operational status +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Status(TInt& aStat) + { + TPckgBuf statusBuf(aStat); + TIpcArgs args(&statusBuf); + TInt error = SendReceive(EMediaServerStatus, args); + aStat = statusBuf(); + return error; + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Start +// Client requests server to terminate its process +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Start() + { + return SendReceive( EMediaServerStart ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Start +// Client requests server to terminate its process (asynchonous version) +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::Start(TRequestStatus& aStatus) + { + SendReceive( EMediaServerStart,aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Start +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::StartOffline() + { + return SendReceive( EMediaServerStartOffline); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Stop +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Stop() + { + return SendReceive( EMediaServerStop ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Stop +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Stop( TServerStopMode aMode ) + { + TInt error = 0; + if ( aMode == EStopSilent) + { + error = SendReceive( EMediaServerStopSilent ); + } + else if ( aMode == EStopNormal) + { + error = SendReceive( EMediaServerStop ); + } + return error; + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Stop +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::Restart() + { + return SendReceive( EMediaServerRestart ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Stop +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RUpnpMediaServerClient::GetAddress(TInetAddr& aAddr) + { + TPckg pkg(aAddr); + TIpcArgs args(&pkg); + return SendReceive( EMediaServerGetIpAndPort, args ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Stop +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::GetAddressL(TInetAddr& aAddr, + TRequestStatus& aStatus) + { + delete iAddressPkg; + iAddressPkg = NULL; + iAddressPkg = new (ELeave) TPckg(aAddr); + TIpcArgs args(iAddressPkg); + SendReceive( EMediaServerGetIpAndPort, args, aStatus ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::SetUploadDirectoryL +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::SetUploadDirectoryL( const TDesC& aPath, + TRequestStatus& aStatus ) + { + CUpnpMediaServerSettings* settings = CUpnpMediaServerSettings::NewL(); + CleanupStack::PushL( settings ); + User::LeaveIfError( settings->Set(UpnpMediaServerSettings::EUploadDirectory, aPath) ); + CleanupStack::PopAndDestroy( settings ); + + TIpcArgs args; + args.Set(0, &aPath); + SendReceive( EMediaServerSetUploadDirectory, args, aStatus ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItem +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedItem( TInt aItemId, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus ) + { + TIpcArgs args(aItemId, &aRcvdBufSize); + SendReceive(EMediaServerGetSharedItem, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItemL +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedItemResult(TDes8& aResult, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult); + SendReceive(EMediaServerGetSharedItemResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareContainer +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedContainer( TInt aContainerId, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus ) + { + TIpcArgs args(aContainerId, &aRcvdBufSize); + SendReceive(EMediaServerGetSharedContainer, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareContainer +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedContainerResult(TDes8& aResult, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult); + SendReceive(EMediaServerGetSharedContainerResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItem +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareItem( TDes8& aSend, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus) + { + TIpcArgs args(&aSend, &aRcvdBufSize); + SendReceive(EMediaServerShareItem, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::AddIcon +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::AddIcon( CUpnpIcon* aIcon, TRequestStatus& aStatus) + { + TIpcArgs args(&aIcon->GetIconBufferPtr()); + SendReceive(EMediaServerAddIcon, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UpdateIcon +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::UpdateIcon( TDes8& aSend, CUpnpIcon* aIcon, + TRequestStatus& aStatus ) + { + TIpcArgs args(&aIcon->GetIconBufferPtr(), &aSend); + SendReceive(EMediaServerUpdateIcon, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::RemoveIcon +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::RemoveIcon( TDes8& aSend, TRequestStatus& aStatus) + { + TIpcArgs args(&aSend); + SendReceive(EMediaServerRemoveIcon, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::RemoveIcons +// ----------------------------------------------------------------------------- +// +EXPORT_C void RUpnpMediaServerClient::RemoveIcons( TRequestStatus& aStatus) + { + TIpcArgs args(NULL); + SendReceive(EMediaServerRemoveIcons, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItemResult +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareItemResult( TDes8& aResult, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult); + SendReceive(EMediaServerShareItemResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareContainer +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareContainer( TDes8& aSend, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus) + { + TIpcArgs args(&aSend, &aRcvdBufSize); + SendReceive(EMediaServerShareContainer, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareContainerResult +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareContainerResult( TDes8& aResult, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult); + SendReceive(EMediaServerShareContainerResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItemL +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareItemList( TDes8& aSend, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus) + { + TIpcArgs args(&aSend, &aRcvdBufSize); + SendReceive(EMediaServerShareItemList, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareItemListResult +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareItemListResult( TDes8& aResult, + TDes8& aExecStatus, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult, &aExecStatus); + SendReceive(EMediaServerShareItemListResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UnShareRoot +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::UnshareRoot(TRequestStatus& aStatus) + { + SendReceive(EMediaServerUnshareRoot, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UnShareItemL +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::UnshareItem(TInt aItemId, TRequestStatus& aStatus) + { + TIpcArgs args(aItemId); + SendReceive(EMediaServerUnshareItem, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UnShareContainerL +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::UnshareContainer(TInt aItemId, TRequestStatus& aStatus) + { + TIpcArgs args(aItemId); + SendReceive(EMediaServerUnshareContainer, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UnshareItemListL +// ----------------------------------------------------------------------------- +void RUpnpMediaServerClient::UnshareItemListL(TDes8& aSend, TDes8& aExecStatus, + TRequestStatus& aStatus) + { + TIpcArgs args(&aSend, &aExecStatus); + SendReceive(EMediaServerUnshareItemList, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::GetSharedItemList +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedItemList(TInt aContainerId, TDes8& aSend, + TDes8& aRcvdBufSize, TRequestStatus& aStatus) + { + TIpcArgs args(aContainerId, &aSend, &aRcvdBufSize); + SendReceive(EMediaServerGetSharedItemList, args, aStatus); + } +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::GetSharedItemList +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedContainerList(TInt aContainerId, TDes8& aSend, + TDes8& aRcvdBufSize, TRequestStatus& aStatus) + { + TIpcArgs args(aContainerId, &aSend, &aRcvdBufSize); + SendReceive(EMediaServerGetSharedContainerList, args, aStatus); + } +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::GetSharedItemList +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedItemListResult(TDes8& aResult, TDes8& aTotalMatches, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult, &aTotalMatches); + SendReceive(EMediaServerGetSharedItemListResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::GetSharedContainerList +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetSharedContainerListResult(TDes8& aResult, TDes8& aTotalMatches, + TRequestStatus& aStatus) + { + TIpcArgs args(&aResult, &aTotalMatches); + SendReceive(EMediaServerGetSharedContainerListResult, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareReference +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareReference( TDes8& aSend, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus ) + { + TIpcArgs args(&aSend, &aRcvdBufSize); + SendReceive(EMediaServerShareReference, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ShareReferenceList +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ShareReferenceList( TDes8& aSend, + TDes8& aRcvdBufSize, + TRequestStatus& aStatus ) + { + TIpcArgs args(&aSend, &aRcvdBufSize); + SendReceive(EMediaServerShareReferenceList, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::SubscribeEvents +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::SubscribeEvents(TRequestStatus& aStatus) + { + SendReceive(EMediaServerSubscribeEvents, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::UnsubscribeEvents +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::UnsubscribeEvents() + { + SendReceive(EMediaServerUnsubscribeEvents); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::ListenTransferEvent +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::ListenTransferEvent(TDes8& aEventSize, TRequestStatus& aStatus) + { + TIpcArgs args(&aEventSize); + SendReceive(EMediaServerListenTransferEvent, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::GetTransferEventBody +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::GetTransferEventBody(TDes8& aResult, TRequestStatus& aStatus) + { + TIpcArgs args(&aResult); + SendReceive(EMediaServerGetTransferEventBody, args, aStatus); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::Status +// Notify about media server operational status +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::StatusChangeNotify( TRequestStatus& aStatus ) + { + SendReceive( EMediaServerStatusChange, TIpcArgs(), aStatus ); + } + +// ----------------------------------------------------------------------------- +// RUpnpMediaServerClient::CancelStatusChanged +// Cancel notification to ms status +// ----------------------------------------------------------------------------- +// +void RUpnpMediaServerClient::CancelStatusChangeNotify() + { + SendReceive( EMediaServerStatusChangeCancel ); + } +