use std::{result::Result, sync::Arc};
use crate::sync::*;
use crate::types::status_code::StatusCode;
use crate::types::*;
use crate::server::address_space::AddressSpace;
pub struct HistoryServerCapabilities {
pub access_history_data: bool,
pub access_history_events: bool,
pub max_return_data: u32,
pub max_return_events: u32,
pub insert_data: bool,
pub replace_data: bool,
pub update_data: bool,
pub delete_raw: bool,
pub delete_at_time: bool,
pub insert_event: bool,
pub replace_event: bool,
pub update_event: bool,
pub delete_event: bool,
pub insert_annotation: bool,
}
pub trait HistoricalEventProvider {
fn read_event_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: ReadEventDetails,
_timestamps_to_return: TimestampsToReturn,
_release_continuation_points: bool,
_nodes_to_read: &[HistoryReadValueId],
) -> Result<Vec<HistoryReadResult>, StatusCode> {
info!("Unimplemented read_event_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn update_event_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: UpdateEventDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented update_event_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn delete_event_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: DeleteEventDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented delete_event_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
}
pub enum HistoryRawData {
HistoryData(HistoryData),
HistoryModifiedData(HistoryModifiedData),
}
pub trait HistoricalDataProvider {
fn read_raw_modified_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: ReadRawModifiedDetails,
_timestamps_to_return: TimestampsToReturn,
_release_continuation_points: bool,
_nodes_to_read: &[HistoryReadValueId],
) -> Result<Vec<HistoryReadResult>, StatusCode> {
info!("Unimplemented read_raw_modified_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn read_processed_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: ReadProcessedDetails,
_timestamps_to_return: TimestampsToReturn,
_release_continuation_points: bool,
_nodes_to_read: &[HistoryReadValueId],
) -> Result<Vec<HistoryReadResult>, StatusCode> {
info!("Unimplemented read_processed_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn read_at_time_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: ReadAtTimeDetails,
_timestamps_to_return: TimestampsToReturn,
_release_continuation_points: bool,
_nodes_to_read: &[HistoryReadValueId],
) -> Result<Vec<HistoryReadResult>, StatusCode> {
info!("Unimplemented read_at_time_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn update_data_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: UpdateDataDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented update_data_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn update_structure_data_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: UpdateStructureDataDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented update_structure_data_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn delete_raw_modified_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: DeleteRawModifiedDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented delete_raw_modified_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
fn delete_at_time_details(
&self,
_address_space: Arc<RwLock<AddressSpace>>,
_request: DeleteAtTimeDetails,
) -> Result<Vec<StatusCode>, StatusCode> {
info!("Unimplemented delete_at_time_details");
Err(StatusCode::BadHistoryOperationUnsupported)
}
}