upnp/upnpstack/controlpointbase/inc/upnpcpbcurrenthttpclient.h
changeset 0 f5a58ecadc66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnp/upnpstack/controlpointbase/inc/upnpcpbcurrenthttpclient.h	Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,166 @@
+/** @file
+* Copyright (c) 2007-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: 
+ *
+*/
+
+
+#ifndef UPNPCPBCURRENTHTTPCLIENT_H_
+#define UPNPCPBCURRENTHTTPCLIENT_H_
+
+#include <upnpdispatcher.h>
+
+#include "upnpcpbhttpmessagecontroller.h"
+#include "upnphttpclientengine.h"
+
+class CUpnpGenaMessage;
+class CUpnpServiceInfo;
+class CUpnpControlPoint;
+class CUpnpHTTPTransaction;
+
+class MUpnpCpHttpRequestor;
+class CUpnpCpHttpRequestorImplBase;
+class MUpnpCpStackRequestor;
+class CUpnpCpStackRequestorImplBase;
+
+class CUpnpFileSender;
+
+NONSHARABLE_CLASS( CUpnpCpbCurrentHttpClient ) : public CBase, public MUpnpHttpClientObserver,
+    public MUpnpCpbHttpMessageController
+    {
+public:
+    static const TInt KDefaultSubscriptionTimeout = 300; // 5 minutes
+
+public:
+
+    virtual ~CUpnpCpbCurrentHttpClient();
+
+    static CUpnpCpbCurrentHttpClient* NewL(CUpnpControlPoint& aControlPoint,
+            MUpnpCpHttpRequestor* aHttpRequestor, MUpnpCpStackRequestor* aStackRequestor );
+
+    void StartIPFilteringL();
+
+    void StopIPFiltering();
+
+    void SendFileByPostL( CUpnpHttpMessage* aMessage );
+    /**
+     * It is called from bottom layer when wlan lost event occurs [callback method]     
+     * @result None
+     */
+    void WlanLostOccurs();
+    
+    /**
+     * It is called from bottom layer when address change event occurs [callback method]        
+     */
+    void AddressChangedL();
+    
+public:  //from MUpnpCpbHttpMessageController
+
+    virtual void SendL( CUpnpHttpMessage* aMessage );
+
+    virtual void SendActionL(CUpnpAction* aAction);
+
+    virtual void SendSubscribeL(CUpnpServiceInfo* aServiceInfo);
+
+    virtual void SendUnsubscribeL(CUpnpServiceInfo* aServiceInfo);
+
+    virtual void SendResubscribeL(CUpnpServiceInfo* aServiceInfo);
+
+    virtual TInt GetServiceDescriptionL(CUpnpDevice* aDevice, const TDesC8& aServiceUrl);
+
+    virtual TInt GetDeviceDescriptionL(CUpnpDevice* aDevice);
+
+    virtual void SearchL(const TDesC8& aSearchString);
+
+    /**
+     * Stops ignoring all embedded devices of specified device
+     * @since Series60 3.2
+     * @param aRoot Root device
+     */
+    virtual void StopIgnoringEmbeddedL( CUpnpDevice* aRoot );
+
+    virtual void StopIgnoringUuidL(const TDesC8& aUuids);
+
+    /**
+     * Stops ignoring all device tree
+     * @since Series60 3.2
+     * @param aRoot Root device
+     */
+    virtual void StopIgnoringL( CUpnpDevice* aDevice );
+
+private://from MUpnpDispatcherCustomer that is derived by MUpnpCpbHttpMessageController
+
+    virtual void MessageReceivedLD(CUpnpHttpMessage* aMessage);
+
+    virtual const TDesC8& Path();
+
+private: //from MUpnpHTTPClientObserver
+
+    /**
+     * Callback indicating that response was received within transaction.
+     *
+     * @param aCompletedTrasaction completed transaction that has response message
+     */
+    virtual void ClientResponseRecivedLD( CUpnpHttpTransaction& aCompletedTrasaction );
+
+private:
+    CUpnpCpbCurrentHttpClient( CUpnpControlPoint& aControlPoint,
+        MUpnpCpHttpRequestor* aHttpRequestor, MUpnpCpStackRequestor* aStackRequestor );
+
+    void ConstructL();
+
+    /**
+     * Set requestors which leaves with KErrNotReady or do nothing.
+     * This is used when WLan Lost occurs.
+     * @result None
+     */
+    void SetNullRequestorsL();
+
+private:
+
+    // control point, not owned
+    CUpnpControlPoint& iControlPoint;
+
+    // pointer to http requestor interface
+    MUpnpCpHttpRequestor* iHttpRequestor;
+
+    // default implementation of http requestor
+    CUpnpCpHttpRequestorImplBase* iHttpRequestorDefaultImpl;
+
+    // iStackRequestor uses DLNA webserver API for http, and dispacher to communicate with stack
+    MUpnpCpStackRequestor* iStackRequestor;
+
+    // default implementation of stack requestor
+    CUpnpCpStackRequestorImplBase* iStackRequestorDefaultImpl;
+
+    // value of USER-AGENT header in sent SOAP requests
+    HBufC8* iUserAgent;
+
+    // Current state of discovery engine
+    TInt iResult;
+
+    // The pending message list
+    RPointerArray<CUpnpHttpMessage> iPendingHttpMessages;
+
+    // pending transactions array
+    RPointerArray<CUpnpHttpTransaction> iPendingTransactions;
+    
+    CUpnpFileSender* iFileSender;
+    
+    };
+
+#endif /*UPNPCPBCURRENTHTTPCLIENT_H_*/
+
+//  End of File
+