--- /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<TInt> 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<TInetAddr> 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<TInetAddr>(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 );
+ }
+