diff -r 39bb7c3571e9 -r 052078dda061 networkcontrol/ipscpr/src/qos_msg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/ipscpr/src/qos_msg.h Tue Jun 29 19:20:22 2010 +0530 @@ -0,0 +1,168 @@ +/** +* Copyright (c) 2004-2009 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: +* Header file for the QoS Mapping Messages +* +* +*/ + + + +/** + @file qos_msg.h +*/ + +#ifndef __QOS_MSG_H__ +#define __QOS_MSG_H__ + +#include +#include +#include + +class CPfqosStream; + + +NONSHARABLE_CLASS(CQoSMsg) : public CBase +/** +Encapsulation of a QoS PRT Message that can be stored in a +link list of messages. + +@internalComponent + +@released Since v9.0 +*/ + { +public: + // Construction + static CQoSMsg* NewL( TPfqosMessages aMsgType ); + ~CQoSMsg(); + + // Message Content + inline void AddConnInfo(TUint32 aProtocol, const TUidType& aUid, TUint32 aIapId ); + void AddSrcAddr(const TInetAddr &aAddr); + void AddDstAddr(const TInetAddr &aAddr); + inline void AddChannel(TInt aChannelId); + inline void AddQoSParameters(const TQoSParameters& aParameters); + void AddExtensionPolicy(TQoSExtensionQueue& aExtensions); + + // Send Message to PRT + void Send(RInternalSocket &aSocket, TRequestStatus& aStatus); + +protected: + // Construction + CQoSMsg(); + void ConstructL( TPfqosMessages aMsgType ); + +public: + /** QoS PRT formatted Message */ + CPfqosStream* iMsg; + + /** Message Type */ + TPfqosMessages iType; + + /** Link to next item */ + TSglQueLink iLink; + }; + + +class CIpSubConnectionProvider; + + +NONSHARABLE_CLASS(CQoSMsgWriter) : public CActive +/** +Active Object that sends messages from IP Connection Provider to the QoS PRT + +@internalComponent + +@released Since v9.0 +*/ + { +public: + // Construction + static CQoSMsgWriter* NewL(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket); + ~CQoSMsgWriter(); + + // Send Message over Internal Socket + void Send(CQoSMsg* aMsg); + +protected: + // Construction + CQoSMsgWriter(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket); + + // Active Object Implementation + void RunL(); + inline void DoCancel(); + +private: + /** Message Owner */ + CIpSubConnectionProvider* iOwner; + + /** Reference to an Internal Socket */ + RInternalSocket& iSocket; + + /** Current Message */ + CQoSMsg* iCurrentMsg; + + /** List of Pending Messages */ + TSglQue iPendingMsg; + + /** Flag Set when Active Object is shuttin down */ + TBool iClosing; + }; + + +NONSHARABLE_CLASS(CQoSMsgReader) : public CActive +/** +Active Object that receives messages from the QoS PRT and forwards them to the +IP Connection Provider + +@internalComponent + +@released Since v9.0 +*/ + { +public: + // Construction + static CQoSMsgReader* NewL(CIpSubConnectionProvider *aOwner, RInternalSocket& aSocket); + ~CQoSMsgReader(); + +protected: + // Construction + CQoSMsgReader(CIpSubConnectionProvider* aOwner, RInternalSocket& aSocket); + void ConstructL(); + + // Active Object Implmentation + void RunL(); + inline void DoCancel(); + +private: + /** Message Owner */ + CIpSubConnectionProvider* iOwner; + + /** Reference of Internal Socket */ + RInternalSocket& iSocket; + + /** Pointer to Buffer to receive data from QoS PRT */ + TPtr8 iRecvPtr; + + /** Buffer to receive data from QoS PRT */ + HBufC8* iRecvBuf; + + /** Flag Set when Active Object is shuttin down */ + TBool iClosing; + }; + +#include "qos_msg.inl" + +#endif // __QOS_MSG_H__