mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
update event handling
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@4587 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
|
||||
#include "putil.h"
|
||||
|
||||
static short module = MOD_BACKEND;
|
||||
static short module = MOD_EVENT;
|
||||
|
||||
|
||||
/* ============================================================= */
|
||||
@@ -71,7 +71,6 @@ pgendEventsPending (Backend *bend)
|
||||
|
||||
if (!be) return FALSE;
|
||||
ENTER ("mypid=%d", be->my_pid);
|
||||
PWARN("mypid=%d", be->my_pid);
|
||||
|
||||
/* No need to handle events in single-modes */
|
||||
if ((MODE_SINGLE_UPDATE == be->session_mode) ||
|
||||
@@ -100,7 +99,6 @@ PWARN("mypid=%d", be->my_pid);
|
||||
}
|
||||
|
||||
PINFO ("notify event %s from pid=%d", note->relname, note->be_pid);
|
||||
PWARN ("notify event %s from pid=%d", note->relname, note->be_pid);
|
||||
|
||||
if (0 == strcasecmp ("gncTransaction", note->relname))
|
||||
{
|
||||
@@ -145,16 +143,42 @@ static gpointer
|
||||
get_event_cb (PGBackend *be, PGresult *result, int j, gpointer data)
|
||||
{
|
||||
GNCEngineEventType type;
|
||||
char * guid_str;
|
||||
GUID guid;
|
||||
GNCIdType obj_type;
|
||||
Timespec ts;
|
||||
Timespec *latest = (Timespec *) data;
|
||||
char change = (DB_GET_VAL("change",j))[0];
|
||||
|
||||
string_to_guid (DB_GET_VAL("guid",j), &guid);
|
||||
ts = gnc_iso8601_to_timespec_local (DB_GET_VAL("date_changed",j));
|
||||
guid_str = DB_GET_VAL("guid",j);
|
||||
string_to_guid (guid_str, &guid);
|
||||
|
||||
/* lets see if the local cache has this item in it */
|
||||
obj_type = xaccGUIDType (&guid);
|
||||
switch (obj_type)
|
||||
{
|
||||
case GNC_ID_NONE:
|
||||
case GNC_ID_NULL:
|
||||
PINFO ("unknown object for guid=%s", guid_str);
|
||||
break;
|
||||
case GNC_ID_ACCOUNT:
|
||||
break;
|
||||
case GNC_ID_TRANS:
|
||||
// pgendCopyTransactionToEngine (be, &guid);
|
||||
break;
|
||||
case GNC_ID_SPLIT:
|
||||
break;
|
||||
case GNC_ID_PRICE:
|
||||
break;
|
||||
default:
|
||||
PERR ("unknown guid type %d for guid=%s", obj_type, guid_str);
|
||||
}
|
||||
|
||||
/* get event timestamp */
|
||||
ts = gnc_iso8601_to_timespec_local (DB_GET_VAL("date_changed",j));
|
||||
if (0 < timespec_cmp(&ts, latest)) *latest = ts;
|
||||
|
||||
/* send out the event to listeners */
|
||||
switch (change)
|
||||
{
|
||||
case 'a': type = GNC_EVENT_CREATE; break;
|
||||
@@ -165,8 +189,7 @@ get_event_cb (PGBackend *be, PGresult *result, int j, gpointer data)
|
||||
return data;
|
||||
}
|
||||
|
||||
PINFO ("event %c for %s", change, DB_GET_VAL("guid",j));
|
||||
PWARN ("event %c for %s", change, DB_GET_VAL("guid",j));
|
||||
PINFO ("event %c for %s", change, guid_str);
|
||||
gnc_engine_generate_event (&guid, type);
|
||||
|
||||
return data;
|
||||
|
||||
Reference in New Issue
Block a user