pub mod builtin_triggers;
pub mod channels;
pub mod error;
pub mod iii;
pub mod logger;
pub mod protocol;
pub mod stream;
pub mod structs;
pub mod telemetry;
pub mod triggers;
pub mod types;
pub use builtin_triggers::{
IIITrigger, StreamCallRequest, StreamEventDetail, StreamEventType, StreamJoinLeaveCallRequest,
StreamJoinLeaveTriggerConfig, StreamTriggerConfig,
};
pub use channels::{
ChannelDirection, ChannelItem, ChannelReader, ChannelWriter, StreamChannelRef,
extract_channel_refs, is_channel_ref,
};
pub use error::IIIError;
pub use iii::{
FunctionInfo, FunctionRef, III, IIIAsyncFn, IIIConnectionState, IIIFn, IntoFunctionHandler,
IntoFunctionRegistration, RegisterFunction, RegisterTriggerType, TriggerInfo, TriggerTypeInfo,
TriggerTypeRef, WorkerInfo, WorkerMetadata, iii_async_fn, iii_fn,
};
pub use logger::Logger;
pub use protocol::{
EnqueueResult, ErrorBody, FunctionMessage, HttpAuthConfig, HttpInvocationConfig, HttpMethod,
Message, RegisterFunctionMessage, RegisterServiceMessage, RegisterTriggerInput,
RegisterTriggerMessage, RegisterTriggerTypeMessage, TriggerAction, TriggerRequest,
};
pub use stream::UpdateBuilder;
pub use structs::{
AuthInput, AuthResult, MiddlewareFunctionInput, OnFunctionRegistrationInput,
OnFunctionRegistrationResult, OnTriggerRegistrationInput, OnTriggerRegistrationResult,
OnTriggerTypeRegistrationInput, OnTriggerTypeRegistrationResult,
};
pub use triggers::{Trigger, TriggerConfig, TriggerHandler};
pub use types::{
ApiRequest, ApiResponse, Channel, DeleteResult, FieldPath, MergePath, SetResult,
StreamAuthInput, StreamAuthResult, StreamDeleteInput, StreamGetInput, StreamJoinResult,
StreamListGroupsInput, StreamListInput, StreamSetInput, StreamUpdateInput, UpdateOp,
UpdateOpError, UpdateResult,
};
pub use serde_json::Value;
#[derive(Debug, Clone, Default)]
pub struct InitOptions {
pub metadata: Option<WorkerMetadata>,
pub headers: Option<std::collections::HashMap<String, String>>,
pub otel: Option<crate::telemetry::types::OtelConfig>,
}
pub fn register_worker(address: &str, options: InitOptions) -> III {
let InitOptions {
metadata,
headers,
otel,
} = options;
let iii = if let Some(metadata) = metadata {
III::with_metadata(address, metadata)
} else {
III::new(address)
};
if let Some(h) = headers {
iii.set_headers(h);
}
if let Some(cfg) = otel {
iii.set_otel_config(cfg);
}
iii.connect();
iii
}
pub use telemetry::{
baggage_span_processor::{BaggageSpanProcessor, DEFAULT_ALLOWLIST},
context::{
CapturedContext, capture_otel_context, current_span_id, current_trace_id, extract_baggage,
extract_context, extract_traceparent, get_all_baggage, get_baggage_entry, inject_baggage,
inject_traceparent, remove_baggage_entry, run_with_baggage, set_baggage_entry,
},
flush_otel, get_meter, get_tracer,
http_instrumentation::execute_traced_request,
init_otel, is_initialized,
payload::{REDACTED_PLACEHOLDER, redact, redact_and_truncate, resolve_max_bytes_from_env},
run_in_span, shutdown_otel,
span_ops::{
current_span_is_recording, record_span_event, set_current_span_attribute,
set_current_span_error,
},
types::OtelConfig,
types::ReconnectionConfig,
with_span,
};
pub use opentelemetry::trace::SpanKind;
pub use opentelemetry::trace::Status as SpanStatus;