TemplateEvent

Enum TemplateEvent 

Source
pub enum TemplateEvent {
    Learned {
        template_id: u16,
        protocol: TemplateProtocol,
    },
    Collision {
        template_id: u16,
        protocol: TemplateProtocol,
    },
    Evicted {
        template_id: u16,
        protocol: TemplateProtocol,
    },
    Expired {
        template_id: u16,
        protocol: TemplateProtocol,
    },
    MissingTemplate {
        template_id: u16,
        protocol: TemplateProtocol,
    },
}
Expand description

Template lifecycle events.

These events are emitted during template cache operations and allow users to monitor and react to template state changes.

Variants§

§

Learned

A new template was learned and added to the cache.

This event fires when a template definition packet is successfully parsed and the template is inserted into the cache for the first time.

Fields

§template_id: u16

The template ID that was learned

§protocol: TemplateProtocol

The protocol (V9 or IPFIX)

§

Collision

A template ID was reused, potentially with a different definition.

This event indicates that a template ID already in the cache was encountered again. This could be:

  • The same template being re-sent (normal refresh)
  • A different template using the same ID (collision - problematic)

In multi-source deployments without proper scoping, collisions indicate that different routers are using the same template ID with potentially different schemas. Use AutoScopedParser to avoid this issue.

Fields

§template_id: u16

The template ID that collided

§protocol: TemplateProtocol

The protocol (V9 or IPFIX)

§

Evicted

A template was evicted from the cache due to LRU policy.

When the cache reaches its maximum size, the least recently used template is evicted to make room for new templates. Frequent evictions may indicate that the cache size is too small or that there are too many active templates.

Fields

§template_id: u16

The template ID that was evicted

§protocol: TemplateProtocol

The protocol (V9 or IPFIX)

§

Expired

A template expired due to TTL timeout.

When TTL-based template expiration is enabled, templates that haven’t been used within the configured timeout are automatically removed from the cache. This is useful for handling exporters that may change their template definitions without notification.

Fields

§template_id: u16

The template ID that expired

§protocol: TemplateProtocol

The protocol (V9 or IPFIX)

§

MissingTemplate

Data packet arrived for a template that isn’t in the cache.

This typically occurs when:

  • Data packets arrive before their template definition (out-of-order)
  • Template was evicted from cache before data arrived
  • Template definition packet was lost in transit

Users can implement retry logic or buffering strategies based on this event.

Fields

§template_id: u16

The template ID that was not found

§protocol: TemplateProtocol

The protocol (V9 or IPFIX)

Trait Implementations§

Source§

impl Clone for TemplateEvent

Source§

fn clone(&self) -> TemplateEvent

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TemplateEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.