pub struct FileObject { /* private fields */ }Expand description
BACnet File object.
Represents a file accessible via AtomicReadFile / AtomicWriteFile services.
The file_access_method determines whether the file is accessed as a
byte stream (FileAccessMethod::STREAM_ACCESS) or as a sequence of
fixed-length records (FileAccessMethod::RECORD_ACCESS).
Implementations§
Source§impl FileObject
impl FileObject
Sourcepub fn new(
instance: u32,
name: impl Into<String>,
file_type: impl Into<String>,
) -> Result<Self, Error>
pub fn new( instance: u32, name: impl Into<String>, file_type: impl Into<String>, ) -> Result<Self, Error>
Create a new File object.
Defaults to stream access (file_access_method = STREAM_ACCESS), empty data, not read-only, archive = false.
Sourcepub fn set_description(&mut self, desc: impl Into<String>)
pub fn set_description(&mut self, desc: impl Into<String>)
Set the description.
Sourcepub fn set_file_type(&mut self, ft: impl Into<String>)
pub fn set_file_type(&mut self, ft: impl Into<String>)
Set the file type string.
Sourcepub fn set_data(&mut self, data: Vec<u8>)
pub fn set_data(&mut self, data: Vec<u8>)
Set stream data; File_Size follows it unless the object is
RECORD_ACCESS (any other access-method value, recognised or not,
is the stream channel, as in
set_file_access_method).
Sourcepub fn set_file_access_method(&mut self, method: u32)
pub fn set_file_access_method(&mut self, method: u32)
Set the file access method. Accepts the raw BACnetFileAccessMethod
value: FileAccessMethod::STREAM_ACCESS (1) or
FileAccessMethod::RECORD_ACCESS (0).
File_Size and Record_Count are recomputed from the channel the object switches to: Table 12-16 footnote 2 has Record_Count present only under RECORD_ACCESS, and File_Size counts that channel’s octets.
Sourcepub fn set_records(&mut self, records: Vec<Vec<u8>>)
pub fn set_records(&mut self, records: Vec<Vec<u8>>)
Set the records; Record_Count and File_Size follow them while the object is RECORD_ACCESS (Table 12-16 footnote 2).
Sourcepub fn set_modification_date(&mut self, date: Date, time: Time)
pub fn set_modification_date(&mut self, date: Date, time: Time)
Set the modification date.
Sourcepub fn set_archive(&mut self, archive: bool)
pub fn set_archive(&mut self, archive: bool)
Set the archive flag.
Sourcepub fn set_read_only(&mut self, read_only: bool)
pub fn set_read_only(&mut self, read_only: bool)
Set the read-only flag.
Sourcepub fn set_max_file_size(&mut self, max_octets: u64)
pub fn set_max_file_size(&mut self, max_octets: u64)
Set the growth cap, in octets, for network writes to this file.
The cap bounds what AtomicWriteFile can add; it never invalidates
contents preloaded through set_data, which may
exceed it and still be overwritten in place. Clamped to i32::MAX
so every resolved write position fits the ACK.
Sourcepub fn max_file_size(&self) -> u64
pub fn max_file_size(&self) -> u64
The growth cap, in octets, for network writes to this file.
Sourcepub fn set_max_record_count(&mut self, max_records: u64)
pub fn set_max_record_count(&mut self, max_records: u64)
Set the growth cap, in records, for network writes to this file.
Same growth-only semantics as
set_max_file_size: records preloaded
through set_records are never refused. Clamped
to DEFAULT_MAX_RECORD_COUNT, the decoder ceiling, so a file grown
by network writes stays at or under what one AtomicReadFile-ACK
carries; a larger preloaded file reads back in windows of at most
that many records.
Sourcepub fn max_record_count(&self) -> u64
pub fn max_record_count(&self) -> u64
The growth cap, in records, for network writes to this file.
Trait Implementations§
Source§impl BACnetObject for FileObject
impl BACnetObject for FileObject
Source§fn object_identifier(&self) -> ObjectIdentifier
fn object_identifier(&self) -> ObjectIdentifier
Source§fn object_name(&self) -> &str
fn object_name(&self) -> &str
Source§fn read_property(
&self,
property: PropertyIdentifier,
array_index: Option<u32>,
) -> Result<PropertyValue, Error>
fn read_property( &self, property: PropertyIdentifier, array_index: Option<u32>, ) -> Result<PropertyValue, Error>
Source§fn write_property(
&mut self,
property: PropertyIdentifier,
_array_index: Option<u32>,
value: PropertyValue,
_priority: Option<u8>,
) -> Result<(), Error>
fn write_property( &mut self, property: PropertyIdentifier, _array_index: Option<u32>, value: PropertyValue, _priority: Option<u8>, ) -> Result<(), Error>
Source§fn property_metadata(&self) -> Cow<'_, [PropertyMetadata]>
fn property_metadata(&self) -> Cow<'_, [PropertyMetadata]>
Source§fn property_list(&self) -> Cow<'static, [PropertyIdentifier]>
fn property_list(&self) -> Cow<'static, [PropertyIdentifier]>
Source§fn file_storage_internal(&self) -> Option<&dyn FileStorage>
fn file_storage_internal(&self) -> Option<&dyn FileStorage>
Source§fn file_storage_internal_mut(&mut self) -> Option<&mut dyn FileStorage>
fn file_storage_internal_mut(&mut self) -> Option<&mut dyn FileStorage>
Source§fn write_property_from(
&mut self,
property: PropertyIdentifier,
array_index: Option<u32>,
value: PropertyValue,
priority: Option<u8>,
_origin: &CommandOrigin,
) -> Result<(), Error>
fn write_property_from( &mut self, property: PropertyIdentifier, array_index: Option<u32>, value: PropertyValue, priority: Option<u8>, _origin: &CommandOrigin, ) -> Result<(), Error>
Source§fn is_writable_property(&self, property: PropertyIdentifier) -> bool
fn is_writable_property(&self, property: PropertyIdentifier) -> bool
property for this object. Read moreSource§fn is_array_property(&self, property: PropertyIdentifier) -> bool
fn is_array_property(&self, property: PropertyIdentifier) -> bool
property accepts an array index on this object. Read moreSource§fn is_list_property(&self, property: PropertyIdentifier) -> bool
fn is_list_property(&self, property: PropertyIdentifier) -> bool
property is a BACnetLIST on this object. Read moreSource§fn is_createable(&self) -> bool
fn is_createable(&self) -> bool
Source§fn creation_only_properties(&self) -> &'static [PropertyIdentifier]
fn creation_only_properties(&self) -> &'static [PropertyIdentifier]
Source§fn initialize_property(
&mut self,
_property: PropertyIdentifier,
_value: PropertyValue,
) -> Result<(), Error>
fn initialize_property( &mut self, _property: PropertyIdentifier, _value: PropertyValue, ) -> Result<(), Error>
Self::creation_only_properties, written whole. Read moreSource§fn is_deleteable(&self) -> bool
fn is_deleteable(&self) -> bool
Source§fn required_properties(&self) -> Cow<'static, [PropertyIdentifier]>
fn required_properties(&self) -> Cow<'static, [PropertyIdentifier]>
Source§fn supports_cov(&self) -> bool
fn supports_cov(&self) -> bool
Source§fn supports_subscribe_cov_property(&self) -> bool
fn supports_subscribe_cov_property(&self) -> bool
Source§fn supports_cov_property(&self, property: PropertyIdentifier) -> bool
fn supports_cov_property(&self, property: PropertyIdentifier) -> bool
Source§fn cov_increment(&self) -> Option<f64>
fn cov_increment(&self) -> Option<f64>
Source§fn cov_reported_properties(&self) -> &'static [CovReportedProperty]
fn cov_reported_properties(&self) -> &'static [CovReportedProperty]
Source§fn set_overridden(&mut self, _overridden: bool)
fn set_overridden(&mut self, _overridden: bool)
Source§fn evaluate_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
fn evaluate_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
Source§fn tick_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
fn tick_intrinsic_reporting(&mut self) -> Option<TransitionOutcome>
Time_Delay countdown for a pending transition. Read moreSource§fn tick_schedule(
&mut self,
_today: SpecificDate,
_time: Time,
_calendar_active: &dyn Fn(ObjectIdentifier) -> bool,
) -> Option<ScheduleWrite>
fn tick_schedule( &mut self, _today: SpecificDate, _time: Time, _calendar_active: &dyn Fn(ObjectIdentifier) -> bool, ) -> Option<ScheduleWrite>
Source§fn take_owed_schedule_writes(&mut self) -> Vec<ScheduleWrite>
fn take_owed_schedule_writes(&mut self) -> Vec<ScheduleWrite>
Source§fn complete_schedule_write(
&mut self,
_write: &ScheduleWrite,
_outcomes: &[ScheduleTargetOutcome],
) -> bool
fn complete_schedule_write( &mut self, _write: &ScheduleWrite, _outcomes: &[ScheduleTargetOutcome], ) -> bool
write, one of this schedule’s writes:
outcomes holds one entry per member of write.references, in order. Read moreSource§fn retry_refusals_naming(
&self,
_target: ObjectIdentifier,
) -> Option<ScheduleWrite>
fn retry_refusals_naming( &self, _target: ObjectIdentifier, ) -> Option<ScheduleWrite>
retry of the current value to the
references whose last write was refused and that name target, an
object just added to the database (#1440), so the refusal can clear
without waiting for the next pass. None when no such refusal
stands, or when the pass itself would retry nothing: out of service,
outside Effective_Period, or with a NULL Present_Value. Only
meaningful for Schedule objects; default returns None.Source§fn acknowledge_alarm(
&mut self,
_transition_bit: EventTransitionBits,
) -> Result<(), Error>
fn acknowledge_alarm( &mut self, _transition_bit: EventTransitionBits, ) -> Result<(), Error>
transition_bit flags in acked_transitions.
Returns Ok(()) if the object supports event detection, Err otherwise.Source§fn apply_life_safety_operation(
&mut self,
_operation: LifeSafetyOperation,
) -> Result<LifeSafetyOperationOutcome, Error>
fn apply_life_safety_operation( &mut self, _operation: LifeSafetyOperation, ) -> Result<LifeSafetyOperationOutcome, Error>
Source§fn set_life_safety_operation_expected_internal(
&mut self,
_operation: LifeSafetyOperation,
) -> Result<(), Error>
fn set_life_safety_operation_expected_internal( &mut self, _operation: LifeSafetyOperation, ) -> Result<(), Error>
Source§fn set_event_state_internal(&mut self, _state: EventState) -> Result<(), Error>
fn set_event_state_internal(&mut self, _state: EventState) -> Result<(), Error>
Event_State transition. Read moreSource§fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
fn enrollment_eval_state_internal(&self) -> Option<EventEnrollmentEvalState>
Source§fn set_enrollment_eval_state_internal(
&mut self,
_state: EventEnrollmentEvalState,
) -> Result<(), Error>
fn set_enrollment_eval_state_internal( &mut self, _state: EventEnrollmentEvalState, ) -> Result<(), Error>
Source§fn enrollment_eval_source_internal(
&self,
) -> Option<Option<EventEnrollmentMonitoredSource>>
fn enrollment_eval_source_internal( &self, ) -> Option<Option<EventEnrollmentMonitoredSource>>
Source§fn set_enrollment_eval_source_internal(
&mut self,
_source: Option<EventEnrollmentMonitoredSource>,
) -> Result<(), Error>
fn set_enrollment_eval_source_internal( &mut self, _source: Option<EventEnrollmentMonitoredSource>, ) -> Result<(), Error>
Source§fn set_acked_transitions_internal(
&mut self,
_transition_bit: EventTransitionBits,
_acknowledged: bool,
) -> Result<(), Error>
fn set_acked_transitions_internal( &mut self, _transition_bit: EventTransitionBits, _acknowledged: bool, ) -> Result<(), Error>
Acked_Transitions bit on a received event-state
transition. Read moreSource§fn evaluate_reliability_internal(
&mut self,
) -> Result<ReliabilityEvaluation, Error>
fn evaluate_reliability_internal( &mut self, ) -> Result<ReliabilityEvaluation, Error>
Reliability. Read moreSource§fn set_reliability_internal(
&mut self,
_reliability: Reliability,
) -> Result<(), Error>
fn set_reliability_internal( &mut self, _reliability: Reliability, ) -> Result<(), Error>
Reliability value. Read moreSource§fn set_present_value_internal(
&mut self,
_value: PropertyValue,
) -> Result<(), Error>
fn set_present_value_internal( &mut self, _value: PropertyValue, ) -> Result<(), Error>
Present_Value supplied by the local application. Read moreSource§fn set_present_value_from_internal(
&mut self,
value: PropertyValue,
_origin: &CommandOrigin,
) -> Result<(), Error>
fn set_present_value_from_internal( &mut self, value: PropertyValue, _origin: &CommandOrigin, ) -> Result<(), Error>
Source§fn set_tracking_value_internal(
&mut self,
_value: PropertyValue,
) -> Result<(), Error>
fn set_tracking_value_internal( &mut self, _value: PropertyValue, ) -> Result<(), Error>
Tracking_Value the local application derived. Read moreSource§fn report_access_input_internal(
&mut self,
_input: AccessControlInput,
) -> Result<(), Error>
fn report_access_input_internal( &mut self, _input: AccessControlInput, ) -> Result<(), Error>
AccessControlInput. Read moreSource§fn set_controlled_variable_value_internal(
&mut self,
_value: PropertyValue,
) -> Result<(), Error>
fn set_controlled_variable_value_internal( &mut self, _value: PropertyValue, ) -> Result<(), Error>
Source§fn add_averaging_sample_internal(
&mut self,
_sample: Option<PropertyValue>,
) -> Result<(), Error>
fn add_averaging_sample_internal( &mut self, _sample: Option<PropertyValue>, ) -> Result<(), Error>
Source§fn audit_log_storage_internal(&self) -> Option<&dyn AuditLogStorage>
fn audit_log_storage_internal(&self) -> Option<&dyn AuditLogStorage>
Source§fn audit_log_notification_sink_internal(
&mut self,
) -> Option<&mut dyn AuditLogNotificationSink>
fn audit_log_notification_sink_internal( &mut self, ) -> Option<&mut dyn AuditLogNotificationSink>
Source§fn log_record_identities_internal(&self) -> Option<Vec<LogRecordIdentity>>
fn log_record_identities_internal(&self) -> Option<Vec<LogRecordIdentity>>
Source§fn log_buffer_internal(&self) -> Option<&dyn LogBufferRecords>
fn log_buffer_internal(&self) -> Option<&dyn LogBufferRecords>
Source§fn add_trend_record(&mut self, _record: BACnetLogRecord) -> Result<(), Error>
fn add_trend_record(&mut self, _record: BACnetLogRecord) -> Result<(), Error>
Source§fn add_trend_multiple_record(
&mut self,
_record: BACnetLogMultipleRecord,
) -> Result<(), Error>
fn add_trend_multiple_record( &mut self, _record: BACnetLogMultipleRecord, ) -> Result<(), Error>
Source§fn add_event_log_record(
&mut self,
_record: BACnetEventLogRecord,
) -> Result<(), Error>
fn add_event_log_record( &mut self, _record: BACnetEventLogRecord, ) -> Result<(), Error>
Source§impl FileStorage for FileObject
impl FileStorage for FileObject
Source§fn read_stream(&self, start: u64, count: u64) -> Result<FileStreamRead, Error>
fn read_stream(&self, start: u64, count: u64) -> Result<FileStreamRead, Error>
count octets starting start octets into the file.Source§fn write_stream(
&mut self,
start: FileWriteStart,
data: &[u8],
) -> Result<u64, Error>
fn write_stream( &mut self, start: FileWriteStart, data: &[u8], ) -> Result<u64, Error>
data at start, extending the file first when start is
past the end; intervening octets are a local matter. Returns the
octet offset the data was written at, which for
FileWriteStart::Append is the previous file size.Source§fn read_records(&self, start: u64, count: u64) -> Result<FileRecordRead, Error>
fn read_records(&self, start: u64, count: u64) -> Result<FileRecordRead, Error>
count records starting at record start.Source§fn write_records(
&mut self,
start: FileWriteStart,
records: &[Vec<u8>],
) -> Result<u64, Error>
fn write_records( &mut self, start: FileWriteStart, records: &[Vec<u8>], ) -> Result<u64, Error>
records starting at record start, replacing records in
place and extending the file first when start is past the end.
Returns the record index the data was written at.