/**
* 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 <e32base.h>
#include <e32std.h>
#include <comms-infras/eintsock.h>
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<CQoSMsg> 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__