Rename persist retain_add to retain_set

This commit is contained in:
Roger A. Light
2022-03-01 20:30:26 +00:00
parent c985736866
commit cbb01193a0
16 changed files with 38 additions and 37 deletions

View File

@@ -79,7 +79,7 @@ enum mosquitto_plugin_event {
MOSQ_EVT_PERSIST_BASE_MSG_ADD = 14, MOSQ_EVT_PERSIST_BASE_MSG_ADD = 14,
MOSQ_EVT_PERSIST_BASE_MSG_DELETE = 15, MOSQ_EVT_PERSIST_BASE_MSG_DELETE = 15,
MOSQ_EVT_PERSIST_BASE_MSG_LOAD = 16, MOSQ_EVT_PERSIST_BASE_MSG_LOAD = 16,
MOSQ_EVT_PERSIST_RETAIN_MSG_ADD = 17, MOSQ_EVT_PERSIST_RETAIN_MSG_SET = 17,
MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE = 18, MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE = 18,
MOSQ_EVT_PERSIST_CLIENT_ADD = 19, MOSQ_EVT_PERSIST_CLIENT_ADD = 19,
MOSQ_EVT_PERSIST_CLIENT_DELETE = 20, MOSQ_EVT_PERSIST_CLIENT_DELETE = 20,
@@ -296,7 +296,7 @@ struct mosquitto_evt_persist_base_msg {
}; };
/* Data for the MOSQ_EVT_PERSIST_RETAIN/_DELETE event */ /* Data for the MOSQ_EVT_PERSIST_RETAIN_MSG_SET/_DELETE event */
/* NOTE: The persistence interface is currently marked as unstable, which means /* NOTE: The persistence interface is currently marked as unstable, which means
* it may change in a future minor release. */ * it may change in a future minor release. */
struct mosquitto_evt_persist_retain_msg { struct mosquitto_evt_persist_retain_msg {
@@ -1059,9 +1059,9 @@ int mosquitto_subscription_add(const char *client_id, const char *topic, uint8_t
int mosquitto_subscription_delete(const char *client_id, const char *topic); int mosquitto_subscription_delete(const char *client_id, const char *topic);
/* Function: mosquitto_persist_retain_msg_add /* Function: mosquitto_persist_retain_msg_set
* *
* Use to add a retained message. It is not required to delete a retained * Use to set a retained message. It is not required to delete a retained
* message for an existing topic first. * message for an existing topic first.
* *
* Parameters: * Parameters:
@@ -1074,7 +1074,7 @@ int mosquitto_subscription_delete(const char *client_id, const char *topic);
* MOSQ_ERR_NOT_FOUND - the referenced base message was not found * MOSQ_ERR_NOT_FOUND - the referenced base message was not found
* MOSQ_ERR_NOMEM - on out of memory * MOSQ_ERR_NOMEM - on out of memory
*/ */
int mosquitto_persist_retain_msg_add(const char *topic, uint64_t store_id); int mosquitto_persist_retain_msg_set(const char *topic, uint64_t store_id);
/* Function: mosquitto_persist_retain_msg_delete /* Function: mosquitto_persist_retain_msg_delete

View File

@@ -68,7 +68,7 @@ const char evt_topics[][60] = {
TOPIC_BASE "persist/message/base/add", /* MOSQ_EVT_PERSIST_MSG_ADD */ TOPIC_BASE "persist/message/base/add", /* MOSQ_EVT_PERSIST_MSG_ADD */
TOPIC_BASE "persist/message/base/delete", /* MOSQ_EVT_PERSIST_MSG_DELETE */ TOPIC_BASE "persist/message/base/delete", /* MOSQ_EVT_PERSIST_MSG_DELETE */
TOPIC_BASE "persist/message/base/load", /* MOSQ_EVT_PERSIST_MSG_LOAD */ TOPIC_BASE "persist/message/base/load", /* MOSQ_EVT_PERSIST_MSG_LOAD */
TOPIC_BASE "persist/message/retain/add", /* MOSQ_EVT_PERSIST_RETAIN_ADD */ TOPIC_BASE "persist/message/retain/set", /* MOSQ_EVT_PERSIST_RETAIN_SET */
TOPIC_BASE "persist/message/retain/delete", /* MOSQ_EVT_PERSIST_RETAIN_DELETE */ TOPIC_BASE "persist/message/retain/delete", /* MOSQ_EVT_PERSIST_RETAIN_DELETE */
TOPIC_BASE "persist/client/add", /* MOSQ_EVT_PERSIST_CLIENT_ADD */ TOPIC_BASE "persist/client/add", /* MOSQ_EVT_PERSIST_CLIENT_ADD */
TOPIC_BASE "persist/client/delete", /* MOSQ_EVT_PERSIST_CLIENT_DELETE */ TOPIC_BASE "persist/client/delete", /* MOSQ_EVT_PERSIST_CLIENT_DELETE */

View File

@@ -233,7 +233,7 @@ static int prepare_statements(struct mosquitto_sqlite *ms)
"(topic, store_id)" "(topic, store_id)"
"VALUES(?,?)", "VALUES(?,?)",
-1, SQLITE_PREPARE_PERSISTENT, -1, SQLITE_PREPARE_PERSISTENT,
&ms->retain_msg_add_stmt, NULL); &ms->retain_msg_set_stmt, NULL);
if(rc) goto fail; if(rc) goto fail;
rc = sqlite3_prepare_v3(ms->db, rc = sqlite3_prepare_v3(ms->db,
@@ -300,7 +300,7 @@ void persist_sqlite__cleanup(struct mosquitto_sqlite *ms)
sqlite3_finalize(ms->base_msg_add_stmt); sqlite3_finalize(ms->base_msg_add_stmt);
sqlite3_finalize(ms->base_msg_remove_stmt); sqlite3_finalize(ms->base_msg_remove_stmt);
sqlite3_finalize(ms->base_msg_load_stmt); sqlite3_finalize(ms->base_msg_load_stmt);
sqlite3_finalize(ms->retain_msg_add_stmt); sqlite3_finalize(ms->retain_msg_set_stmt);
sqlite3_finalize(ms->retain_msg_remove_stmt); sqlite3_finalize(ms->retain_msg_remove_stmt);
if(ms->db){ if(ms->db){

View File

@@ -42,7 +42,7 @@ struct mosquitto_sqlite {
sqlite3_stmt *base_msg_add_stmt; sqlite3_stmt *base_msg_add_stmt;
sqlite3_stmt *base_msg_remove_stmt; sqlite3_stmt *base_msg_remove_stmt;
sqlite3_stmt *base_msg_load_stmt; sqlite3_stmt *base_msg_load_stmt;
sqlite3_stmt *retain_msg_add_stmt; sqlite3_stmt *retain_msg_set_stmt;
sqlite3_stmt *retain_msg_remove_stmt; sqlite3_stmt *retain_msg_remove_stmt;
time_t last_transaction; time_t last_transaction;
int synchronous; int synchronous;
@@ -64,7 +64,7 @@ int persist_sqlite__client_msg_update_cb(int event, void *event_data, void *user
int persist_sqlite__base_msg_add_cb(int event, void *event_data, void *userdata); int persist_sqlite__base_msg_add_cb(int event, void *event_data, void *userdata);
int persist_sqlite__base_msg_load_cb(int event, void *event_data, void *userdata); int persist_sqlite__base_msg_load_cb(int event, void *event_data, void *userdata);
int persist_sqlite__base_msg_remove_cb(int event, void *event_data, void *userdata); int persist_sqlite__base_msg_remove_cb(int event, void *event_data, void *userdata);
int persist_sqlite__retain_msg_add_cb(int event, void *event_data, void *userdata); int persist_sqlite__retain_msg_set_cb(int event, void *event_data, void *userdata);
int persist_sqlite__retain_msg_remove_cb(int event, void *event_data, void *userdata); int persist_sqlite__retain_msg_remove_cb(int event, void *event_data, void *userdata);
int persist_sqlite__subscription_add_cb(int event, void *event_data, void *userdata); int persist_sqlite__subscription_add_cb(int event, void *event_data, void *userdata);
int persist_sqlite__subscription_remove_cb(int event, void *event_data, void *userdata); int persist_sqlite__subscription_remove_cb(int event, void *event_data, void *userdata);

View File

@@ -96,7 +96,7 @@ int mosquitto_plugin_init(mosquitto_plugin_id_t *identifier, void **user_data, s
if(rc) goto fail; if(rc) goto fail;
rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_LOAD, persist_sqlite__base_msg_load_cb, NULL, &plg_data); rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_LOAD, persist_sqlite__base_msg_load_cb, NULL, &plg_data);
if(rc) goto fail; if(rc) goto fail;
rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_ADD, persist_sqlite__retain_msg_add_cb, NULL, &plg_data); rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_SET, persist_sqlite__retain_msg_set_cb, NULL, &plg_data);
if(rc) goto fail; if(rc) goto fail;
rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, persist_sqlite__retain_msg_remove_cb, NULL, &plg_data); rc = mosquitto_callback_register(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, persist_sqlite__retain_msg_remove_cb, NULL, &plg_data);
if(rc) goto fail; if(rc) goto fail;
@@ -145,7 +145,7 @@ int mosquitto_plugin_cleanup(void *user_data, struct mosquitto_opt *options, int
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_ADD, persist_sqlite__base_msg_add_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_ADD, persist_sqlite__base_msg_add_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_DELETE, persist_sqlite__base_msg_remove_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_DELETE, persist_sqlite__base_msg_remove_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_LOAD, persist_sqlite__base_msg_load_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_BASE_MSG_LOAD, persist_sqlite__base_msg_load_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_ADD, persist_sqlite__retain_msg_add_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_SET, persist_sqlite__retain_msg_set_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, persist_sqlite__retain_msg_remove_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, persist_sqlite__retain_msg_remove_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_CLIENT_ADD, persist_sqlite__client_add_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_CLIENT_ADD, persist_sqlite__client_add_cb, NULL);
mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_CLIENT_DELETE, persist_sqlite__client_remove_cb, NULL); mosquitto_callback_unregister(plg_id, MOSQ_EVT_PERSIST_CLIENT_DELETE, persist_sqlite__client_remove_cb, NULL);

View File

@@ -343,7 +343,7 @@ static int retain_restore(struct mosquitto_sqlite *ms)
} }
store_id = (uint64_t)sqlite3_column_int64(stmt, 1); store_id = (uint64_t)sqlite3_column_int64(stmt, 1);
rc = mosquitto_persist_retain_msg_add(topic, store_id); rc = mosquitto_persist_retain_msg_set(topic, store_id);
if(rc == MOSQ_ERR_SUCCESS){ if(rc == MOSQ_ERR_SUCCESS){
count++; count++;
}else{ }else{

View File

@@ -23,7 +23,7 @@ Contributors:
#include "mosquitto_broker.h" #include "mosquitto_broker.h"
#include "persist_sqlite.h" #include "persist_sqlite.h"
int persist_sqlite__retain_msg_add_cb(int event, void *event_data, void *userdata) int persist_sqlite__retain_msg_set_cb(int event, void *event_data, void *userdata)
{ {
struct mosquitto_evt_persist_retain_msg *ed = event_data; struct mosquitto_evt_persist_retain_msg *ed = event_data;
struct mosquitto_sqlite *ms = userdata; struct mosquitto_sqlite *ms = userdata;
@@ -31,19 +31,19 @@ int persist_sqlite__retain_msg_add_cb(int event, void *event_data, void *userdat
UNUSED(event); UNUSED(event);
if(sqlite3_bind_text(ms->retain_msg_add_stmt, 1, ed->topic, (int)strlen(ed->topic), SQLITE_STATIC) == SQLITE_OK if(sqlite3_bind_text(ms->retain_msg_set_stmt, 1, ed->topic, (int)strlen(ed->topic), SQLITE_STATIC) == SQLITE_OK
&& sqlite3_bind_int64(ms->retain_msg_add_stmt, 2, (int64_t)ed->store_id) == SQLITE_OK && sqlite3_bind_int64(ms->retain_msg_set_stmt, 2, (int64_t)ed->store_id) == SQLITE_OK
){ ){
ms->event_count++; ms->event_count++;
rc = sqlite3_step(ms->retain_msg_add_stmt); rc = sqlite3_step(ms->retain_msg_set_stmt);
if(rc == SQLITE_DONE){ if(rc == SQLITE_DONE){
rc = MOSQ_ERR_SUCCESS; rc = MOSQ_ERR_SUCCESS;
}else{ }else{
rc = MOSQ_ERR_UNKNOWN; rc = MOSQ_ERR_UNKNOWN;
} }
} }
sqlite3_reset(ms->retain_msg_add_stmt); sqlite3_reset(ms->retain_msg_set_stmt);
return rc; return rc;
} }

View File

@@ -30,7 +30,7 @@ _mosquitto_persist_client_msg_add
_mosquitto_persist_client_msg_delete _mosquitto_persist_client_msg_delete
_mosquitto_persist_client_msg_update _mosquitto_persist_client_msg_update
_mosquitto_persist_client_update _mosquitto_persist_client_update
_mosquitto_persist_retain_msg_add _mosquitto_persist_retain_msg_set
_mosquitto_persist_retain_msg_delete _mosquitto_persist_retain_msg_delete
_mosquitto_plugin_set_info _mosquitto_plugin_set_info
_mosquitto_property_add_binary _mosquitto_property_add_binary

View File

@@ -31,7 +31,7 @@
mosquitto_persist_client_msg_delete; mosquitto_persist_client_msg_delete;
mosquitto_persist_client_msg_update; mosquitto_persist_client_msg_update;
mosquitto_persist_client_update; mosquitto_persist_client_update;
mosquitto_persist_retain_msg_add; mosquitto_persist_retain_msg_set;
mosquitto_persist_retain_msg_delete; mosquitto_persist_retain_msg_delete;
mosquitto_plugin_set_info; mosquitto_plugin_set_info;
mosquitto_property_add_binary; mosquitto_property_add_binary;

View File

@@ -177,7 +177,7 @@ struct plugin__callbacks{
struct mosquitto__callback *persist_base_msg_add; struct mosquitto__callback *persist_base_msg_add;
struct mosquitto__callback *persist_base_msg_delete; struct mosquitto__callback *persist_base_msg_delete;
struct mosquitto__callback *persist_base_msg_load; struct mosquitto__callback *persist_base_msg_load;
struct mosquitto__callback *persist_retain_msg_add; struct mosquitto__callback *persist_retain_msg_set;
struct mosquitto__callback *persist_retain_msg_delete; struct mosquitto__callback *persist_retain_msg_delete;
}; };
@@ -871,7 +871,7 @@ void plugin_persist__handle_client_msg_update(struct mosquitto *context, const s
void plugin_persist__handle_client_msg_clear(struct mosquitto *context, uint8_t direction); void plugin_persist__handle_client_msg_clear(struct mosquitto *context, uint8_t direction);
void plugin_persist__handle_base_msg_add(struct mosquitto_base_msg *base_msg); void plugin_persist__handle_base_msg_add(struct mosquitto_base_msg *base_msg);
void plugin_persist__handle_base_msg_delete(struct mosquitto_base_msg *base_msg); void plugin_persist__handle_base_msg_delete(struct mosquitto_base_msg *base_msg);
void plugin_persist__handle_retain_msg_add(struct mosquitto_base_msg *base_msg); void plugin_persist__handle_retain_msg_set(struct mosquitto_base_msg *base_msg);
void plugin_persist__handle_retain_msg_delete(struct mosquitto_base_msg *base_msg); void plugin_persist__handle_retain_msg_delete(struct mosquitto_base_msg *base_msg);
/* ============================================================ /* ============================================================

View File

@@ -55,8 +55,8 @@ static const char *get_event_name(int event)
return "persist-base-msg-delete"; return "persist-base-msg-delete";
case MOSQ_EVT_PERSIST_BASE_MSG_LOAD: case MOSQ_EVT_PERSIST_BASE_MSG_LOAD:
return "persist-base-msg-load"; return "persist-base-msg-load";
case MOSQ_EVT_PERSIST_RETAIN_MSG_ADD: case MOSQ_EVT_PERSIST_RETAIN_MSG_SET:
return "persist-retain-msg-add"; return "persist-retain-msg-set";
case MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE: case MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE:
return "persist-retain-msg-delete"; return "persist-retain-msg-delete";
case MOSQ_EVT_PERSIST_CLIENT_ADD: case MOSQ_EVT_PERSIST_CLIENT_ADD:
@@ -147,8 +147,8 @@ static struct mosquitto__callback **plugin__get_callback_base(struct mosquitto__
return &security_options->plugin_callbacks.persist_base_msg_delete; return &security_options->plugin_callbacks.persist_base_msg_delete;
case MOSQ_EVT_PERSIST_BASE_MSG_LOAD: case MOSQ_EVT_PERSIST_BASE_MSG_LOAD:
return &security_options->plugin_callbacks.persist_base_msg_load; return &security_options->plugin_callbacks.persist_base_msg_load;
case MOSQ_EVT_PERSIST_RETAIN_MSG_ADD: case MOSQ_EVT_PERSIST_RETAIN_MSG_SET:
return &security_options->plugin_callbacks.persist_retain_msg_add; return &security_options->plugin_callbacks.persist_retain_msg_set;
case MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE: case MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE:
return &security_options->plugin_callbacks.persist_retain_msg_delete; return &security_options->plugin_callbacks.persist_retain_msg_delete;
default: default:

View File

@@ -349,7 +349,7 @@ void plugin_persist__handle_base_msg_delete(struct mosquitto_base_msg *msg)
} }
void plugin_persist__handle_retain_msg_add(struct mosquitto_base_msg *msg) void plugin_persist__handle_retain_msg_set(struct mosquitto_base_msg *msg)
{ {
struct mosquitto_evt_persist_retain_msg event_data; struct mosquitto_evt_persist_retain_msg event_data;
struct mosquitto__callback *cb_base; struct mosquitto__callback *cb_base;
@@ -363,8 +363,8 @@ void plugin_persist__handle_retain_msg_add(struct mosquitto_base_msg *msg)
event_data.store_id = msg->db_id; event_data.store_id = msg->db_id;
event_data.topic = msg->topic; event_data.topic = msg->topic;
DL_FOREACH(opts->plugin_callbacks.persist_retain_msg_add, cb_base){ DL_FOREACH(opts->plugin_callbacks.persist_retain_msg_set, cb_base){
cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_ADD, &event_data, cb_base->userdata); cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_SET, &event_data, cb_base->userdata);
} }
} }

View File

@@ -71,7 +71,7 @@ int retain__init(void)
return MOSQ_ERR_SUCCESS; return MOSQ_ERR_SUCCESS;
} }
int mosquitto_persist_retain_msg_add(const char *topic, uint64_t base_msg_id) int mosquitto_persist_retain_msg_set(const char *topic, uint64_t base_msg_id)
{ {
struct mosquitto_base_msg *base_msg; struct mosquitto_base_msg *base_msg;
int rc = MOSQ_ERR_UNKNOWN; int rc = MOSQ_ERR_UNKNOWN;
@@ -157,7 +157,8 @@ int retain__store(const char *topic, struct mosquitto_base_msg *base_msg, char *
#endif #endif
if(retainhier->retained){ if(retainhier->retained){
if(persist && retainhier->retained->topic[0] != '$'){ if(persist && retainhier->retained->topic[0] != '$' && base_msg->payloadlen == 0){
/* Only delete if another retained message isn't replacing this one */
plugin_persist__handle_retain_msg_delete(retainhier->retained); plugin_persist__handle_retain_msg_delete(retainhier->retained);
} }
db__msg_store_ref_dec(&retainhier->retained); db__msg_store_ref_dec(&retainhier->retained);
@@ -173,7 +174,7 @@ int retain__store(const char *topic, struct mosquitto_base_msg *base_msg, char *
db__msg_store_ref_inc(retainhier->retained); db__msg_store_ref_inc(retainhier->retained);
if(persist && retainhier->retained->topic[0] != '$'){ if(persist && retainhier->retained->topic[0] != '$'){
plugin_persist__handle_base_msg_add(retainhier->retained); plugin_persist__handle_base_msg_add(retainhier->retained);
plugin_persist__handle_retain_msg_add(retainhier->retained); plugin_persist__handle_retain_msg_set(retainhier->retained);
} }
#ifdef WITH_SYS_TREE #ifdef WITH_SYS_TREE
db.retained_count++; db.retained_count++;

View File

@@ -227,7 +227,7 @@ void context__add_to_by_id(struct mosquitto *context)
} }
} }
void plugin_persist__handle_retain_msg_add(struct mosquitto_base_msg *msg) void plugin_persist__handle_retain_msg_set(struct mosquitto_base_msg *msg)
{ {
UNUSED(msg); UNUSED(msg);
} }

View File

@@ -198,7 +198,7 @@ void plugin_persist__handle_base_msg_delete(struct mosquitto_base_msg *msg)
{ {
UNUSED(msg); UNUSED(msg);
} }
void plugin_persist__handle_retain_msg_add(struct mosquitto_base_msg *msg) void plugin_persist__handle_retain_msg_set(struct mosquitto_base_msg *msg)
{ {
UNUSED(msg); UNUSED(msg);
} }

View File

@@ -13,7 +13,7 @@ struct mosquitto_db{
}; };
struct mosquitto_msg_store{ struct mosquitto_base_msg{
}; };
@@ -95,12 +95,12 @@ ssize_t net__write(struct mosquitto *mosq, const void *buf, size_t count)
return 1; return 1;
} }
void plugin_persist__handle_retain_add(struct mosquitto_msg_store *msg) void plugin_persist__handle_retain_set(struct mosquitto_base_msg *msg)
{ {
UNUSED(msg); UNUSED(msg);
} }
void plugin_persist__handle_retain_remove(struct mosquitto_msg_store *msg) void plugin_persist__handle_retain_remove(struct mosquitto_base_msg *msg)
{ {
UNUSED(msg); UNUSED(msg);
} }