Classes | |
| class | AnalysisMergeConflict |
| class | CollabChangeset |
| class | CollabGroup |
| class | CollabPermission |
| class | CollabSnapshot |
| class | CollabUndoEntry |
| class | CollabUser |
| struct | DatabaseConflictHandlerContext |
| struct | NameChangesetContext |
| class | Remote |
| struct | RemoteException |
| class | RemoteFile |
| class | RemoteFolder |
| class | RemoteProject |
| struct | SyncException |
| struct | TypeArchiveConflictHandlerContext |
| class | TypeArchiveMergeConflict |
Typedefs | |
| typedef std::function< bool(Ref< CollabChangeset >)> | NameChangesetFunction |
| typedef std::function< bool(const std::unordered_map< std::string, Ref< AnalysisMergeConflict > > &conflicts)> | AnalysisConflictHandler |
| typedef std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > > &conflicts)> | TypeArchiveConflictHandler |
Functions | |
| bool | DatabaseConflictHandlerCallback (void *ctxt, const char **keys, BNAnalysisMergeConflict **conflicts, size_t count) |
| bool | TypeArchiveConflictHandlerCallback (void *ctxt, BNTypeArchiveMergeConflict **conflicts, size_t count) |
| bool | NameChangesetCallback (void *ctxt, BNCollaborationChangeset *changeset) |
| template<> | |
| std::any | AnalysisMergeConflict::GetPathItem< std::any > (const std::string &path) |
| template<> | |
| std::string | AnalysisMergeConflict::GetPathItem< std::string > (const std::string &path) |
| template<> | |
| nlohmann::json | AnalysisMergeConflict::GetPathItem< nlohmann::json > (const std::string &path) |
| Ref< Remote > | GetActiveRemote () |
| void | SetActiveRemote (Ref< Remote > remote) |
| bool | StoreDataInKeychain (const std::string &key, const std::map< std::string, std::string > &data) |
| bool | HasDataInKeychain (const std::string &key) |
| std::optional< std::map< std::string, std::string > > | GetDataFromKeychain (const std::string &key) |
| bool | DeleteDataFromKeychain (const std::string &key) |
| void | LoadRemotes () |
| std::vector< Ref< Remote > > | GetRemotes () |
| Ref< Remote > | GetRemoteById (const std::string &remoteId) |
| Ref< Remote > | GetRemoteByAddress (const std::string &remoteAddress) |
| Ref< Remote > | GetRemoteByName (const std::string &name) |
| Ref< Remote > | CreateRemote (const std::string &name, const std::string &address) |
| void | RemoveRemote (const Ref< Remote > &remote) |
| void | SyncDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}, NameChangesetFunction nameChangeset=[](Ref< CollabChangeset >){ return true;}) |
| Completely sync a database, pushing/pulling/merging/applying changes. | |
| void | SyncTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, TypeArchiveConflictHandler conflictHandler, ProgressFunction progress={}) |
| Completely sync a type archive, pushing/pulling/merging/applying changes. | |
| Ref< Snapshot > | MergeSnapshots (Ref< Snapshot > first, Ref< Snapshot > second, AnalysisConflictHandler conflictHandler, ProgressFunction progress) |
| Merge a pair of snapshots and create a new snapshot with the result. | |
| std::string | DefaultProjectPath (Ref< RemoteProject > project) |
| Get the default directory path for a remote Project. | |
| std::string | DefaultFilePath (Ref< RemoteFile > file) |
| Get the default filepath for a remote File. | |
| Ref< FileMetadata > | DownloadFile (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) |
| Download a file from its remote, saving all snapshots to a database in the specified location. | |
| void | AssignSnapshotMap (Ref< Snapshot > localSnapshot, Ref< CollabSnapshot > remoteSnapshot) |
| Add a snapshot to the id map in a database. | |
| Ref< RemoteFile > | UploadDatabase (Ref< FileMetadata > metadata, Ref< RemoteProject > project, Ref< RemoteFolder > folder, ProgressFunction progress, NameChangesetFunction nameChangeset={}) |
| Upload a file, with database, to the remote under the given project. | |
| std::optional< std::string > | GetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot) |
| Get the remote author of a local snapshot. | |
| bool | IsCollaborationDatabase (Ref< Database > database) |
| Test if a database is valid for use in collaboration. | |
| Ref< Remote > | GetRemoteForLocalDatabase (Ref< Database > database) |
| Get the Remote for a Database. | |
| Ref< RemoteProject > | GetRemoteProjectForLocalDatabase (Ref< Database > database) |
| Get the Remote Project for a Database. | |
| Ref< RemoteFile > | GetRemoteFileForLocalDatabase (Ref< Database > database) |
| Get the Remote File for a Database. | |
| size_t | PullDatabase (Ref< Database > database, Ref< RemoteFile > file, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}, NameChangesetFunction nameChangeset={}) |
| Pull updated snapshots from the remote. | |
| void | MergeDatabase (Ref< Database > database, AnalysisConflictHandler conflictHandler, ProgressFunction progress={}) |
| Merge all leaf snapshots in a database down to a single leaf snapshot. | |
| size_t | PushDatabase (Ref< Database > database, Ref< RemoteFile > file, ProgressFunction progress={}) |
| Push locally added snapshots to the remote. | |
| void | DumpDatabase (Ref< Database > database) |
| Print debug information about a database to stdout. | |
| void | IgnoreSnapshot (Ref< Database > database, Ref< Snapshot > snapshot) |
| Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
| bool | IsSnapshotIgnored (Ref< Database > database, Ref< Snapshot > snapshot) |
| Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented) | |
| Ref< CollabSnapshot > | GetRemoteSnapshotFromLocal (Ref< Snapshot > snapshot) |
| Get the remote snapshot associated with a local snapshot (if it exists) | |
| Ref< Snapshot > | GetLocalSnapshotFromRemote (Ref< CollabSnapshot > snapshot, Ref< Database > database) |
| Get the local snapshot associated with a remote snapshot (if it exists) | |
| bool | IsCollaborationTypeArchive (Ref< TypeArchive > archive) |
| Test if a type archive is valid for use in collaboration. | |
| Ref< Remote > | GetRemoteForLocalTypeArchive (Ref< TypeArchive > archive) |
| Get the Remote for a Type Archive. | |
| Ref< RemoteProject > | GetRemoteProjectForLocalTypeArchive (Ref< TypeArchive > archive) |
| Get the Remote Project for a Type Archive. | |
| Ref< RemoteFile > | GetRemoteFileForLocalTypeArchive (Ref< TypeArchive > archive) |
| Get the Remote File for a Type Archive. | |
| Ref< CollabSnapshot > | GetRemoteSnapshotFromLocalTypeArchive (Ref< TypeArchive > archive, const std::string &snapshotId) |
| Get the remote snapshot associated with a local snapshot (if it exists) in a Type Archive. | |
| std::optional< std::string > | GetLocalSnapshotFromRemoteTypeArchive (Ref< CollabSnapshot > snapshot, Ref< TypeArchive > archive) |
| Get the local snapshot associated with a remote snapshot (if it exists) in a Type Archive. | |
| bool | IsTypeArchiveSnapshotIgnored (Ref< TypeArchive > archive, const std::string &snapshot) |
| Test if a snapshot is ignored from the archive. | |
| Ref< TypeArchive > | DownloadTypeArchive (Ref< RemoteFile > file, const std::string &dbPath, ProgressFunction progress={}) |
| Download a type archive from its remote, saving all snapshots to an archive in the specified location. | |
| Ref< RemoteFile > | UploadTypeArchive (Ref< TypeArchive > archive, Ref< RemoteProject > project, Ref< RemoteFolder > folder=nullptr, ProgressFunction progress={}, Ref< ProjectFile > coreFile=nullptr) |
| Upload a type archive. | |
| size_t | PushTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, ProgressFunction progress={}) |
| Push locally added snapshots to the remote. | |
| size_t | PullTypeArchive (Ref< TypeArchive > archive, Ref< RemoteFile > file, std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> conflictHandler, ProgressFunction progress={}) |
| Pull updated snapshots from the remote. | |
| void | DownloadDatabaseForFile (Ref< RemoteFile > file, const std::string &dbPath, bool force, ProgressFunction progress={}) |
| void | SetSnapshotAuthor (Ref< Database > database, Ref< Snapshot > snapshot, const std::string &author) |
| Set the remote author of a local snapshot (does not upload) | |
| struct BinaryNinja::Collaboration::DatabaseConflictHandlerContext |
| Class Members | ||
|---|---|---|
| function< bool(const unordered_map< string, Ref< AnalysisMergeConflict > >)> | callback | |
| struct BinaryNinja::Collaboration::NameChangesetContext |
| Class Members | ||
|---|---|---|
| function< bool(Ref< CollabChangeset >)> | callback | |
| struct BinaryNinja::Collaboration::TypeArchiveConflictHandlerContext |
| Class Members | ||
|---|---|---|
| function< bool(const vector< Ref< TypeArchiveMergeConflict > >)> | callback | |
| typedef std::function<bool(Ref<CollabChangeset>)> BinaryNinja::Collaboration::NameChangesetFunction |
| typedef std::function<bool(const std::unordered_map<std::string, Ref<AnalysisMergeConflict>>& conflicts)> BinaryNinja::Collaboration::AnalysisConflictHandler |
| typedef std::function<bool(const std::vector<Ref<TypeArchiveMergeConflict>>& conflicts)> BinaryNinja::Collaboration::TypeArchiveConflictHandler |
| bool BinaryNinja::Collaboration::DatabaseConflictHandlerCallback | ( | void * | ctxt, |
| const char ** | keys, | ||
| BNAnalysisMergeConflict ** | conflicts, | ||
| size_t | count ) |
| bool BinaryNinja::Collaboration::TypeArchiveConflictHandlerCallback | ( | void * | ctxt, |
| BNTypeArchiveMergeConflict ** | conflicts, | ||
| size_t | count ) |
| bool BinaryNinja::Collaboration::NameChangesetCallback | ( | void * | ctxt, |
| BNCollaborationChangeset * | changeset ) |
| std::any BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::any > | ( | const std::string & | path | ) |
| std::string BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< std::string > | ( | const std::string & | path | ) |
| nlohmann::json BinaryNinja::Collaboration::AnalysisMergeConflict::GetPathItem< nlohmann::json > | ( | const std::string & | path | ) |
| bool BinaryNinja::Collaboration::StoreDataInKeychain | ( | const std::string & | key, |
| const std::map< std::string, std::string > & | data ) |
| bool BinaryNinja::Collaboration::HasDataInKeychain | ( | const std::string & | key | ) |
| std::optional< std::map< std::string, std::string > > BinaryNinja::Collaboration::GetDataFromKeychain | ( | const std::string & | key | ) |
| bool BinaryNinja::Collaboration::DeleteDataFromKeychain | ( | const std::string & | key | ) |
| void BinaryNinja::Collaboration::LoadRemotes | ( | ) |
| Ref< Remote > BinaryNinja::Collaboration::CreateRemote | ( | const std::string & | name, |
| const std::string & | address ) |
| void BinaryNinja::Collaboration::SyncDatabase | ( | Ref< Database > | database, |
| Ref< RemoteFile > | file, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {}, | ||
| NameChangesetFunction | nameChangeset = [](Ref< CollabChangeset >){ return true;} ) |
Completely sync a database, pushing/pulling/merging/applying changes.
| database | Database to sync |
| file | Remote File to sync with |
| conflictHandler | Function to call to resolve snapshot conflicts |
| progress | Function to call for progress updates |
| nameChangeset | Function to call for naming a pushed changeset, if necessary |
| SyncException | If there is an error syncing |
| void BinaryNinja::Collaboration::SyncTypeArchive | ( | Ref< TypeArchive > | archive, |
| Ref< RemoteFile > | file, | ||
| TypeArchiveConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {} ) |
| Ref< Snapshot > BinaryNinja::Collaboration::MergeSnapshots | ( | Ref< Snapshot > | first, |
| Ref< Snapshot > | second, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress ) |
Merge a pair of snapshots and create a new snapshot with the result.
| first | First snapshot to merge |
| second | Second snapshot to merge |
| conflictHandler | Function to call when merge conflicts are encountered |
| progress | Function to call for progress updates and cancelling |
| SyncException | If the snapshots have no common ancestor |
| std::string BinaryNinja::Collaboration::DefaultProjectPath | ( | Ref< RemoteProject > | project | ) |
| std::string BinaryNinja::Collaboration::DefaultFilePath | ( | Ref< RemoteFile > | file | ) |
Get the default filepath for a remote File.
This is based off the Setting for collaboration.directory, the file's id, the file's project's id, and the file's remote's id.
| file | Remote File |
| Ref< FileMetadata > BinaryNinja::Collaboration::DownloadFile | ( | Ref< RemoteFile > | file, |
| const std::string & | dbPath, | ||
| ProgressFunction | progress = {} ) |
Download a file from its remote, saving all snapshots to a database in the specified location.
Returns a FileContext for opening the file later.
| file | Remote File to download and open |
| dbPath | File path for saved database |
| progress | Function to call for progress updates |
| SyncException | If there was an error downloading |
| void BinaryNinja::Collaboration::AssignSnapshotMap | ( | Ref< Snapshot > | localSnapshot, |
| Ref< CollabSnapshot > | remoteSnapshot ) |
Add a snapshot to the id map in a database.
| localSnapshot | Local snapshot, will use this snapshot's database |
| remoteSnapshot | Remote snapshot |
| Ref< RemoteFile > BinaryNinja::Collaboration::UploadDatabase | ( | Ref< FileMetadata > | metadata, |
| Ref< RemoteProject > | project, | ||
| Ref< RemoteFolder > | folder, | ||
| ProgressFunction | progress, | ||
| NameChangesetFunction | nameChangeset = {} ) |
Upload a file, with database, to the remote under the given project.
| metadata | Local file with database |
| project | Remote project under which to place the new file |
| progress | Function to call for progress updates |
| nameChangeset | Function to call for naming a pushed changeset, if necessary |
| folderId | Id of folder that will contain the resulting file |
| SyncException | If there was an error uploading |
| std::optional< std::string > BinaryNinja::Collaboration::GetSnapshotAuthor | ( | Ref< Database > | database, |
| Ref< Snapshot > | snapshot ) |
Get the remote author of a local snapshot.
| database | Parent database |
| snapshot | Snapshot to query |
Test if a database is valid for use in collaboration.
| database | Database |
| Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalDatabase | ( | Ref< Database > | database | ) |
| Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalDatabase | ( | Ref< Database > | database | ) |
| size_t BinaryNinja::Collaboration::PullDatabase | ( | Ref< Database > | database, |
| Ref< RemoteFile > | file, | ||
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {}, | ||
| NameChangesetFunction | nameChangeset = {} ) |
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
| database | Database to pull |
| file | Remote File to pull to |
| conflictHandler | Function to call to resolve snapshot conflicts |
| progress | Function to call for progress updates |
| nameChangeset | Function to call for naming a pushed changeset, if necessary |
| SyncException | If there is an error pulling |
| void BinaryNinja::Collaboration::MergeDatabase | ( | Ref< Database > | database, |
| AnalysisConflictHandler | conflictHandler, | ||
| ProgressFunction | progress = {} ) |
Merge all leaf snapshots in a database down to a single leaf snapshot.
| database | Database to merge |
| progress | Function to call for progress updates |
| conflictHandler | Function to call to resolve snapshot conflicts |
| SyncException | If there was an error merging |
| size_t BinaryNinja::Collaboration::PushDatabase | ( | Ref< Database > | database, |
| Ref< RemoteFile > | file, | ||
| ProgressFunction | progress = {} ) |
Push locally added snapshots to the remote.
| database | Database to push |
| file | Remote File to push to |
| progress | Function to call for progress updates |
| SyncException | If there is an error pushing |
Print debug information about a database to stdout.
| database | Database to dump |
| void BinaryNinja::Collaboration::IgnoreSnapshot | ( | Ref< Database > | database, |
| Ref< Snapshot > | snapshot ) |
Ignore a snapshot from database syncing operations TODO: This is in place of deleting differential snapshots (which is unimplemented)
| database | Parent database |
| snapshot | Snapshot to ignore |
| bool BinaryNinja::Collaboration::IsSnapshotIgnored | ( | Ref< Database > | database, |
| Ref< Snapshot > | snapshot ) |
Test if a snapshot is ignored from the database TODO: This is in place of deleting differential snapshots (which is unimplemented)
| database | Parent database |
| snapshot | Snapshot to test |
| Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocal | ( | Ref< Snapshot > | snapshot | ) |
Get the remote snapshot associated with a local snapshot (if it exists)
| snapshot | Local snapshot |
| bool BinaryNinja::Collaboration::IsCollaborationTypeArchive | ( | Ref< TypeArchive > | archive | ) |
Test if a type archive is valid for use in collaboration.
| archive | Type archive |
| Ref< Remote > BinaryNinja::Collaboration::GetRemoteForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
| Ref< RemoteProject > BinaryNinja::Collaboration::GetRemoteProjectForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
| Ref< RemoteFile > BinaryNinja::Collaboration::GetRemoteFileForLocalTypeArchive | ( | Ref< TypeArchive > | archive | ) |
| Ref< CollabSnapshot > BinaryNinja::Collaboration::GetRemoteSnapshotFromLocalTypeArchive | ( | Ref< TypeArchive > | archive, |
| const std::string & | snapshotId ) |
| std::optional< std::string > BinaryNinja::Collaboration::GetLocalSnapshotFromRemoteTypeArchive | ( | Ref< CollabSnapshot > | snapshot, |
| Ref< TypeArchive > | archive ) |
| bool BinaryNinja::Collaboration::IsTypeArchiveSnapshotIgnored | ( | Ref< TypeArchive > | archive, |
| const std::string & | snapshot ) |
| Ref< TypeArchive > BinaryNinja::Collaboration::DownloadTypeArchive | ( | Ref< RemoteFile > | file, |
| const std::string & | dbPath, | ||
| ProgressFunction | progress = {} ) |
Download a type archive from its remote, saving all snapshots to an archive in the specified location.
Returns a Ref<TypeArchive> for using later.
| file | Remote Type Archive file to download and open |
| dbPath | File path for saved archive |
| progress | Function to call for progress updates |
| SyncException | If there was an error downloading |
| Ref< RemoteFile > BinaryNinja::Collaboration::UploadTypeArchive | ( | Ref< TypeArchive > | archive, |
| Ref< RemoteProject > | project, | ||
| Ref< RemoteFolder > | folder = nullptr, | ||
| ProgressFunction | progress = {}, | ||
| Ref< ProjectFile > | coreFile = nullptr ) |
Upload a type archive.
| archive | Type archive |
| project | Containing project |
| folder | Containing folder |
| progress | Function to call for progress updates |
| coreFile | Core ProjectFile structure, if archive is in a project |
| size_t BinaryNinja::Collaboration::PushTypeArchive | ( | Ref< TypeArchive > | archive, |
| Ref< RemoteFile > | file, | ||
| ProgressFunction | progress = {} ) |
Push locally added snapshots to the remote.
| archive | Type Archive to push |
| file | Remote File to push to |
| progress | Function to call for progress updates |
| SyncException | If there is an error pushing |
| size_t BinaryNinja::Collaboration::PullTypeArchive | ( | Ref< TypeArchive > | archive, |
| Ref< RemoteFile > | file, | ||
| std::function< bool(const std::vector< Ref< TypeArchiveMergeConflict > >)> | conflictHandler, | ||
| ProgressFunction | progress = {} ) |
Pull updated snapshots from the remote.
Merge local changes with remote changes and potentially create a new snapshot for unsaved changes, named via nameChangeset.
| archive | Type Archive to pull |
| file | Remote File to pull to |
| conflictHandler | Function to call to resolve snapshot conflicts |
| progress | Function to call for progress updates |
| nameChangeset | Function to call for naming a pushed changeset, if necessary |
| SyncException | If there is an error pulling |
| void BinaryNinja::Collaboration::DownloadDatabaseForFile | ( | Ref< RemoteFile > | file, |
| const std::string & | dbPath, | ||
| bool | force, | ||
| ProgressFunction | progress = {} ) |