• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdepimlibs-4.8.3 API Reference
  • KDE Home
  • Contact Us
 

akonadi

  • Akonadi
  • ItemSync
Public Types | Public Member Functions | Protected Member Functions
Akonadi::ItemSync Class Reference

#include <itemsync.h>

Inheritance diagram for Akonadi::ItemSync:
Inheritance graph
[legend]

List of all members.

Public Types

enum  TransactionMode { SingleTransaction, MultipleTransactions, NoTransaction }

Public Member Functions

 ItemSync (const Collection &collection, QObject *parent=0)
 ~ItemSync ()
void deliveryDone ()
ItemFetchScope & fetchScope ()
void rollback ()
void setFetchScope (ItemFetchScope &fetchScope)
void setFullSyncItems (const Item::List &items)
void setIncrementalSyncItems (const Item::List &changedItems, const Item::List &removedItems)
void setStreamingEnabled (bool enable)
void setTotalItems (int amount)
void setTransactionMode (TransactionMode mode)

Protected Member Functions

void doStart ()
void slotResult (KJob *job)
virtual bool updateItem (const Item &storedItem, Item &newItem)

Detailed Description

Syncs between items known to a client (usually a resource) and the Akonadi storage.

Remote Id must only be set by the resource storing the item, other clients should leave it empty, since the resource responsible for the target collection will be notified about the addition and then create a suitable remote Id.

There are two different forms of ItemSync usage:

  • Full-Sync: meaning the client provides all valid items, i.e. any item not part of the list but currently stored in Akonadi will be removed
  • Incremental-Sync: meaning the client provides two lists, one for items which are new or modified and one for items which should be removed. Any item not part of either list but currently stored in Akonadi will not be changed.
Note:
This is provided for convenience to implement "save all" like behavior, however it is strongly recommended to use single item jobs whenever possible, e.g. ItemCreateJob, ItemModifyJob and ItemDeleteJob
Author:
Tobias Koenig tokoe.nosp@m.@kde.nosp@m..org

Definition at line 53 of file itemsync.h.


Member Enumeration Documentation

enum Akonadi::ItemSync::TransactionMode

Transaction mode used by ItemSync.

Since:
4.6
Enumerator:
SingleTransaction 

Use a single transaction for the entire sync process (default), provides maximum consistency ("all or nothing") and best performance.

MultipleTransactions 

Use one transaction per chunk of delivered items, good compromise between the other two when using streaming.

NoTransaction 

Use no transaction at all, provides highest responsiveness (might therefore feel faster even when actually taking slightly longer), no consistency guaranteed (can fail anywhere in the sync process)

Definition at line 158 of file itemsync.h.


Constructor & Destructor Documentation

Akonadi::ItemSync::ItemSync ( const Collection &  collection,
QObject *  parent = 0 
) [explicit]

Creates a new item synchronizer.

Parameters:
collectionThe collection we are syncing.
parentThe parent object.
Akonadi::ItemSync::~ItemSync ( )

Destroys the item synchronizer.


Member Function Documentation

void Akonadi::ItemSync::deliveryDone ( )

Notify ItemSync that all remote items have been delivered.

Only call this in streaming mode.

void Akonadi::ItemSync::doStart ( ) [protected, virtual]

This method must be reimplemented in the concrete jobs.

It will be called after the job has been started and a connection to the Akonadi backend has been established.

Implements Akonadi::Job.

ItemFetchScope& Akonadi::ItemSync::fetchScope ( )

Returns the item fetch scope.

Since this returns a reference it can be used to conveniently modify the current scope in-place, i.e. by calling a method on the returned reference without storing it in a local variable. See the ItemFetchScope documentation for an example.

Returns:
a reference to the current item fetch scope
See also:
setFetchScope() for replacing the current item fetch scope
void Akonadi::ItemSync::rollback ( )

Aborts the sync process and rolls back all not yet committed transactions.

Use this if an external error occurred during the sync process (such as the user canceling it).

Since:
4.5
void Akonadi::ItemSync::setFetchScope ( ItemFetchScope &  fetchScope)

Sets the item fetch scope.

The ItemFetchScope controls how much of an item's data is fetched from the server, e.g. whether to fetch the full item payload or only meta data.

Parameters:
fetchScopeThe new scope for item fetch operations.
See also:
fetchScope()
void Akonadi::ItemSync::setFullSyncItems ( const Item::List &  items)

Sets the full item list for the collection.

Usually the result of a full item listing.

Warning:
If the client using this is a resource, all items must have a valid remote identifier.
Parameters:
itemsA list of items.
void Akonadi::ItemSync::setIncrementalSyncItems ( const Item::List &  changedItems,
const Item::List &  removedItems 
)

Sets the item lists for incrementally syncing the collection.

Usually the result of an incremental remote item listing.

Warning:
If the client using this is a resource, all items must have a valid remote identifier.
Parameters:
changedItemsA list of items added or changed by the client.
removedItemsA list of items deleted by the client.
void Akonadi::ItemSync::setStreamingEnabled ( bool  enable)

Enable item streaming.

Item streaming means that the items delivered by setXItems() calls are delivered in chunks and you manually indicate when all items have been delivered by calling deliveryDone().

Parameters:
enabletrue to enable item streaming
void Akonadi::ItemSync::setTotalItems ( int  amount)

Set the amount of items which you are going to return in total by using the setFullSyncItems() method.

Parameters:
amountThe amount of items in total.
void Akonadi::ItemSync::setTransactionMode ( TransactionMode  mode)

Set the transaction mode to use for this sync.

Note:
You must call this method before starting the sync, changes afterwards lead to undefined results.
Since:
4.6
virtual bool Akonadi::ItemSync::updateItem ( const Item &  storedItem,
Item &  newItem 
) [protected, virtual]

Reimplement this method to customize the synchronization algorithm.

You can update the newItem according to the storedItem before it gets committed.


The documentation for this class was generated from the following file:
  • itemsync.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2012 The KDE developers.
Generated on Tue May 8 2012 00:00:50 by doxygen 1.8.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

akonadi

Skip menu "akonadi"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Modules
  • Related Pages

kdepimlibs-4.8.3 API Reference

Skip menu "kdepimlibs-4.8.3 API Reference"
  • akonadi
  •   contact
  •   kmime
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal