Trait sui_core::execution_cache::ExecutionCacheRead
source · pub trait ExecutionCacheRead: Send + Sync {
Show 36 methods
// Required methods
fn get_package_object(
&self,
id: &ObjectID
) -> SuiResult<Option<PackageObject>>;
fn force_reload_system_packages(&self, system_package_ids: &[ObjectID]);
fn get_object(&self, id: &ObjectID) -> SuiResult<Option<Object>>;
fn get_latest_object_ref_or_tombstone(
&self,
object_id: ObjectID
) -> SuiResult<Option<ObjectRef>>;
fn get_latest_object_or_tombstone(
&self,
object_id: ObjectID
) -> SuiResult<Option<(ObjectKey, ObjectOrTombstone)>>;
fn get_object_by_key(
&self,
object_id: &ObjectID,
version: SequenceNumber
) -> SuiResult<Option<Object>>;
fn multi_get_objects_by_key(
&self,
object_keys: &[ObjectKey]
) -> SuiResult<Vec<Option<Object>>>;
fn object_exists_by_key(
&self,
object_id: &ObjectID,
version: SequenceNumber
) -> SuiResult<bool>;
fn multi_object_exists_by_key(
&self,
object_keys: &[ObjectKey]
) -> SuiResult<Vec<bool>>;
fn find_object_lt_or_eq_version(
&self,
object_id: ObjectID,
version: SequenceNumber
) -> SuiResult<Option<Object>>;
fn get_lock(
&self,
obj_ref: ObjectRef,
epoch_store: &AuthorityPerEpochStore
) -> SuiResult<ObjectLockStatus>;
fn _get_live_objref(&self, object_id: ObjectID) -> SuiResult<ObjectRef>;
fn check_owned_objects_are_live(
&self,
owned_object_refs: &[ObjectRef]
) -> SuiResult;
fn multi_get_transaction_blocks(
&self,
digests: &[TransactionDigest]
) -> SuiResult<Vec<Option<Arc<VerifiedTransaction>>>>;
fn multi_get_executed_effects_digests(
&self,
digests: &[TransactionDigest]
) -> SuiResult<Vec<Option<TransactionEffectsDigest>>>;
fn multi_get_effects(
&self,
digests: &[TransactionEffectsDigest]
) -> SuiResult<Vec<Option<TransactionEffects>>>;
fn multi_get_events(
&self,
event_digests: &[TransactionEventsDigest]
) -> SuiResult<Vec<Option<TransactionEvents>>>;
fn notify_read_executed_effects_digests<'a>(
&'a self,
digests: &'a [TransactionDigest]
) -> BoxFuture<'a, SuiResult<Vec<TransactionEffectsDigest>>>;
fn get_sui_system_state_object_unsafe(&self) -> SuiResult<SuiSystemState>;
fn get_marker_value(
&self,
object_id: &ObjectID,
version: SequenceNumber,
epoch_id: EpochId
) -> SuiResult<Option<MarkerValue>>;
fn get_latest_marker(
&self,
object_id: &ObjectID,
epoch_id: EpochId
) -> SuiResult<Option<(SequenceNumber, MarkerValue)>>;
// Provided methods
fn get_objects(
&self,
objects: &[ObjectID]
) -> SuiResult<Vec<Option<Object>>> { ... }
fn multi_get_objects_with_more_accurate_error_return(
&self,
object_refs: &[ObjectRef]
) -> Result<Vec<Object>, SuiError> { ... }
fn multi_input_objects_available(
&self,
keys: &[InputKey],
receiving_objects: HashSet<InputKey>,
epoch: EpochId
) -> Result<Vec<bool>, SuiError> { ... }
fn get_transaction_block(
&self,
digest: &TransactionDigest
) -> SuiResult<Option<Arc<VerifiedTransaction>>> { ... }
fn get_transactions_and_serialized_sizes(
&self,
digests: &[TransactionDigest]
) -> SuiResult<Vec<Option<(VerifiedTransaction, usize)>>> { ... }
fn is_tx_already_executed(
&self,
digest: &TransactionDigest
) -> SuiResult<bool> { ... }
fn multi_get_executed_effects(
&self,
digests: &[TransactionDigest]
) -> SuiResult<Vec<Option<TransactionEffects>>> { ... }
fn get_executed_effects(
&self,
digest: &TransactionDigest
) -> SuiResult<Option<TransactionEffects>> { ... }
fn get_effects(
&self,
digest: &TransactionEffectsDigest
) -> SuiResult<Option<TransactionEffects>> { ... }
fn get_events(
&self,
digest: &TransactionEventsDigest
) -> SuiResult<Option<TransactionEvents>> { ... }
fn notify_read_executed_effects<'a>(
&'a self,
digests: &'a [TransactionDigest]
) -> BoxFuture<'a, SuiResult<Vec<TransactionEffects>>> { ... }
fn get_last_shared_object_deletion_info(
&self,
object_id: &ObjectID,
epoch_id: EpochId
) -> SuiResult<Option<(SequenceNumber, TransactionDigest)>> { ... }
fn get_deleted_shared_object_previous_tx_digest(
&self,
object_id: &ObjectID,
version: SequenceNumber,
epoch_id: EpochId
) -> SuiResult<Option<TransactionDigest>> { ... }
fn have_received_object_at_version(
&self,
object_id: &ObjectID,
version: SequenceNumber,
epoch_id: EpochId
) -> SuiResult<bool> { ... }
fn have_deleted_owned_object_at_version_or_after(
&self,
object_id: &ObjectID,
version: SequenceNumber,
epoch_id: EpochId
) -> SuiResult<bool> { ... }
}
Required Methods§
fn get_package_object(&self, id: &ObjectID) -> SuiResult<Option<PackageObject>>
fn force_reload_system_packages(&self, system_package_ids: &[ObjectID])
fn get_object(&self, id: &ObjectID) -> SuiResult<Option<Object>>
fn get_latest_object_ref_or_tombstone( &self, object_id: ObjectID ) -> SuiResult<Option<ObjectRef>>
fn get_latest_object_or_tombstone( &self, object_id: ObjectID ) -> SuiResult<Option<(ObjectKey, ObjectOrTombstone)>>
fn get_object_by_key( &self, object_id: &ObjectID, version: SequenceNumber ) -> SuiResult<Option<Object>>
fn multi_get_objects_by_key( &self, object_keys: &[ObjectKey] ) -> SuiResult<Vec<Option<Object>>>
fn object_exists_by_key( &self, object_id: &ObjectID, version: SequenceNumber ) -> SuiResult<bool>
fn multi_object_exists_by_key( &self, object_keys: &[ObjectKey] ) -> SuiResult<Vec<bool>>
sourcefn find_object_lt_or_eq_version(
&self,
object_id: ObjectID,
version: SequenceNumber
) -> SuiResult<Option<Object>>
fn find_object_lt_or_eq_version( &self, object_id: ObjectID, version: SequenceNumber ) -> SuiResult<Option<Object>>
Return the object with version less then or eq to the provided seq number. This is used by indexer to find the correct version of dynamic field child object. We do not store the version of the child object, but because of lamport timestamp, we know the child must have version number less then or eq to the parent.
fn get_lock( &self, obj_ref: ObjectRef, epoch_store: &AuthorityPerEpochStore ) -> SuiResult<ObjectLockStatus>
fn _get_live_objref(&self, object_id: ObjectID) -> SuiResult<ObjectRef>
fn check_owned_objects_are_live( &self, owned_object_refs: &[ObjectRef] ) -> SuiResult
fn multi_get_transaction_blocks( &self, digests: &[TransactionDigest] ) -> SuiResult<Vec<Option<Arc<VerifiedTransaction>>>>
fn multi_get_executed_effects_digests( &self, digests: &[TransactionDigest] ) -> SuiResult<Vec<Option<TransactionEffectsDigest>>>
fn multi_get_effects( &self, digests: &[TransactionEffectsDigest] ) -> SuiResult<Vec<Option<TransactionEffects>>>
fn multi_get_events( &self, event_digests: &[TransactionEventsDigest] ) -> SuiResult<Vec<Option<TransactionEvents>>>
fn notify_read_executed_effects_digests<'a>( &'a self, digests: &'a [TransactionDigest] ) -> BoxFuture<'a, SuiResult<Vec<TransactionEffectsDigest>>>
fn get_sui_system_state_object_unsafe(&self) -> SuiResult<SuiSystemState>
sourcefn get_marker_value(
&self,
object_id: &ObjectID,
version: SequenceNumber,
epoch_id: EpochId
) -> SuiResult<Option<MarkerValue>>
fn get_marker_value( &self, object_id: &ObjectID, version: SequenceNumber, epoch_id: EpochId ) -> SuiResult<Option<MarkerValue>>
Get the marker at a specific version
sourcefn get_latest_marker(
&self,
object_id: &ObjectID,
epoch_id: EpochId
) -> SuiResult<Option<(SequenceNumber, MarkerValue)>>
fn get_latest_marker( &self, object_id: &ObjectID, epoch_id: EpochId ) -> SuiResult<Option<(SequenceNumber, MarkerValue)>>
Get the latest marker for a given object.
Provided Methods§
fn get_objects(&self, objects: &[ObjectID]) -> SuiResult<Vec<Option<Object>>>
sourcefn multi_get_objects_with_more_accurate_error_return(
&self,
object_refs: &[ObjectRef]
) -> Result<Vec<Object>, SuiError>
fn multi_get_objects_with_more_accurate_error_return( &self, object_refs: &[ObjectRef] ) -> Result<Vec<Object>, SuiError>
Load a list of objects from the store by object reference. If they exist in the store, they are returned directly. If any object missing, we try to figure out the best error to return. If the object we are asking is currently locked at a future version, we know this transaction is out-of-date and we return a ObjectVersionUnavailableForConsumption, which indicates this is not retriable. Otherwise, we return a ObjectNotFound error, which indicates this is retriable.
sourcefn multi_input_objects_available(
&self,
keys: &[InputKey],
receiving_objects: HashSet<InputKey>,
epoch: EpochId
) -> Result<Vec<bool>, SuiError>
fn multi_input_objects_available( &self, keys: &[InputKey], receiving_objects: HashSet<InputKey>, epoch: EpochId ) -> Result<Vec<bool>, SuiError>
Used by transaction manager to determine if input objects are ready. Distinct from multi_get_object_by_key because it also consults markers to handle the case where an object will never become available (e.g. because it has been received by some other transaction already).
fn get_transaction_block( &self, digest: &TransactionDigest ) -> SuiResult<Option<Arc<VerifiedTransaction>>>
fn get_transactions_and_serialized_sizes( &self, digests: &[TransactionDigest] ) -> SuiResult<Vec<Option<(VerifiedTransaction, usize)>>>
fn is_tx_already_executed(&self, digest: &TransactionDigest) -> SuiResult<bool>
fn multi_get_executed_effects( &self, digests: &[TransactionDigest] ) -> SuiResult<Vec<Option<TransactionEffects>>>
fn get_executed_effects( &self, digest: &TransactionDigest ) -> SuiResult<Option<TransactionEffects>>
fn get_effects( &self, digest: &TransactionEffectsDigest ) -> SuiResult<Option<TransactionEffects>>
fn get_events( &self, digest: &TransactionEventsDigest ) -> SuiResult<Option<TransactionEvents>>
fn notify_read_executed_effects<'a>( &'a self, digests: &'a [TransactionDigest] ) -> BoxFuture<'a, SuiResult<Vec<TransactionEffects>>>
If the shared object was deleted, return deletion info for the current live version
If the shared object was deleted, return deletion info for the specified version.