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

akonadi

  • Akonadi
  • ItemSync
Public Types | Signals | Public Member Functions | Protected Member Functions | List of all members
Akonadi::ItemSync Class Reference

#include <itemsync.h>

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

Public Types

enum  MergeMode { RIDMerge, GIDMerge }
 
enum  TransactionMode { SingleTransaction, MultipleTransactions, NoTransaction }
 
- Public Types inherited from Akonadi::Job
enum  Error {
  ConnectionFailed = UserDefinedError, ProtocolVersionMismatch, UserCanceled, Unknown,
  UserError = UserDefinedError + 42
}
 
typedef QList< Job * > List
 

Signals

void readyForNextBatch (int remainingBatchSize)
 
void transactionCommitted ()
 
- Signals inherited from Akonadi::Job
void aboutToStart (Akonadi::Job *job)
 
void writeFinished (Akonadi::Job *job)
 

Public Member Functions

 ItemSync (const Collection &collection, QObject *parent=0)
 
 ~ItemSync ()
 
int batchSize () const
 
void deliveryDone ()
 
ItemFetchScope & fetchScope ()
 
MergeMode mergeMode () const
 
void rollback ()
 
void setBatchSize (int)
 
void setDisableAutomaticDeliveryDone (bool disable)
 
void setFetchScope (ItemFetchScope &fetchScope)
 
void setFullSyncItems (const Item::List &items)
 
void setIncrementalSyncItems (const Item::List &changedItems, const Item::List &removedItems)
 
void setMergeMode (MergeMode mergeMode)
 
void setStreamingEnabled (bool enable)
 
void setTotalItems (int amount)
 
void setTransactionMode (TransactionMode mode)
 
- Public Member Functions inherited from Akonadi::Job
 Job (QObject *parent=0)
 
virtual ~Job ()
 
virtual QString errorString () const
 
void start ()
 

Protected Member Functions

void doStart ()
 
void slotResult (KJob *job)
 
virtual AKONADI_DEPRECATED bool updateItem (const Item &storedItem, Item &newItem)
 
- Protected Member Functions inherited from Akonadi::Job
virtual bool addSubjob (KJob *job)
 
virtual void doHandleResponse (const QByteArray &tag, const QByteArray &data)
 
virtual bool doKill ()
 
void emitWriteFinished ()
 
virtual bool removeSubjob (KJob *job)
 

Additional Inherited Members

- Protected Slots inherited from Akonadi::Job

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 54 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 170 of file itemsync.h.

Constructor & Destructor Documentation

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

Creates a new item synchronizer.

Parameters
collectionThe collection we are syncing.
parentThe parent object.

Definition at line 185 of file itemsync.cpp.

ItemSync::~ItemSync ( )

Destroys the item synchronizer.

Definition at line 192 of file itemsync.cpp.

Member Function Documentation

int ItemSync::batchSize ( ) const

Minimum number of items required to start processing in streaming mode.

When MultipleTransactions is used, one transaction per batch will be created.

See also
setBatchSize()
Since
4.14

Definition at line 534 of file itemsync.cpp.

void ItemSync::deliveryDone ( )

Notify ItemSync that all remote items have been delivered.

Only call this in streaming mode.

Definition at line 494 of file itemsync.cpp.

void ItemSync::doStart ( )
protectedvirtual

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.

Definition at line 277 of file itemsync.cpp.

ItemFetchScope & 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

Definition at line 271 of file itemsync.cpp.

ItemSync::MergeMode ItemSync::mergeMode ( ) const

Returns current merge mode.

See also
setMergeMode()
Since
5.1

Definition at line 546 of file itemsync.cpp.

void Akonadi::ItemSync::readyForNextBatch ( int  remainingBatchSize)
signal

Signals the resource that new items can be delivered.

Parameters
remainingBatchSizethe number of items required to complete the batch (typically the same as batchSize())
Since
4.14
void 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

Definition at line 517 of file itemsync.cpp.

void ItemSync::setBatchSize ( int  size)

Set the batch size.

The default is 10.

Note
You must call this method before starting the sync, changes afterwards lead to undefined results.
See also
batchSize()
Since
4.14

Definition at line 540 of file itemsync.cpp.

void ItemSync::setDisableAutomaticDeliveryDone ( bool  disable)

Disables the automatic completion of the item sync, based on the number of delivered items.

This ensures that the item sync only finishes once deliveryDone() is called, while still making it possible to use the progress reporting of the ItemSync.

Note
You must call this method before starting the sync, changes afterwards lead to undefined results.
See also
setTotalItems
Since
4.14

Definition at line 235 of file itemsync.cpp.

void 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()

Definition at line 265 of file itemsync.cpp.

void 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.

Definition at line 196 of file itemsync.cpp.

void 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.

Definition at line 241 of file itemsync.cpp.

void ItemSync::setMergeMode ( MergeMode  mergeMode)

Set what merge method should be used for next ItemSync run.

By default ItemSync uses RIDMerge method.

See ItemCreateJob for details on Item merging.

Note
You must call this method before starting the sync, changes afterwards lead to undefined results.
See also
mergeMode
Since
4.14.11

Definition at line 552 of file itemsync.cpp.

void 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

Definition at line 488 of file itemsync.cpp.

void ItemSync::setTotalItems ( int  amount)

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

Warning
By default the item sync will automatically end once sufficient items have been provided. To disable this use setDisableAutomaticDeliveryDone
See also
setDisableAutomaticDeliveryDone
Parameters
amountThe amount of items in total.

Definition at line 220 of file itemsync.cpp.

void ItemSync::setTransactionMode ( ItemSync::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.
Parameters
modethe transaction mode to use
Since
4.6

Definition at line 528 of file itemsync.cpp.

void Akonadi::ItemSync::transactionCommitted ( )
signal

Emitted whenever a transaction is committed. This is for testing only.

Since
4.14
bool ItemSync::updateItem ( const Item &  storedItem,
Item &  newItem 
)
protectedvirtual

Reimplement this method to customize the synchronization algorithm.

Parameters
storedItemthe item as it is now
newItemthe item as it should be You can update the newItem according to the storedItem before it gets committed.
Deprecated:
This method is disabled internally.

Definition at line 281 of file itemsync.cpp.


The documentation for this class was generated from the following files:
  • itemsync.h
  • itemsync.cpp
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:38:05 by doxygen 1.8.7 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 API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2

Search



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