internetradio2.0/networkcontrollerinc/irnetworkobserver.h
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/networkcontrollerinc/irnetworkobserver.h	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2006-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:  ?Description
+*
+*/
+
+
+#ifndef CIRNETWORKOBSERVER_H
+#define CIRNETWORKOBSERVER_H
+
+#include <rconnmon.h>
+
+#include "irnetworkcontrollerobserver.h"
+
+class MIRNetworkController;
+class CIRNetworkController;
+
+NONSHARABLE_CLASS(CIRNetworkObserver): public CActive , 
+	public MConnectionMonitorObserver
+	{
+public: 
+
+	/**
+	 *Creates an Instance of CIRNetworkObserver
+	 *@return CIRNetworkObserver*
+	 */    
+	IMPORT_C static CIRNetworkObserver* NewL(CIRNetworkController *aNetworkController);
+
+	/** 
+	 *  Default Destructor
+	 */
+	~CIRNetworkObserver();
+
+	/** 
+	 *  Initializes the Connection monitor
+	 */    
+	void InitializeNetworkObserver();
+
+	/** 
+	 *  Set the observer used to communicate with the IRNetworkController
+	 */    
+	void SetObserver(MIRNetworkController* aObserver);
+	
+	/**
+	 * Sets network monitoring observer to decide whether network monitoring is 
+	 * required.
+	 */
+	void SetNetworkMonitoring(TBool aValue);
+
+private: 
+
+	/** 
+	 *  Default Constructor
+	 */
+	CIRNetworkObserver(CIRNetworkController *aNetworkController);
+
+	/** 
+	 *  Creates an Instance of CIRNetworkObserver
+	 *  @return CIRNetworkObserver*
+	 */    
+	static CIRNetworkObserver* NewLC(CIRNetworkController *aNetworkController);
+
+	/** 
+	 *  Second Phase construction.
+	 */
+	void ConstructL();
+
+//  Derived from CActive
+
+	/** 
+	 * Derived from CActive
+	 * The function is called by the active scheduler when a request 
+	 * completion event occurs,
+	 */
+	virtual void RunL();
+
+	/** 
+	 *  Cancels the pending requests on the CIRNetworkObserver Active object
+	 */
+	virtual void DoCancel();
+
+	/** 
+	 *  Handles a leave occurring in the request completion event handler RunL()
+	 */
+	virtual TInt RunError(int aError);
+
+	/**
+	 *	Derived from MConnectionMonitorObserver
+	 */
+
+	/** 
+	 *  Derived from MConnectionMonitorObserver
+	 *  Implements the EventL method which is called when there is a network event
+	 *  @param aConnMonEvent Indicates the type of event occurred
+	 */     
+	void  EventL(const CConnMonEventBase &aConnMonEvent);
+
+	/** 
+	 *  Identifies the type of connection we have used to get connected to network
+	 */
+	void IdentifyConnection();
+
+	/**
+	 * Utility function used just to keep RunL() small
+	 */
+	void IRNetworkObserverRunL();
+
+    /**
+     * Extracts the IAP Id of the access point
+     */
+	void GetAPId();
+
+
+public: // Public Data Members
+
+	/**
+	 * Stores the type of connection that is currently open
+	 */
+	TIRConnectionType iIRConnectionType;
+
+	/**
+	 * Stores the IAP ID of the connection
+	 */
+	TUint iIAPId;
+
+    TBool iIsIAPIdAvailable;
+
+private:
+
+	/** 
+	 *IR Connection monitor states ( indicates the different 
+	 *possible states the state machine can be in )
+	 */
+	enum TIRObserverState
+	{
+	EInitializing,
+	EGettingConnectionInfo,
+	EGettingIAPId
+	};
+
+	/**
+	 * Used to monitor the network
+	 */
+	RConnectionMonitor iIRConnectionMonitor;
+
+	/**
+	 * Stores the currently open connection Id
+	 */
+	TUint iConnectionId;
+
+	/**
+	 * Stores the currently open Sub connection Id
+	 */
+	TUint iSubConnectionCount;
+
+	/**
+	 * Stores the count of currently open sub connections
+	 */
+	TUint iConnectionCount;
+
+	/**
+	 * Stores the state of the observer
+	 */
+	TIRObserverState iObserverState;
+
+	/**
+	 * Stores the type of connection open
+	 */
+	TInt iConnectionType;
+
+	/**
+	 * Pointer to the network controller object
+	 */
+	MIRNetworkController* iMonitorObserver;
+
+	/**
+	 * Boolean indicates if monitoring option is requested by the creator
+	 * of the CIRNetworkController instance
+	 */
+	TBool iMonitoringRequired;
+
+	CIRNetworkController *iNetworkController;
+	};
+
+#endif //CIRNETWORKOBSERVER_H
+