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