upnpharvester/mdhserver/src/client/mdhclient.cpp
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpharvester/mdhserver/src/client/mdhclient.cpp	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 2007 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:      Metadata Harvester server's client
+*
+*/
+
+
+
+
+
+
+
+// INCLUDE FILES
+
+#include    "mdhclient.h"
+#include    "cmserviceobserver.h"
+#include    "msdebug.h"
+
+// ---------------------------------------------------------------------------
+// Two-phase API constructor
+// ---------------------------------------------------------------------------
+// 
+CCmMdhClient* CCmMdhClient::NewL( MCmServiceObserver& aServer )
+    {
+    CCmMdhClient* self = CCmMdhClient::NewLC( aServer );
+    CleanupStack::Pop( self );
+    return self;   
+    }
+    
+// ---------------------------------------------------------------------------
+// Two-phase API constructor
+// ---------------------------------------------------------------------------
+// 
+CCmMdhClient* CCmMdhClient::NewLC( MCmServiceObserver& aServer )
+    {    
+    CCmMdhClient* self = new ( ELeave ) CCmMdhClient( aServer );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;      
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCmMdhClient::~CCmMdhClient()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::~CCmMdhClient\n"));
+    Cancel();
+    iMdhSession.Close();
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::~CCmMdhClient end\n"));
+    }
+        
+// ---------------------------------------------------------------------------
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+CCmMdhClient::CCmMdhClient( MCmServiceObserver& aServer ) : 
+    CActive( EPriorityStandard ),
+    iServer( aServer ), iState( ECmMdhClientIdle )
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::CCmMdhClient\n"));
+    CActiveScheduler::Add( this ); 
+    }
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CCmMdhClient::ConstructL( )
+    {        
+    }
+
+// ---------------------------------------------------------------------------
+// Harvest
+// ---------------------------------------------------------------------------
+//
+TInt CCmMdhClient::Harvest()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::Harvest\n"));
+    
+    if ( IsActive() )
+        {
+        return KErrNotReady; 
+        }
+    
+    TInt errCode = iMdhSession.Connect();
+    if (errCode != KErrNone)
+        {
+        return errCode;
+        }
+    iMdhSession.SearchMediaservers( iStatus );
+    SetActive();
+    iState = ECmMdhClientSearching;
+    return KErrNone;
+    }
+    
+// ---------------------------------------------------------------------------
+// Stop
+// ---------------------------------------------------------------------------
+//
+void CCmMdhClient::Stop()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::Stop\n"));
+	Cancel();
+    }	
+	
+// ---------------------------------------------------------------------------
+// Close
+// ---------------------------------------------------------------------------
+//
+void CCmMdhClient::Close()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::Close\n"));
+	delete this;
+    }	
+	
+// ---------------------------------------------------------------------------
+// DoCancel
+// ---------------------------------------------------------------------------
+//
+void CCmMdhClient::DoCancel()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::DoCancel\n"));
+    iMdhSession.Cancel();
+    iMdhSession.Close();
+    iState = ECmMdhClientIdle;
+    iServer.ServiceExecuted( ECmServiceHarvest, KErrCancel );
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::DoCancel end\n"));
+    }
+
+// ---------------------------------------------------------------------------
+// RunL
+// ---------------------------------------------------------------------------
+//
+void CCmMdhClient::RunL()
+    {
+    LOG(_L("[CmMdh Server]\t CCmMdhClient::RunL\n"));
+    if ( iState == ECmMdhClientSearching && 
+         iStatus == KErrNone )
+        {
+        iMdhSession.Harvest( iStatus );
+        SetActive();
+        iState = ECmMdhClientHarvesting;
+        }
+    else // iState == ECmMdhClientHarvesting or error in search
+        {
+        iMdhSession.Close();
+        iState = ECmMdhClientIdle;
+        iServer.ServiceExecuted ( ECmServiceHarvest, iStatus.Int() );
+        }
+    }
+
+// End of file
+
+
+