williamr@2: /* williamr@2: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: API for clients of the Data Synchronization and Device Management. Used to start, stop and observe synchronization/device management session, and modify data synchronization/device management settings. williamr@2: * williamr@2: */ williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // SyncMLClient.h williamr@2: // v09 williamr@2: // williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: #ifndef __SYNCMLCLIENT_H__ williamr@2: #define __SYNCMLCLIENT_H__ williamr@2: // williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: // williamr@2: class CClientSessionData; williamr@2: class CSmlActiveCallback; williamr@2: class CSyncMLTransportPropertiesArray; williamr@2: class MSyncMLEventObserver; williamr@2: class MSyncMLProgressObserver; williamr@2: // williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLSession williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLSession : public RSessionBase williamr@2: /** williamr@2: A client handle to a SyncML Sync Agent session. williamr@2: williamr@2: An instance of this class must be created in order to instantiate any of williamr@2: the other client-side classes. williamr@2: williamr@2: Accessor methods are provided to enable clients to retrieve identifiers williamr@2: of current and queued jobs, and of available profiles, transports, and williamr@2: data providers. These IDs can be used to open handles on these objects williamr@2: in order to manipulate them. williamr@2: williamr@2: Clients can request notifications of events related to jobs, profiles, transports, williamr@2: and the SyncML Agent, and can request progress for the currently running job. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLSession(); williamr@2: IMPORT_C void OpenL(); williamr@2: williamr@2: IMPORT_C void RequestEventL(MSyncMLEventObserver&); williamr@2: IMPORT_C void CancelEvent(); williamr@2: williamr@2: IMPORT_C void RequestProgressL(MSyncMLProgressObserver&); williamr@2: IMPORT_C void CancelProgress(); williamr@2: williamr@2: IMPORT_C void CurrentJobL(TSmlJobId&, TSmlUsageType&) const; williamr@2: IMPORT_C void ListQueuedJobsL(RArray&, TSmlUsageType) const; williamr@2: williamr@2: IMPORT_C void ListProfilesL(RArray&, TSmlUsageType) const; williamr@2: IMPORT_C void ListTransportsL(RArray&) const; williamr@2: IMPORT_C void ListDataProvidersL(RArray&) const; williamr@2: williamr@2: IMPORT_C void DeleteProfileL(TSmlProfileId); williamr@2: williamr@2: IMPORT_C TSmlProtocolVersion ListProtocolVersionsL(TSmlUsageType, RArray&) const; williamr@2: williamr@2: IMPORT_C void Close(); williamr@2: /**@internalTechnology*/ williamr@2: IMPORT_C void _DbgTestSettingL(TInt aSetting, TInt aParam); williamr@2: williamr@2: private: williamr@2: void ReceiveArrayL(RArray&, TInt, TInt, TInt) const; williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: friend class CSmlActiveCallback; williamr@2: CSmlActiveCallback* iEventCallback; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLSession& operator=(const RSyncMLSession&); williamr@2: RSyncMLSession(const RSyncMLSession&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLSettings williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLSettings : public RSubSessionBase williamr@2: /** williamr@2: Handle to global settings for SyncML sync behaviour. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see TSmlGlobalSetting williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C void OpenL(RSyncMLSession&); williamr@2: williamr@2: IMPORT_C TInt GetValueL(TSmlGlobalSetting) const; williamr@2: IMPORT_C void SetValueL(TSmlGlobalSetting, TInt aValue); williamr@2: williamr@2: IMPORT_C void Close(); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLHistoryLog williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLHistoryLog : public RSubSessionBase williamr@2: /** williamr@2: Snapshot of history for a profile. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLHistoryLog(); williamr@2: IMPORT_C void OpenL(RSyncMLSession&, TSmlProfileId); williamr@2: IMPORT_C void SortEntries(CSyncMLHistoryEntry::TSortOrder); williamr@2: IMPORT_C void DeleteAllEntriesL(); williamr@2: IMPORT_C TSmlProfileId Profile() const; williamr@2: IMPORT_C TInt Count() const; williamr@2: IMPORT_C const CSyncMLHistoryEntry& Entry(TInt aIndex) const; williamr@2: inline const CSyncMLHistoryEntry& operator[](TInt aIndex) const; williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLHistoryLog& operator=(const RSyncMLHistoryLog&); williamr@2: RSyncMLHistoryLog(const RSyncMLHistoryLog&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: inline const CSyncMLHistoryEntry& RSyncMLHistoryLog::operator[](TInt aIndex) const williamr@2: /** williamr@2: Returns the entry at the specified index. williamr@2: @return The entry at the specified index. williamr@2: @param aIndex The index of the entry to retrieve. williamr@2: @publishedAll williamr@2: @released williamr@2: @pre The handle is open. williamr@2: */ williamr@2: { williamr@2: return Entry(aIndex); williamr@2: } williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLJobBase williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLJobBase : public RSubSessionBase williamr@2: /** williamr@2: Base class for a handle to a job. williamr@2: williamr@2: Data synchronisation and device management job handles are implemented williamr@2: by derived classes. williamr@2: williamr@2: Not intended for user derivation. Public derived classes: williamr@2: @see RSyncMLDataSyncJob williamr@2: @see RSyncMLDevManJob williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TSmlJobId Identifier() const; williamr@2: IMPORT_C TSmlProfileId Profile() const; williamr@2: IMPORT_C void Close(); williamr@2: protected: williamr@2: RSyncMLJobBase(); williamr@2: void GetJobL(TInt, TBool); williamr@2: protected: williamr@2: /** @internalTechnology */ williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLJobBase& operator=(const RSyncMLJobBase&); williamr@2: RSyncMLJobBase(const RSyncMLJobBase&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLProfileBase williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLProfileBase : public RSubSessionBase williamr@2: /** williamr@2: Base class for a handle to a SyncML profile. williamr@2: williamr@2: A profile encapsulates a relationship with a single SyncML remote server for williamr@2: either Device Management or Data Synchronisation. williamr@2: williamr@2: Not intended for user derivation. Derived classes: williamr@2: @see RSyncMLDataSyncProfile williamr@2: @see RSyncMLDevManProfile williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C void SetCreatorId(TSmlCreatorId); williamr@2: IMPORT_C void SetDisplayNameL(const TDesC&); williamr@2: IMPORT_C void SetUserNameL(const TDesC8&); williamr@2: IMPORT_C void SetPasswordL(const TDesC8&); williamr@2: IMPORT_C void SetServerIdL(const TDesC8&); williamr@2: IMPORT_C void SetServerPasswordL(const TDesC8&); williamr@2: IMPORT_C void SetSanUserInteractionL(TSmlServerAlertedAction); williamr@2: IMPORT_C void SetProtocolVersionL(TSmlProtocolVersion); williamr@2: williamr@2: IMPORT_C void DeleteConnectionL(TSmlTransportId); williamr@2: IMPORT_C void DeleteConnectionByConnectionIdL(TSmlConnectionId); williamr@2: williamr@2: IMPORT_C TSmlProfileId Identifier() const; williamr@2: IMPORT_C TSmlUsageType Type() const; williamr@2: IMPORT_C TSmlCreatorId CreatorId() const; williamr@2: IMPORT_C const TDesC& DisplayName() const; williamr@2: IMPORT_C const TDesC8& UserName() const; williamr@2: IMPORT_C const TDesC8& Password() const; williamr@2: IMPORT_C const TDesC8& ServerId() const; williamr@2: IMPORT_C const TDesC8& ServerPassword() const; williamr@2: IMPORT_C TSmlServerAlertedAction SanUserInteraction() const; williamr@2: IMPORT_C TSmlProtocolVersion ProtocolVersion() const; williamr@2: williamr@2: IMPORT_C void ListConnectionsL(RArray&) const; williamr@2: IMPORT_C void ListConnectionsByConnectionIdL(RArray&) const; williamr@2: williamr@2: IMPORT_C TBool IsReadOnly() const; williamr@2: IMPORT_C TBool DeleteAllowed() const; williamr@2: williamr@2: IMPORT_C void UpdateL(); williamr@2: williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: const RSessionBase Session(); williamr@2: protected: williamr@2: RSyncMLProfileBase(); williamr@2: void GetProfileL(TInt aSize); williamr@2: void ReceiveArrayL(RArray&, TInt, TInt) const; williamr@2: protected: williamr@2: /** @internalTechnology */ williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLProfileBase& operator=(const RSyncMLProfileBase&); williamr@2: RSyncMLProfileBase(const RSyncMLProfileBase&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLConnection williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLConnection : public RSubSessionBase williamr@2: /** williamr@2: Handle to data defining a connection to a remote SyncML server in the context of a profile. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLConnection(); williamr@2: IMPORT_C void CreateL(RSyncMLProfileBase&, TSmlTransportId); williamr@2: IMPORT_C void OpenL(RSyncMLProfileBase&, TSmlTransportId); williamr@2: IMPORT_C void OpenByConnectionIdL(RSyncMLProfileBase&, TSmlConnectionId); williamr@2: williamr@2: IMPORT_C TSmlTransportId Identifier() const; williamr@2: IMPORT_C TSmlProfileId Profile() const; williamr@2: IMPORT_C TSmlConnectionId ConnectionId() const; williamr@2: williamr@2: IMPORT_C TUint Priority() const; williamr@2: IMPORT_C TUint RetryCount() const; williamr@2: IMPORT_C const TDesC8& ServerURI() const; williamr@2: IMPORT_C const TDesC8& GetPropertyL(const TDesC8& aName) const; williamr@2: williamr@2: IMPORT_C void SetPriority(TUint); williamr@2: IMPORT_C void SetRetryCount(TUint); williamr@2: IMPORT_C void SetServerURIL(const TDesC8&); williamr@2: IMPORT_C void SetPropertyL(const TDesC8& aName, const TDesC8& aValue); williamr@2: williamr@2: IMPORT_C TBool IsReadOnly() const; williamr@2: IMPORT_C void UpdateL(); williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLConnection& operator=(const RSyncMLConnection&); williamr@2: RSyncMLConnection(const RSyncMLConnection&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // RSyncMLTransport williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: class RSyncMLTransport : public RSubSessionBase williamr@2: /** williamr@2: Handle to information about an available SyncML transport. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C RSyncMLTransport(); williamr@2: IMPORT_C void OpenL(RSyncMLSession&, TSmlTransportId); williamr@2: williamr@2: IMPORT_C TSmlTransportId Identifier() const; williamr@2: IMPORT_C const TDesC& DisplayName() const; williamr@2: williamr@2: IMPORT_C TBool SupportsCapability(TSmlTransportCap) const; williamr@2: IMPORT_C const CSyncMLTransportPropertiesArray& Properties() const; williamr@2: williamr@2: IMPORT_C void StartListeningL() const; // Check ESmlCapCanListen supported first. williamr@2: IMPORT_C void StopListeningL() const; williamr@2: williamr@2: IMPORT_C void Close(); williamr@2: williamr@2: private: williamr@2: mutable CClientSessionData* iData; williamr@2: private: williamr@2: // Prohibited. williamr@2: RSyncMLTransport& operator=(const RSyncMLTransport&); williamr@2: RSyncMLTransport(const RSyncMLTransport&); williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // TSmlOpenMode williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: enum TSmlOpenMode williamr@2: /** williamr@2: Defines the access mode for opening a handle to a SyncML profile. williamr@2: */ williamr@2: { williamr@2: /** williamr@2: Open for read-only access to data. williamr@2: williamr@2: @capability ReadDeviceData williamr@2: @Ref void RSyncMLDataSyncProfile::OpenL(RSyncMLSession& aSession, TSmlProfileId aId, TSmlOpenMode aMode) williamr@2: */ williamr@2: ESmlOpenRead, williamr@2: williamr@2: /** williamr@2: Open for read and write access to data. williamr@2: williamr@2: @capability ReadDeviceData williamr@2: @capability WriteDeviceData williamr@2: @Ref void RSyncMLDataSyncProfile::OpenL(RSyncMLSession& aSession, TSmlProfileId aId, TSmlOpenMode aMode) williamr@2: */ williamr@2: ESmlOpenReadWrite williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: // Panic codes. williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: enum TSyncMLClientPanic williamr@2: { williamr@2: ESmlClientPanicSessionNotOpen, williamr@2: ESmlClientPanicSessionAlreadyOpen, williamr@2: ESmlClientPanicEventAlreadyRequested williamr@2: }; williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: /////////////////////////////////////////////////////////////////////////////// williamr@2: #endif