Loading...
Searching...
No Matches
BinaryNinja::SimilaritySession Class Reference

Runs providers and resolvers over binaries arranged in a session graph. More...

Detailed Description

Runs providers and resolvers over binaries arranged in a session graph.

Public Member Functions

 SimilaritySession (BNSimilaritySession *session)
 SimilaritySession ()
SimilaritySessionId GetId () const
void AddProvider (Ref< SimilarityProvider > provider)
 Adds a provider and schedules entities processed by earlier runs for the next run.
void RemoveProvider (SimilarityProvider &provider)
 Removes a provider, clears its results, and marks affected entities for resolution.
bool UpdateProviderSettings (SimilarityProvider &provider, Settings &settings)
 Updates a provider already in the session and schedules previously processed entities again.
Ref< SimilarityProviderGetProvider (SimilarityProviderId id)
 Returns a provider, or `nullptr` if `id` is absent.
std::vector< Ref< SimilarityProvider > > GetProviders ()
bool AddResolver (Ref< SimilaritySessionResolver > resolver)
 Adds a resolver created for this session and marks entities processed by earlier runs for resolution.
bool RemoveResolver (SimilaritySessionResolver &resolver)
 Removes a resolver.
bool UpdateResolverSettings (SimilaritySessionResolver &resolver, Settings &settings)
 Updates a resolver already in the session and marks previously processed entities for resolution.
Ref< SimilaritySessionResolverGetResolver (SimilaritySessionResolverId id)
 Returns a resolver, or `nullptr` if `id` is absent.
std::vector< Ref< SimilaritySessionResolver > > GetResolvers ()
void AddReceiver (Ref< SimilaritySessionReceiver > receiver)
 Adds a receiver.
void RemoveReceiver (SimilaritySessionReceiver &receiver)
 Removes a receiver.
std::vector< Ref< SimilaritySessionReceiver > > GetReceivers ()
Ref< SimilaritySessionGraphGetGraph ()
Ref< SimilaritySessionCompletionRun ()
 Starts a background run with the current graph, providers, and resolvers.
Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySession, BNNewSimilaritySessionReference, BNFreeSimilaritySession >
 CoreRefCountObject ()
virtual ~CoreRefCountObject ()
BNSimilaritySessionGetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void ReleaseForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Additional Inherited Members

Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySession, BNNewSimilaritySessionReference, BNFreeSimilaritySession >
std::atomic< int > m_refs
bool m_registeredRef
BNSimilaritySessionm_object

Constructor & Destructor Documentation

◆ SimilaritySession() [1/2]

SimilaritySession::SimilaritySession ( BNSimilaritySession * session)

◆ SimilaritySession() [2/2]

SimilaritySession::SimilaritySession ( )

Member Function Documentation

◆ GetId()

SimilaritySessionId SimilaritySession::GetId ( ) const

◆ AddProvider()

void SimilaritySession::AddProvider ( Ref< SimilarityProvider > provider)

Adds a provider and schedules entities processed by earlier runs for the next run.

Note
Ignored while a run is active.

◆ RemoveProvider()

void SimilaritySession::RemoveProvider ( SimilarityProvider & provider)

Removes a provider, clears its results, and marks affected entities for resolution.

Note
Ignored while a run is active.

◆ UpdateProviderSettings()

bool SimilaritySession::UpdateProviderSettings ( SimilarityProvider & provider,
Settings & settings )

Updates a provider already in the session and schedules previously processed entities again.

Returns false during a run, when the provider is absent, or when it rejects the settings.

◆ GetProvider()

Ref< SimilarityProvider > SimilaritySession::GetProvider ( SimilarityProviderId id)

Returns a provider, or `nullptr` if `id` is absent.

◆ GetProviders()

std::vector< Ref< SimilarityProvider > > SimilaritySession::GetProviders ( )

◆ AddResolver()

bool SimilaritySession::AddResolver ( Ref< SimilaritySessionResolver > resolver)

Adds a resolver created for this session and marks entities processed by earlier runs for resolution.

Note
Returns false during a run, for a duplicate, or for a resolver from another session.

◆ RemoveResolver()

bool SimilaritySession::RemoveResolver ( SimilaritySessionResolver & resolver)

Removes a resolver.

Note
Returns false during a run, or if it is absent or belongs to another session.

◆ UpdateResolverSettings()

bool SimilaritySession::UpdateResolverSettings ( SimilaritySessionResolver & resolver,
Settings & settings )

Updates a resolver already in the session and marks previously processed entities for resolution.

Returns false during a run, when the resolver is absent or belongs to another session, or when it rejects the settings.

◆ GetResolver()

Ref< SimilaritySessionResolver > SimilaritySession::GetResolver ( SimilaritySessionResolverId id)

Returns a resolver, or `nullptr` if `id` is absent.

◆ GetResolvers()

std::vector< Ref< SimilaritySessionResolver > > SimilaritySession::GetResolvers ( )

◆ AddReceiver()

void SimilaritySession::AddReceiver ( Ref< SimilaritySessionReceiver > receiver)

Adds a receiver.

A running session keeps using the receiver list it started with.

◆ RemoveReceiver()

void SimilaritySession::RemoveReceiver ( SimilaritySessionReceiver & receiver)

Removes a receiver.

A running session keeps using the receiver list it started with.

◆ GetReceivers()

std::vector< Ref< SimilaritySessionReceiver > > SimilaritySession::GetReceivers ( )

◆ GetGraph()

Ref< SimilaritySessionGraph > SimilaritySession::GetGraph ( )

◆ Run()

Ref< SimilaritySessionCompletion > SimilaritySession::Run ( )

Starts a background run with the current graph, providers, and resolvers.

Changes are ignored until it finishes.

Note
Returns the active run's completion handle when already running.