Module extension_api

Module extension_api 

Source
Expand description

Custom protocol extensions API

This module provides a flexible extension system for adding custom fields and behaviors to Celery protocol messages without breaking compatibility.

§Examples

use celers_protocol::extension_api::{Extension, ExtensionRegistry, ExtensionValue};
use serde_json::json;

// Define a custom extension
struct TelemetryExtension;

impl Extension for TelemetryExtension {
    fn name(&self) -> &str {
        "telemetry"
    }

    fn validate(&self, value: &ExtensionValue) -> Result<(), String> {
        // Custom validation logic
        if let ExtensionValue::Object(map) = value {
            if !map.contains_key("trace_id") {
                return Err("Missing trace_id".to_string());
            }
        }
        Ok(())
    }
}

// Register extension
let mut registry = ExtensionRegistry::new();
registry.register(Box::new(TelemetryExtension));

// Use extension
let value = ExtensionValue::Object(
    vec![("trace_id".to_string(), json!("abc123"))]
        .into_iter()
        .collect()
);
registry.validate("telemetry", &value).unwrap();

Structs§

ExtendedMessage
Message with custom extensions
ExtensionRegistry
Registry for managing custom extensions
MetricsExtension
Metrics collection extension
RoutingExtension
Custom routing extension
TelemetryExtension
Telemetry/tracing extension

Enums§

ExtensionValue
Extension value types

Traits§

Extension
Extension trait for custom protocol extensions

Functions§

create_default_registry
Create a registry with built-in extensions