diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/pychrysalide/analysis/db/client.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/plugins/pychrysalide/analysis/db/client.c b/plugins/pychrysalide/analysis/db/client.c index e5b67da..afece26 100644 --- a/plugins/pychrysalide/analysis/db/client.c +++ b/plugins/pychrysalide/analysis/db/client.c @@ -54,6 +54,9 @@ static PyObject *py_hub_client_save(PyObject *, PyObject *); /* Active les éléments en amont d'un horodatage donné. */ static PyObject *py_hub_client_set_last_active(PyObject *, PyObject *); +/* Fournit l'identifiant de l'instantané courant. */ +static PyObject *py_hub_client_get_current_snapshot(PyObject *, void *); + /****************************************************************************** @@ -332,6 +335,102 @@ static PyObject *py_hub_client_set_last_active(PyObject *self, PyObject *args) /****************************************************************************** * * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Fournit l'identifiant de l'instantané courant. * +* * +* Retour : Identifiant d'instantané ou None. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_hub_client_get_current_snapshot(PyObject *self, void *closure) +{ + PyObject *result; /* Valeur à retourner */ + GHubClient *client; /* Version native du serveur */ + snapshot_id_t id; /* Identifiant à transmettre */ + bool status; /* Validité de cet identifiant */ + +#define HUB_CLIENT_CURRENT_SNAPSHOT_ATTRIB PYTHON_GETSET_DEF_FULL \ +( \ + current_snapshot, py_hub_client, \ + "Identifier of the current snapshot, provided as a string." \ + "\n" \ + "The returned value is a cached version of the value stored at" \ + " server side. Thus, defining a new current snapshot is" \ + " successful as soon as the request to this server is sent." \ +) + + client = G_HUB_CLIENT(pygobject_get(self)); + + status = g_hub_client_get_current_snapshot(client, &id); + + if (status) + result = PyUnicode_FromString(snapshot_id_as_string(&id)); + + else + { + result = Py_None; + Py_INCREF(result); + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* value = valeur fournie à intégrer ou prendre en compte. * +* closure = adresse non utilisée ici. * +* * +* Description : Définit l'identifiant de l'instantané courant. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static int py_hub_client_set_current_snapshot(PyObject *self, PyObject *value, void *closure) +{ + int ret; /* Bilan d'analyse */ + void *raw; /* Valeur brute d'identifiant */ + snapshot_id_t id; /* Identifiant reconnu */ + bool status; /* Bilan d'une conversion */ + GHubClient *client; /* Version native du serveur */ + + ret = PyUnicode_Check(value); + if (!ret) return -1; + + raw = PyUnicode_DATA(value); + + status = init_snapshot_id_from_text(&id, raw); + if (!status) + { + PyErr_SetString(PyExc_TypeError, _("provided value is not a valid snapshot identifier.")); + return -1; + } + + client = G_HUB_CLIENT(pygobject_get(self)); + + status = g_hub_client_set_current_snapshot(client, &id); + if (!status) + { + PyErr_SetString(PyExc_TypeError, "unable to send the provided snapshot identifier"); + return -1; + } + + return 0; + +} + + +/****************************************************************************** +* * * Paramètres : - * * * * Description : Fournit un accès à une définition de type à diffuser. * @@ -353,6 +452,7 @@ PyTypeObject *get_python_hub_client_type(void) }; static PyGetSetDef py_hub_client_getseters[] = { + HUB_CLIENT_CURRENT_SNAPSHOT_ATTRIB, { NULL } }; |