diff -r f742655b05bf -r d38647835c2e voipplugins/sipconnectionprovider/inc/scpservice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voipplugins/sipconnectionprovider/inc/scpservice.h Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2007 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: +* +*/ + + +#ifndef C_SCPSERVICE_H +#define C_SCPSERVICE_H + +#include +#include + +#include "scpdefs.h" + +/** + * SCP service info. + * @lib sipconnectionprovider.dll + */ +class CScpSubService; +class CScpServiceStorage; +class CScpProfileHandler; +class CScpSipConnection; + +class CScpService : public CBase + { +public: + + /** + * Constructor + * @param aId Internal id + * @param aServiceId Service Id + */ + static CScpService* NewL( TInt aId, + TInt aServiceId, + CScpProfileHandler& aProfileHandler, + CScpServiceStorage& aServiceStorage, + MCchServiceObserver& aServiceObserver ); + + /** + * Destructor + */ + ~CScpService(); + + /** + * Returns internal id of this service + * @return Id + */ + TInt Id() const; + + /** + * Returns profile handler + */ + CScpProfileHandler& ProfileHandler() const; + + /** + * Returns service storage + */ + CScpServiceStorage& ServiceStorage() const; + + /** + * Returns service observer + */ + MCchServiceObserver& ServiceObserver() const; + + /** + * Adds a new subservice to the service and returns it + * @return New subservice + */ + CScpSubService& AddSubServiceL( TCCHSubserviceType aSubServiceType ); + + /** + * Returns count of subservices for this service + * @returns Count of subservices + */ + TInt SubServiceCount() const; + + /** + * Fills all internal ids of the subservices within this service + * to the given aray + * @param aIds Id array to be filled + */ + void GetSubServiceIds( RArray& aIds ) const; + + /** + * Returns a subservice with the given id + * @param aId Internal id of the subservice + */ + CScpSubService* GetSubService( TInt aId ) const; + + /** + * Removes a subservice from this service with given id + * @param aId Internal id of the subservice + * @return KErrNone if successfull + */ + TInt RemoveSubService( TInt aId ); + + /** + * Returns service id of this service + * @return service id + */ + TInt ServiceId() const; + + /** + * Sets service id for this service + * @param aServiceId Service Id + */ + void SetServiceId( TInt aServiceId ); + + /** + * Returns state of the service by sub service type + * @param aSubServiceType Sub service type + * @param aState Result state + * @return Symbian error codes + */ + TInt State( TCCHSubserviceType aSubServiceType, + TCCHSubserviceState& aState ) const; + + /** + * Queries if this service contains a subservice with the given type + * @return ETrue if sub service with given type exists + */ + TBool ContainsSubServiceType( TCCHSubserviceType aSubServiceType ) const; + + /** + * Returns a sub service from this service based on a type + * @param a Type + * @return Sub service + */ + CScpSubService* GetSubServiceByType( TCCHSubserviceType aSubServiceType ) const; + + /** + * Checks if sub services of this service contain same sip profile + * @return ETrue if they contain the same profile + */ + TBool SubServicesContainSameSipProfile() const; + + /** + * Sets reservation status for the service based on type + * @param aReserved Reserved + * @param aSubServiceType Sub service type + * @return Error code + */ + TInt SetReserved( TBool aReserved, TCCHSubserviceType aSubServiceType ); + + /** + * Returns reservation status for the service based on type + * @param aSubServiceType Sub service type + * @return ETrue if reserved + */ + TBool IsReserved( TCCHSubserviceType aSubServiceType ) const; + + /** + * Set access point for the service + * @param aSubServiceType Sub service type + * @param aAccessPointType Access point type + * @param aAccessPointId Id + * @return Error code + */ + TInt SetAccessPointId( TCCHSubserviceType aSubServiceType, + TScpAccessPointType aAccessPointType, + TInt aAccessPointId ); + + /** + * Checks is all subservices in disabled state + * @return TBool ETrue if all service's subservices are in disabled state + */ + TBool IsAllSubservicesDisabled() const; + + /** + * Change all service's subservices last error to given error + * @param aError error which to be set + */ + void ChangeLastReportedErrors( const TInt aError ); + +private: + + /** + * Default constructor hidden + * @param aId Internal id + * @param aServiceId Service Id + */ + CScpService( TInt aId, + TInt aServiceId, + CScpProfileHandler& aProfileHandler, + CScpServiceStorage& aServiceStorage, + MCchServiceObserver& aServiceObserver ); + + /** + * Generates new internal sub service id + * @return New id + */ + TInt GenerateNewSubServiceId(); + + /** + * Checks if the service's access point can be modified + * @param aSubServiceType Sub service type + * @return ETrue if modifiable + */ + TBool IsAccessPointModifiable( TCCHSubserviceType aSubServiceType ) const; + + /** + * Gets sip connection that the service is using + * @param aSubServiceType Sub service type + * @param aSipConnectionCreated ETrue if the connection was created + * @return Sip connection. + */ + CScpSipConnection* GetSipConnection( TCCHSubserviceType aSubServiceType, + TBool& aSipConnectionCreated ); + +private: + + /** + * Internal sub service id + */ + TInt iId; + + /** + * Service id. + */ + TInt iServiceId; + + /** + * Profile handler. + */ + CScpProfileHandler& iProfileHandler; + + /** + * Service storage + */ + CScpServiceStorage& iServiceStorage; + + /** + * Service Observer + */ + MCchServiceObserver& iServiceObserver; + + /** + * Default sip profile. + */ + TInt iDefaultSipProfileId; + + /** + * Sub services of this service + */ + RPointerArray< CScpSubService > iSubServices; + + /** + * Counter for creating unique internal sub service ids + */ + TInt iSubServiceIdCounter; + }; + + + +#endif // C_SCPSERVICE_H