v0.7.12 - Implemented comprehensive debug system with 6 levels (0-5), file:line tracking at TRACE level, deployment script integration, and default level 5 for development
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#define _GNU_SOURCE
|
||||
#include <cjson/cJSON.h>
|
||||
#include "debug.h"
|
||||
#include <sqlite3.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@@ -10,9 +11,6 @@
|
||||
#include "subscriptions.h"
|
||||
|
||||
// Forward declarations for logging functions
|
||||
void log_info(const char* message);
|
||||
void log_error(const char* message);
|
||||
void log_warning(const char* message);
|
||||
|
||||
// Forward declarations for configuration functions
|
||||
const char* get_config_value(const char* key);
|
||||
@@ -52,7 +50,7 @@ subscription_filter_t* create_subscription_filter(cJSON* filter_json) {
|
||||
// Validate filter values before creating the filter
|
||||
char error_message[512] = {0};
|
||||
if (!validate_filter_values(filter_json, error_message, sizeof(error_message))) {
|
||||
log_warning(error_message);
|
||||
DEBUG_WARN(error_message);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -150,19 +148,19 @@ static int validate_subscription_id(const char* sub_id) {
|
||||
// Create a new subscription
|
||||
subscription_t* create_subscription(const char* sub_id, struct lws* wsi, cJSON* filters_array, const char* client_ip) {
|
||||
if (!sub_id || !wsi || !filters_array) {
|
||||
log_error("create_subscription: NULL parameter(s)");
|
||||
DEBUG_ERROR("create_subscription: NULL parameter(s)");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Validate subscription ID
|
||||
if (!validate_subscription_id(sub_id)) {
|
||||
log_error("create_subscription: invalid subscription ID format or length");
|
||||
DEBUG_ERROR("create_subscription: invalid subscription ID format or length");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
subscription_t* sub = calloc(1, sizeof(subscription_t));
|
||||
if (!sub) {
|
||||
log_error("create_subscription: failed to allocate subscription");
|
||||
DEBUG_ERROR("create_subscription: failed to allocate subscription");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -199,7 +197,7 @@ subscription_t* create_subscription(const char* sub_id, struct lws* wsi, cJSON*
|
||||
cJSON* filter_json = NULL;
|
||||
cJSON_ArrayForEach(filter_json, filters_array) {
|
||||
if (filter_count >= MAX_FILTERS_PER_SUBSCRIPTION) {
|
||||
log_warning("Maximum filters per subscription exceeded, ignoring excess filters");
|
||||
DEBUG_WARN("Maximum filters per subscription exceeded, ignoring excess filters");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -218,7 +216,7 @@ subscription_t* create_subscription(const char* sub_id, struct lws* wsi, cJSON*
|
||||
}
|
||||
|
||||
if (filter_count == 0) {
|
||||
log_error("No valid filters found for subscription");
|
||||
DEBUG_ERROR("No valid filters found for subscription");
|
||||
free(sub);
|
||||
return NULL;
|
||||
}
|
||||
@@ -246,7 +244,7 @@ int add_subscription_to_manager(subscription_t* sub) {
|
||||
// Check global limits
|
||||
if (g_subscription_manager.total_subscriptions >= g_subscription_manager.max_total_subscriptions) {
|
||||
pthread_mutex_unlock(&g_subscription_manager.subscriptions_lock);
|
||||
log_error("Maximum total subscriptions reached");
|
||||
DEBUG_ERROR("Maximum total subscriptions reached");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -267,13 +265,13 @@ int add_subscription_to_manager(subscription_t* sub) {
|
||||
// Remove subscription from global manager (thread-safe)
|
||||
int remove_subscription_from_manager(const char* sub_id, struct lws* wsi) {
|
||||
if (!sub_id) {
|
||||
log_error("remove_subscription_from_manager: NULL subscription ID");
|
||||
DEBUG_ERROR("remove_subscription_from_manager: NULL subscription ID");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Validate subscription ID format
|
||||
if (!validate_subscription_id(sub_id)) {
|
||||
log_error("remove_subscription_from_manager: invalid subscription ID format");
|
||||
DEBUG_ERROR("remove_subscription_from_manager: invalid subscription ID format");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -319,14 +317,17 @@ int remove_subscription_from_manager(const char* sub_id, struct lws* wsi) {
|
||||
|
||||
char debug_msg[256];
|
||||
snprintf(debug_msg, sizeof(debug_msg), "Subscription '%s' not found for removal", sub_id);
|
||||
log_warning(debug_msg);
|
||||
DEBUG_WARN(debug_msg);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Check if an event matches a subscription filter
|
||||
int event_matches_filter(cJSON* event, subscription_filter_t* filter) {
|
||||
DEBUG_TRACE("Checking event against subscription filter");
|
||||
|
||||
if (!event || !filter) {
|
||||
DEBUG_TRACE("Exiting event_matches_filter - null parameters");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -502,6 +503,7 @@ int event_matches_filter(cJSON* event, subscription_filter_t* filter) {
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_TRACE("Exiting event_matches_filter - match found");
|
||||
return 1; // All filters passed
|
||||
}
|
||||
|
||||
@@ -524,7 +526,10 @@ int event_matches_subscription(cJSON* event, subscription_t* subscription) {
|
||||
|
||||
// Broadcast event to all matching subscriptions (thread-safe)
|
||||
int broadcast_event_to_subscriptions(cJSON* event) {
|
||||
DEBUG_TRACE("Broadcasting event to subscriptions");
|
||||
|
||||
if (!event) {
|
||||
DEBUG_TRACE("Exiting broadcast_event_to_subscriptions - null event");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -584,7 +589,7 @@ int broadcast_event_to_subscriptions(cJSON* event) {
|
||||
matching_subs = temp;
|
||||
matching_count++;
|
||||
} else {
|
||||
log_error("broadcast_event_to_subscriptions: failed to allocate temp subscription");
|
||||
DEBUG_ERROR("broadcast_event_to_subscriptions: failed to allocate temp subscription");
|
||||
}
|
||||
}
|
||||
sub = sub->next;
|
||||
@@ -655,6 +660,8 @@ int broadcast_event_to_subscriptions(cJSON* event) {
|
||||
g_subscription_manager.total_events_broadcast += broadcasts;
|
||||
pthread_mutex_unlock(&g_subscription_manager.subscriptions_lock);
|
||||
|
||||
DEBUG_LOG("Event broadcast complete: %d subscriptions matched", broadcasts);
|
||||
DEBUG_TRACE("Exiting broadcast_event_to_subscriptions");
|
||||
return broadcasts;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user