diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/controlpointbase/inc/upnpcpbcurrenthttpclient.h --- /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 + +#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 iPendingHttpMessages; + + // pending transactions array + RPointerArray iPendingTransactions; + + CUpnpFileSender* iFileSender; + + }; + +#endif /*UPNPCPBCURRENTHTTPCLIENT_H_*/ + +// End of File +