--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/networkcontrollerinc/irdatatransferobserver.h Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2005-2008 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: Data transfer interfaces.
+*
+*/
+
+
+#ifndef M_MIRDATATRANSFEROBSERVER_H
+#define M_MIRDATATRANSFEROBSERVER_H
+
+#include <e32def.h>
+
+class RHTTPSession;
+class MIRDataTransferObserver;
+
+/**
+ * Data transfer tracker interface.
+ *
+ * Provides means to attach itself to an existing network session to track the data amounts
+ * transferred through it, and also an API through which raw data amounts can be manually
+ * inputted (this is mainy the case when raw sockets are used directly).
+ *
+ * For getting notifications from the application's data transfer amounts on the core side,
+ * this class supports an observer interface through which data transfer events are notified.
+ */
+NONSHARABLE_CLASS( MIRDataTransferTracker )
+ {
+
+public:
+
+ /**
+ * Supported data transfer categories.
+ */
+ enum TIRTransferCategory
+ {
+
+ /**
+ * The category for the data is unknown.
+ */
+ EIRTransferCategoryUnknown,
+
+ /**
+ * The category for the data is SDS.
+ */
+ EIRTransferCategoryIsds,
+
+ /**
+ * The category for the data is content show.
+ */
+ EIRTransferCategoryAudio
+
+ };
+
+ /**
+ * Simple struct to keep hold of all the different data amounts transferred.
+ *
+ * The actual total amount of bytes of transferred data through the connection
+ * is the amount of total bytes sent added to the amount of total bytes received.
+ */
+ NONSHARABLE_STRUCT( TIRDataTransferPckg )
+ {
+
+ /**
+ * The total amount of bytes sent originating from all traffic.
+ * This is simply the sum of all the categorized data sent amounts.
+ */
+ TInt iBytesSentTotal;
+
+ /**
+ * The total amount of bytes received originating from all traffic.
+ * This is simply the sum of all the categorized data received amounts.
+ */
+ TInt iBytesReceivedTotal;
+
+ /**
+ * The total amount of bytes sent originating from unknown traffic.
+ */
+ TInt iBytesSentUnknown;
+
+ /**
+ * The total amount of bytes received originating from unknown traffic.
+ */
+ TInt iBytesReceivedUnknown;
+
+ /**
+ * The total amount of bytes sent originating from station directory traffic.
+ */
+ TInt iBytesSentIsds;
+
+ /**
+ * The total amount of bytes received originating from station directory traffic.
+ */
+ TInt iBytesReceivedIsds;
+
+ /**
+ * The total amount of bytes sent originating from content show traffic.
+ */
+ TInt iBytesSentAudio;
+
+ /**
+ * The total amount of bytes received originating from content show traffic.
+ */
+ TInt iBytesReceivedAudio;
+
+ };
+
+public:
+
+ /**
+ * Sets the observer that is notified of data transfer events.
+ *
+ * @param aObserver The observer to set, or NULL if none.
+ */
+ virtual void SetObserver( MIRDataTransferObserver* aObserver ) = 0;
+
+ /**
+ * Returns the current data transfer amounts.
+ *
+ * This always reflects the current situation, and thereby does not
+ * take the threshold mechanism into account.
+ *
+ * @return The current data transfer amounts.
+ */
+ virtual const TIRDataTransferPckg& TransferredData() const = 0;
+
+ /**
+ * Binds the tracker to an existing and opened HTTP session.
+ *
+ * @param aSession Session to bind the tracker to.
+ * @param aCategory Transfer category to record the data under.
+ */
+ virtual void BindL( RHTTPSession aSession, TIRTransferCategory aCategory ) = 0;
+
+ /**
+ * Notifies of raw bytes transferred through the connection.
+ *
+ * Raw sockets cannot be observer automatically, so if they are used, then manual
+ * notification is required on the user's part.
+ *
+ * @param aBytesSent Bytes sent through the raw socket.
+ * @param aBytesReceived Bytes received through the raw socket.
+ * @param aCategory Transfer category to record the data under.
+ */
+ virtual void RawDataTransferredL( TInt aBytesSent,
+ TInt aBytesReceived, TIRTransferCategory aCategory ) = 0;
+
+ };
+
+/**
+ * Interface which all data transfer events are passed through.
+ */
+class MIRDataTransferObserver
+ {
+
+public:
+
+ /**
+ * Invoked when a data transfer event occurs.
+ *
+ * The amount of data supplied as the parameter is the absolute amount of data transferred during
+ * the life time of the connection. The threshold after which the call back is invoked is internal,
+ * resulting in that it may not always be instantly called unless a predefined amount of data has
+ * already been transferred since the last call back was made.
+ *
+ * @param aData Data amounts that have been transferred through the connection.
+ */
+ virtual void HandleDataTransferEventL(
+ const MIRDataTransferTracker::TIRDataTransferPckg& aData ) = 0;
+
+ };
+
+#endif // M_MIRDATATRANSFEROBSERVER_H