pub struct ActorState {
pub actor_id: String,
pub risk_score: f64,
pub rule_matches: Vec<RuleMatch>,
pub anomaly_count: u64,
pub session_ids: Vec<String>,
pub first_seen: u64,
pub last_seen: u64,
pub ips: HashSet<IpAddr>,
pub fingerprints: HashSet<String>,
pub is_blocked: bool,
pub block_reason: Option<String>,
pub blocked_since: Option<u64>,
}Expand description
Per-actor state tracking.
Fields§
§actor_id: StringUnique actor identifier (UUID v4).
risk_score: f64Accumulated risk score (0.0 - max_risk).
rule_matches: Vec<RuleMatch>History of rule matches for this actor.
anomaly_count: u64Count of anomalous behaviors detected.
session_ids: Vec<String>Session IDs associated with this actor.
first_seen: u64First seen timestamp (ms since epoch).
last_seen: u64Last seen timestamp (ms since epoch).
ips: HashSet<IpAddr>IP addresses associated with this actor.
fingerprints: HashSet<String>Fingerprints associated with this actor.
is_blocked: boolWhether this actor is currently blocked.
block_reason: Option<String>Reason for blocking (if blocked).
blocked_since: Option<u64>Timestamp when blocked (ms since epoch).
Implementations§
Source§impl ActorState
impl ActorState
Sourcepub fn add_fingerprint(
&mut self,
fingerprint: String,
max_fingerprints: usize,
) -> bool
pub fn add_fingerprint( &mut self, fingerprint: String, max_fingerprints: usize, ) -> bool
Add a fingerprint to this actor with a maximum limit.
Returns true if the fingerprint was added, false if at capacity or empty.
Sourcepub fn add_rule_match(&mut self, rule_match: RuleMatch, max_matches: usize)
pub fn add_rule_match(&mut self, rule_match: RuleMatch, max_matches: usize)
Add a rule match to this actor’s history.
Sourcepub fn get_rule_match_count(&self, rule_id: &str) -> usize
pub fn get_rule_match_count(&self, rule_id: &str) -> usize
Get the count of matches for a specific rule.
Trait Implementations§
Source§impl Clone for ActorState
impl Clone for ActorState
Source§fn clone(&self) -> ActorState
fn clone(&self) -> ActorState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ActorState
impl Debug for ActorState
Source§impl<'de> Deserialize<'de> for ActorState
impl<'de> Deserialize<'de> for ActorState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ActorState
impl RefUnwindSafe for ActorState
impl Send for ActorState
impl Sync for ActorState
impl Unpin for ActorState
impl UnsafeUnpin for ActorState
impl UnwindSafe for ActorState
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
Converts
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>
Converts
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