DeeTransaction

DeeTransaction — A self contained change set for a DeeModel

Synopsis

#include <dee.h>

#define             DEE_TRANSACTION_ERROR
struct              DeeTransaction;
struct              DeeTransactionClass;
enum                DeeTransactionError;
gboolean            dee_transaction_commit              (DeeTransaction *self,
                                                         GError **error);
GQuark              dee_transaction_error_quark         (void);
DeeModel *          dee_transaction_get_target          (DeeTransaction *self);
gboolean            dee_transaction_is_committed        (DeeTransaction *self);
DeeModel *          dee_transaction_new                 (DeeModel *target);

Object Hierarchy

  GObject
   +----DeeSerializableModel
         +----DeeTransaction

Implemented Interfaces

DeeTransaction implements DeeModel and DeeSerializable.

Properties

  "target"                   DeeModel*             : Read / Write / Construct Only

Description

DeeTransaction is a self contained change set related to some particular DeeModel called the target model.

The transaction instance itself implements the DeeModel interface in a way that overlays the target model. In database terms the target model has isolation level READ_COMMITTED. Meaning that the target model is not modified until you call dee_transaction_commit().

To flush the changes to the target model call dee_transaction_commit(). After committing the transaction will become invalid and must be freed with g_object_unref(). It is a programming error to try and access a transaction that has been committed with the sole exception of calling dee_transaction_is_committed().

Details

DEE_TRANSACTION_ERROR

#define DEE_TRANSACTION_ERROR dee_transaction_error_quark()

Error domain for the DeeTransaction. Error codes will be from the DeeTransactionError enumeration


struct DeeTransaction

struct DeeTransaction;

All fields in the DeeTransaction structure are private and should never be accessed directly


struct DeeTransactionClass

struct DeeTransactionClass {
};


enum DeeTransactionError

typedef enum {
  DEE_TRANSACTION_ERROR_CONCURRENT_MODIFICATION = 1,
  DEE_TRANSACTION_ERROR_COMMITTED = 2
} DeeTransactionError;

Error codes for the DeeTransaction class. These codes will be set when the error domain is DEE_TRANSACTION_ERROR.

DEE_TRANSACTION_ERROR_CONCURRENT_MODIFICATION: The target model has been modified while the transaction was open.

DEE_TRANSACTION_ERROR_COMMITTED: Raised when someone tries to commit a transaction that has already been committed

DEE_TRANSACTION_ERROR_CONCURRENT_MODIFICATION

DEE_TRANSACTION_ERROR_COMMITTED


dee_transaction_commit ()

gboolean            dee_transaction_commit              (DeeTransaction *self,
                                                         GError **error);

Apply a transaction to its target model. After this call the transaction is invalidated and must be freed with g_object_unref().

self :

The transaction to commit

error :

Location to return a GError in or NULL to disregard errors. [allow-none]

Returns :

TRUE if and only if the transaction successfully applies to :target.

dee_transaction_error_quark ()

GQuark              dee_transaction_error_quark         (void);


dee_transaction_get_target ()

DeeModel *          dee_transaction_get_target          (DeeTransaction *self);

Get the target model of a transaction. This is just a convenience method for accessing the :target property.

self :

The transaction to retrieve the target model for

Returns :

The target model. [transfer none]

dee_transaction_is_committed ()

gboolean            dee_transaction_is_committed        (DeeTransaction *self);

Check if a DeeTransaction has been committed. This method is mainly for debugging and testing purposes.

self :

The transaction to inspect

Returns :

TRUE if and only if dee_transaction_commit() has completed successfully on the transaction.

dee_transaction_new ()

DeeModel *          dee_transaction_new                 (DeeModel *target);

target :

The DeeModel the transaction applies against

Returns :

A newly allocated DeeTransaction. Free with g_object_unref() when done using it - no matter if you call dee_transaction_commit() or not. [transfer full][type Dee.Transaction]

Property Details

The "target" property

  "target"                   DeeModel*             : Read / Write / Construct Only

Target model.