Loading...
Searching...
No Matches
BinaryNinja::SimilaritySessionResolver Class Referenceabstract

Selects a preferred result for each scheduled entity. More...

Detailed Description

Selects a preferred result for each scheduled entity.

C++ implementations must be thread safe because callbacks may overlap across nodes in the same processing group.

Public Member Functions

 SimilaritySessionResolver (SimilaritySessionResolverType *type, Ref< SimilaritySession > session)
 Creates a resolver for `session`.
 SimilaritySessionResolver (BNSimilaritySessionResolver *resolver)
SimilaritySessionResolverId GetId () const
Ref< SimilaritySessionResolverTypeGetType () const
virtual bool UpdateSettings (Settings &)
 Replaces this resolver's settings only if they are valid.
virtual void PrepareForNode (SimilaritySession &session, SimilaritySessionNode &node, SimilaritySessionCompletion &completion)
 Prepares a node before providers run.
virtual void ResolveForNode (SimilaritySession &session, SimilaritySessionNode &node, const std::vector< SimilarityEntityId > &entities, SimilaritySessionCompletion &completion)=0
 Resolves provider results after all providers have visited the node.
Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySessionResolver, BNNewSimilaritySessionResolverReference, BNFreeSimilaritySessionResolver >
 CoreRefCountObject ()
virtual ~CoreRefCountObject ()
BNSimilaritySessionResolverGetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void ReleaseForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Additional Inherited Members

Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySessionResolver, BNNewSimilaritySessionResolverReference, BNFreeSimilaritySessionResolver >
std::atomic< int > m_refs
bool m_registeredRef
BNSimilaritySessionResolverm_object

Constructor & Destructor Documentation

◆ SimilaritySessionResolver() [1/2]

SimilaritySessionResolver::SimilaritySessionResolver ( SimilaritySessionResolverType * type,
Ref< SimilaritySession > session )

Creates a resolver for `session`.

◆ SimilaritySessionResolver() [2/2]

SimilaritySessionResolver::SimilaritySessionResolver ( BNSimilaritySessionResolver * resolver)

Member Function Documentation

◆ GetId()

SimilaritySessionResolverId SimilaritySessionResolver::GetId ( ) const

◆ GetType()

Ref< SimilaritySessionResolverType > SimilaritySessionResolver::GetType ( ) const

◆ UpdateSettings()

virtual bool BinaryNinja::SimilaritySessionResolver::UpdateSettings ( Settings & )
inlinevirtual

Replaces this resolver's settings only if they are valid.

Return false without changing the current settings when the new settings are invalid or updates are not supported. Use SimilaritySession::UpdateResolverSettings so affected entities are resolved again.

◆ PrepareForNode()

virtual void BinaryNinja::SimilaritySessionResolver::PrepareForNode ( SimilaritySession & session,
SimilaritySessionNode & node,
SimilaritySessionCompletion & completion )
inlinevirtual

Prepares a node before providers run.

This is useful for large graphs where views may be unavailable, but the resolver needs to change the scheduled entities or add entities itself.

Reimplemented in BinaryNinja::CoreSimilaritySessionResolver.

◆ ResolveForNode()

virtual void BinaryNinja::SimilaritySessionResolver::ResolveForNode ( SimilaritySession & session,
SimilaritySessionNode & node,
const std::vector< SimilarityEntityId > & entities,
SimilaritySessionCompletion & completion )
pure virtual

Resolves provider results after all providers have visited the node.

Call SetResolvedResult to select a result. Call AddScheduledEntity to request another provider and resolver round for an entity. Only schedule work for `node`; the session owns scheduling between nodes.

Implemented in BinaryNinja::CoreSimilaritySessionResolver.