diff -r 000000000000 -r b16258d2340f applayerprotocols/httpexamples/nwsswsptrhnd/CNwssWspCOEventDispatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httpexamples/nwsswsptrhnd/CNwssWspCOEventDispatcher.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,179 @@ +// Copyright (c) 2001-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: +// + +/** + @file CNwssWspCOEventDispatcher.h + @warning : This file contains Rose Model ID comments - please do not delete +*/ + +#ifndef __CNWSSWSPCOEVENTDISPATCHER_H__ +#define __CNWSSWSPCOEVENTDISPATCHER_H__ + +// System includes +#include +#include + + +// Forward declarations +class MNwssSessionEventHandler; +class MNwssTransactionEventHandler; +class MNwssOomHandler; + +/** + @since 7.0 + This class acts as a hub for the receipt of Connection-Oriented WSP session and + transaction events. It is an Active Object, and each time the method ::Start() + is called, it requests an event from the NWSS WAP Stack. Upon completion of + the request, the incoming event is examined, and its type (session or + transaction) is determined. A call-back method appropriate to the event type is + called on either the MNwssTransactionEventHandler or MNwssSessionEventHandler + interfaces that 'observes' the object. In the case of transaction events, the + NWSS WAP Stack's transaction handle (a RWSPCOTrans object) is passed through + along with the event. + */ + +//##ModelId=3BBD8CBA0288 +class CNwssWspCOEventDispatcher : public CActive + { +public: // methods + +/** + Factory construction of CNwssWspCOEventDispatcher. + @since 7.0 + @param aWspSession (in) The caller's Wap Stack CO WSP session handle. + @param aSessEventHnd (in) An interface to be used for notifications + of received session events. + @param aTransEventHnd (in) An interface to be used for notifications + of received transaction events. + @param aOutOfMemoryHnd (in) An interface to be used in the event of OOM occurring + whilst the session or transaction event handlers were + handling a WAP stack event. + @return The newly constructed CNwssWspCOEventDispatcher instance. + @leave System error codes, e.g. KErrNoMemory. + */ + //##ModelId=3C4C49B90178 + static CNwssWspCOEventDispatcher* NewL(RWSPCOConn& aWspSession, + MNwssSessionEventHandler& aSessEventHnd, + MNwssTransactionEventHandler& aTransEventHnd, + MNwssOomHandler& aOutOfMemoryHnd); + +/** + Destructor. + @since 7.0 + */ + //##ModelId=3C4C49B900E2 + virtual ~CNwssWspCOEventDispatcher(); + +/** + Start waiting for stack events. The dispatcher goes active, + and will repeatedly request events from the WAP Stack, until + it is subsequently cancelled. + @since 7.0 + */ + //##ModelId=3C4C49B9007D + void Start(); + +private: // methods from CActive + +/** + Called when the active object fires, ie. its asynchronous + request has completed + @since 7.0 + @leave System error codes, e.g. KErrNoMemory and internal error codes + generated for WTLS handshake failures, see + */ + //##ModelId=3C4C49B803BB + virtual void RunL(); + +/** + Called if RunL leaves, to allow the AO to handle the error before + the scheduler does + @since 7.0 + @param aError (in) The error code to be handled, which RunL() left with + @return A final error code, should aError not have been handled, which the + active scheduler handles. + */ + //##ModelId=3C4C49B8025D + virtual TInt RunError(TInt aError); + +/** + Cancellation protocol for the active object. It cancels the + request GetNextEvent() request it keeps outstanding with the + WAP Stack. + @since 7.0 + */ + //##ModelId=3C4C49B801B2 + virtual void DoCancel(); + +private: // methods + +/** + Normal constructor. Keeps references to the supplied arguments. + @since 7.0 + @param aWspSession (in) The caller's Wap Stack CO WSP session handle. + @param aSessEventHnd (in) An interface to be used for notifications + of received session events. + @param aTransEventHnd (in) An interface to be used for notifications + of received transaction events. + @param aOutOfMemoryHnd (in) An interface to be used in the event of OOM occurring + whilst the session or transaction event handlers were + handling a WAP stack event. + */ + //##ModelId=3C4C49B70324 + CNwssWspCOEventDispatcher(RWSPCOConn& aWspSession, + MNwssSessionEventHandler& aSessEventHnd, + MNwssTransactionEventHandler& aTransEventHnd, + MNwssOomHandler& aOutOfMemoryHnd); + +private: // attributes + + /** The WSP Session handle. This is not owned, opened or closed in this class. + */ + //##ModelId=3C4C49B702AD + RWSPCOConn& iWspSession; + + /** Handler for session events received at the dispatcher. + */ + //##ModelId=3C4C49B702A1 + MNwssSessionEventHandler& iSessEventHnd; + + /** Handler for transaction events received at the dispatcher. + */ + //##ModelId=3C4C49B7028D + MNwssTransactionEventHandler& iTransEventHnd; + + /** Handler for out-of-memory situations. + */ + //##ModelId=3C9B09460197 + MNwssOomHandler& iOutOfMemoryHnd; + + /** The event that has occured + */ + //##ModelId=3C4C49B70279 + RWSPCOConn::TEvent iWspEvent; + + /** The transaction handle on which transaction events occur + */ + //##ModelId=3C4C49B70215 + RWSPCOTrans iTransaction; + + /** The ID of the last transaction on which an event was received + */ + //##ModelId=3C9B09460183 + RWSPCOTrans::TTransID iTrId; + }; + + +#endif // __CNWSSWSPCOEVENTDISPATCHER_H__