/** Copyright (c) 2003 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: This file contains the header file of the CCbsRecCollector class.* * CCbsSession class represents a server-side CbsClient/CbsMcnClient session.**/#ifndef CCBSSESSION_H#define CCBSSESSION_H// INCLUDES#include <e32base.h>#include "CbsCommon.h"// FORWARD DECLARATIONSclass CCbsServer;class CCbsObject;class CObjectConIx;// CLASS DECLARATION /*** This class represents a server-side session.** The instances of the class are responsible of handling * the requests of client-side RCbs and RCbsMcnSession objects.** This class contains handlers for opening subsessions and* retrieving some general CBS information.** Client will be panicked, if a request is invalid.*/class CCbsSession : public CSession2 { public: // New functions /** * Creates a new instance of the class. * * @param aServer Server * @return New CCbsSession instance */ static CSession2* NewL( CCbsServer& aServer ); /** * Destructor. */ ~CCbsSession(); /** * Finds the appropriate message service method and calls it to * handle the request. * * @param aMessage Handle to the message that * contains the request. */ void DispatchMessageL( const RMessage2& aMessage ); /** * Panics the client. * * @param aPanic Identifies the reason for panic. */ void PanicClient( TCbsSessionPanic aPanic ) const; /** * Returns the number of new topics detected. * * The counter will be reset after a call. * * @return Number of topics detected. */ TInt TotalTopicsDetected(); /** * Returns the last message arrived from the client * * @return Current message */ RMessage2& Message(); CCbsServer& Server(); public: // From CSession2 /** * Handles the received message. * * The method simply calls DispatchMessageL (see above) under * trap harness. * * @param aMessage Handle to the message. */ void ServiceL( const RMessage2& aMessage ); private: /** * Constructor. * * @param aServer Reference to the server. */ CCbsSession( CCbsServer& aServer ); /** * Finalizes the construction. */ void ConstructL(); /** * Handles the session-based requests. * * @param aMessage A handle to the message. * @return ETrue if the request was handled in * the main session. */ TBool HandleSessionRequestsL( const RMessage2& aMessage ); /** * Create a new subsession, settings, for the session. */ void NewSettingsL(); /** * Create a new subsession, topic list, for the session. */ void NewTopicListL(); /** * Create a new subsession, topic collection, for the session. */ void NewTopicCollectionL(); /** * Create a new subsession, topic messages, for the session. */ void NewTopicMessagesL(); /** * Create a new MCN subsession. */ void NewMcnSubsessionL(); /** * Return the current cell info message to the client. */ void GetCurrentMcnInfoL(); private: // Data /** * Reference to CCbsServer object. * iServer is a private member of CSharableSession so * we define a new name for CCbsServer pointer. */ CCbsServer& iCbsServer; /** * The last message arrived from the client * */ RMessage2 iCurrentMessage; };#endif // CCBSSESSION_H // End of File