pub struct WebIngestionService { /* private fields */ }Implementations§
Source§impl WebIngestionService
impl WebIngestionService
pub fn new(lake: DataLakeConnection) -> WebIngestionService
Sourcepub async fn from_env() -> Result<Arc<WebIngestionService>, Error>
pub async fn from_env() -> Result<Arc<WebIngestionService>, Error>
Reads MICROMEGAS_SQL_CONNECTION_STRING and MICROMEGAS_OBJECT_STORE_URI, connects to the data lake, runs ingestion migrations, and returns a ready-to-use service.
pub fn insert_block( &self, body: Bytes, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Sourcepub fn insert_block_typed(
&self,
block: Block,
) -> impl Future<Output = Result<(), IngestionServiceError>>
pub fn insert_block_typed( &self, block: Block, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Inserts a block whose payload is already typed (no envelope round-trip on the caller side).
The caller hands us a fully-built Block; we CBOR-encode the payload envelope once,
write it to object storage, and INSERT the row. Used by the OTLP adapter where
constructing the CBOR Block envelope just so insert_block could decode it
would be wasted work.
Sourcepub fn insert_stream(
&self,
body: Bytes,
) -> impl Future<Output = Result<(), IngestionServiceError>>
pub fn insert_stream( &self, body: Bytes, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Registers a stream whose blocks will be ingested in the transit format.
Sourcepub fn register_otel_stream(
&self,
stream_id: Uuid,
process_id: Uuid,
tags: Vec<String>,
format: &str,
) -> impl Future<Output = Result<(), IngestionServiceError>>
pub fn register_otel_stream( &self, stream_id: Uuid, process_id: Uuid, tags: Vec<String>, format: &str, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Registers a stream produced by an OTLP ingestion path.
dependencies_metadata and objects_metadata are filled with the CBOR sentinel
for an empty Vec<UserDefinedType> so legacy decode sites continue to work.
format distinguishes per-block dispatch downstream (e.g. "otlp/v1/logs").
Stream properties are always empty for OTel — scope and per-event attrs
live on individual rows during materialization, not on the stream.
Hack: piggybacking OTLP onto the transit-shaped streams row (with empty
metadata sentinels) is expedient for two formats but won’t scale. To support
more formats cleanly, dependencies_metadata, objects_metadata, and format
should be merged into a single per-format payload column.
pub fn insert_process( &self, body: Bytes, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Sourcepub fn register_otel_process(
&self,
process_id: Uuid,
exe: String,
username: String,
computer: String,
distro: String,
cpu_brand: String,
tsc_frequency: i64,
start_time: DateTime<Utc>,
start_ticks: i64,
properties: Vec<Property>,
) -> impl Future<Output = Result<(), IngestionServiceError>>
pub fn register_otel_process( &self, process_id: Uuid, exe: String, username: String, computer: String, distro: String, cpu_brand: String, tsc_frequency: i64, start_time: DateTime<Utc>, start_ticks: i64, properties: Vec<Property>, ) -> impl Future<Output = Result<(), IngestionServiceError>>
Registers a process originating from OTLP. Idempotent via ON CONFLICT DO NOTHING.
realname is set equal to username (OTel has no separate “real name” concept).
parent_process_id is always NULL — OTel has no parent-process model.
insert_time is the server wall clock, matching the existing insert_process path.
Trait Implementations§
Source§impl Clone for WebIngestionService
impl Clone for WebIngestionService
Source§fn clone(&self) -> WebIngestionService
fn clone(&self) -> WebIngestionService
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for WebIngestionService
impl !RefUnwindSafe for WebIngestionService
impl Send for WebIngestionService
impl Sync for WebIngestionService
impl Unpin for WebIngestionService
impl !UnwindSafe for WebIngestionService
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].