summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2023-08-10 16:41:26 -0400
committerBrian Potchik <brian@vector35.com>2023-08-10 16:41:26 -0400
commite280f8d5b348808a06d73e7a5db91e13b58d2c16 (patch)
treebe6b5abd5ee0a624bf3b21ab1bc3c79dd58d02ef /python
parentb6ce48c4f5be4cd43482e1ff762e088fd11b7227 (diff)
Add OnNotificationBarrier callback and the ability to selectively enable notification callbacks.
Diffstat (limited to 'python')
-rw-r--r--python/binaryview.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index d94621f7..3f2d9a20 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -467,6 +467,7 @@ class BinaryDataNotificationCallbacks:
self._notify = notify
self._cb = core.BNBinaryDataNotification()
self._cb.context = 0
+ self._cb.notificationBarrier = self._cb.notificationBarrier.__class__(self._notification_barrier)
self._cb.dataWritten = self._cb.dataWritten.__class__(self._data_written)
self._cb.dataInserted = self._cb.dataInserted.__class__(self._data_inserted)
self._cb.dataRemoved = self._cb.dataRemoved.__class__(self._data_removed)
@@ -480,11 +481,12 @@ class BinaryDataNotificationCallbacks:
self._cb.dataMetadataUpdated = self._cb.dataMetadataUpdated.__class__(self._data_metadata_updated)
self._cb.tagTypeUpdated = self._cb.tagTypeUpdated.__class__(self._tag_type_updated)
self._cb.tagAdded = self._cb.tagAdded.__class__(self._tag_added)
- self._cb.tagUpdated = self._cb.tagUpdated.__class__(self._tag_updated)
self._cb.tagRemoved = self._cb.tagRemoved.__class__(self._tag_removed)
+ self._cb.tagUpdated = self._cb.tagUpdated.__class__(self._tag_updated)
+
self._cb.symbolAdded = self._cb.symbolAdded.__class__(self._symbol_added)
- self._cb.symbolUpdated = self._cb.symbolUpdated.__class__(self._symbol_updated)
self._cb.symbolRemoved = self._cb.symbolRemoved.__class__(self._symbol_removed)
+ self._cb.symbolUpdated = self._cb.symbolUpdated.__class__(self._symbol_updated)
self._cb.stringFound = self._cb.stringFound.__class__(self._string_found)
self._cb.stringRemoved = self._cb.stringRemoved.__class__(self._string_removed)
self._cb.typeDefined = self._cb.typeDefined.__class__(self._type_defined)
@@ -492,11 +494,12 @@ class BinaryDataNotificationCallbacks:
self._cb.typeReferenceChanged = self._cb.typeReferenceChanged.__class__(self._type_ref_changed)
self._cb.typeFieldReferenceChanged = self._cb.typeFieldReferenceChanged.__class__(self._type_field_ref_changed)
self._cb.segmentAdded = self._cb.segmentAdded.__class__(self._segment_added)
- self._cb.segmentUpdated = self._cb.segmentUpdated.__class__(self._segment_updated)
self._cb.segmentRemoved = self._cb.segmentRemoved.__class__(self._segment_removed)
+ self._cb.segmentUpdated = self._cb.segmentUpdated.__class__(self._segment_updated)
+
self._cb.sectionAdded = self._cb.sectionAdded.__class__(self._section_added)
- self._cb.sectionUpdated = self._cb.sectionUpdated.__class__(self._section_updated)
self._cb.sectionRemoved = self._cb.sectionRemoved.__class__(self._section_removed)
+ self._cb.sectionUpdated = self._cb.sectionUpdated.__class__(self._section_updated)
self._cb.componentNameUpdated = self._cb.componentNameUpdated.__class__(self._component_name_updated)
self._cb.componentAdded = self._cb.componentAdded.__class__(self._component_added)
self._cb.componentRemoved = self._cb.componentRemoved.__class__(self._component_removed)
@@ -512,6 +515,12 @@ class BinaryDataNotificationCallbacks:
def _unregister(self) -> None:
core.BNUnregisterDataNotification(self._view.handle, self._cb)
+ def _notification_barrier(self, ctxt, view: core.BNBinaryView) -> None:
+ try:
+ self._notify.notification_barrier(self._view)
+ except OSError:
+ log_error(traceback.format_exc())
+
def _data_written(self, ctxt, view: core.BNBinaryView, offset: int, length: int) -> None:
try:
self._notify.data_written(self._view, offset, length)